@@ -48,44 +48,60 @@ export async function generateMetadata({ params }) {
48
48
} ,
49
49
} ;
50
50
}
51
+
51
52
export default async function LearnDetailsPage ( { params, searchParams } ) {
53
+ const learnType = params . type ;
54
+ const learnId = params . id ;
55
+
52
56
let datas ;
53
- if ( params . type === 'career_path' ) {
57
+
58
+ if ( learnType === 'career_path' ) {
54
59
datas = await Promise . all ( [
55
- get ( `ts/v1/learn/general/course/grow_path/${ params . id } ` , { isServer : true } ) ,
56
- get ( `ts/v1/learn/general/course/grow_path/${ params . id } /permission` , { isServer : true } ) ,
60
+ get ( `ts/v1/learn/general/course/grow_path/${ learnId } ` , { isServer : true } ) ,
61
+ get ( `ts/v1/learn/general/course/grow_path/${ learnId } /permission` , { isServer : true } ) ,
57
62
] ) ;
58
63
} else {
59
64
datas = await Promise . all ( [
60
- get ( `v1/learn/course/${ params . type === 'courses' ? 'opencourse' : 'challenges' } /${ params . id } ` , { isServer : true } ) ,
61
- get ( `ts/v1/learn/general/course/series/${ params . id } /permission` , { isServer : true } ) ,
65
+ get ( `v1/learn/course/${ learnType === 'courses' ? 'opencourse' : 'challenges' } /${ learnId } ` , { isServer : true } ) ,
66
+ get ( `ts/v1/learn/general/course/series/${ learnId } /permission` , { isServer : true } ) ,
62
67
] ) ;
63
68
}
69
+
64
70
const [ { data } , { data : permission } ] = [ ...datas ] ;
65
71
66
- return params . type !== 'career_path' ? (
72
+ let related = null ;
73
+
74
+ if ( learnType === 'challenges' && data ?. challenges_extra ?. course_challenges_extra_time_order === 0 ) {
75
+ const res = await get ( `ts/v1/learn/general/course/challenges/${ learnId } /link` , { isServer : true } ) ;
76
+
77
+ if ( res . data . link . toString ( ) !== learnId ) {
78
+ related = res . data ;
79
+ }
80
+ }
81
+
82
+ return learnType !== 'career_path' ? (
67
83
< >
68
84
< PreviewAlert searchParams = { searchParams } />
69
85
< div className = "mx-auto px-6 lg:flex max-w-[1400px] justify-center" >
70
86
< div className = "flex flex-1 border-gray-400 pt-6 lg:border-r lg:pr-14" >
71
87
< div className = "w-full" >
72
88
< div className = "flex justify-between" >
73
89
< Back params = { params } />
74
- < Share img = { data ?. base ?. course_series_img } title = { data ?. base ?. course_series_title } type = { params . type } id = { params . id } excerpt = { data ?. base ?. course_series_summary } />
90
+ < Share img = { data ?. base ?. course_series_img } title = { data ?. base ?. course_series_title } type = { learnType } id = { learnId } excerpt = { data ?. base ?. course_series_summary } />
75
91
</ div >
76
92
< Title data = { data } />
77
- { params . type === 'challenges' && < ChallengesTags data = { data } /> }
93
+ { learnType === 'challenges' && < ChallengesTags data = { data } /> }
78
94
{ data ?. base ?. course_series_summary && < Summary data = { data } /> }
79
95
{ data && < Author data = { data } /> }
80
96
{ data && < Tabs data = { data } /> }
81
97
{ data && < LearnInfo data = { data } /> }
82
- { data && data ?. courses ?. length > 0 && < Chapters type = { params . type } data = { data } id = { data ?. base ?. course_series_id } /> }
98
+ { data && data ?. courses ?. length > 0 && < Chapters type = { learnType } data = { data } id = { data ?. base ?. course_series_id } /> }
83
99
< div className = "h-6" />
84
100
{ data && data ?. speaker ?. length > 0 && < Speaker data = { data ?. speaker } /> }
85
101
< div className = "h-[72px]" />
86
102
</ div >
87
103
</ div >
88
- < LearnRightCard data = { data } type = { params . type } permission = { permission } />
104
+ < LearnRightCard data = { data } type = { learnType } permission = { permission } related = { related } />
89
105
</ div >
90
106
</ >
91
107
) : < GrowPath params = { params } data = { data } permission = { permission } /> ;
0 commit comments