@@ -40,6 +40,7 @@ import kotlinconfapp.ui_components.generated.resources.search_24
40
40
import kotlinx.coroutines.launch
41
41
import org.jetbrains.compose.resources.pluralStringResource
42
42
import org.jetbrains.compose.resources.stringResource
43
+ import org.jetbrains.kotlinconf.SessionCardView
43
44
import org.jetbrains.kotlinconf.SessionId
44
45
import org.jetbrains.kotlinconf.ui.components.DayHeader
45
46
import org.jetbrains.kotlinconf.ui.components.Divider
@@ -324,35 +325,12 @@ fun ScheduleList(
324
325
modifier = Modifier .fillMaxWidth(),
325
326
beyondViewportPageCount = 20 ,
326
327
) { page ->
327
- val session = workshops[page]
328
- TalkCard (
329
- title = session.title,
330
- titleHighlights = emptyList(),
331
- bookmarked = session.isFavorite,
332
- onBookmark = { isBookmarked -> onBookmark(session.id, isBookmarked) },
333
- tags = session.tags,
334
- tagHighlights = emptyList(),
335
- speakers = session.speakerLine,
336
- speakerHighlights = emptyList(),
337
- location = session.locationLine,
338
- lightning = session.isLightning,
339
- time = session.badgeTimeLine,
340
- timeNote = session.startsInMinutes?.let { count ->
341
- pluralStringResource(Res .plurals.schedule_in_x_minutes, count, count)
342
- },
343
- status = when {
344
- session.isFinished -> TalkStatus .Past
345
- session.isLive -> TalkStatus .Now
346
- session.isUpcoming -> TalkStatus .Upcoming
347
- else -> TalkStatus .Upcoming // Shouldn't happen
348
- },
349
- onSubmitFeedback = { emotion ->
350
- onSubmitFeedback(session.id, emotion)
351
- },
352
- onSubmitFeedbackWithComment = { emotion, comment ->
353
- onSubmitFeedbackWithComment(session.id, emotion, comment)
354
- },
355
- onClick = { onSession(session.id) },
328
+ SessionCard (
329
+ session = workshops[page],
330
+ onBookmark = onBookmark,
331
+ onSubmitFeedback = onSubmitFeedback,
332
+ onSubmitFeedbackWithComment = onSubmitFeedbackWithComment,
333
+ onSession = onSession,
356
334
modifier = Modifier
357
335
.fillMaxWidth()
358
336
.wrapContentHeight(Alignment .Top )
@@ -370,35 +348,15 @@ fun ScheduleList(
370
348
}
371
349
372
350
is SessionItem -> {
373
- val session = item.value
374
- TalkCard (
375
- title = session.title,
351
+ SessionCard (
352
+ session = item.value,
376
353
titleHighlights = item.titleHighlights,
377
- bookmarked = session.isFavorite,
378
- onBookmark = { isBookmarked -> onBookmark(session.id, isBookmarked) },
379
- tags = session.tags,
380
354
tagHighlights = item.tagMatches,
381
- speakers = session.speakerLine,
382
355
speakerHighlights = item.speakerHighlights,
383
- location = session.locationLine,
384
- lightning = session.isLightning,
385
- time = session.badgeTimeLine,
386
- timeNote = session.startsInMinutes?.let { count ->
387
- pluralStringResource(Res .plurals.schedule_in_x_minutes, count, count)
388
- },
389
- status = when {
390
- session.isFinished -> TalkStatus .Past
391
- session.isLive -> TalkStatus .Now
392
- session.isUpcoming -> TalkStatus .Upcoming
393
- else -> TalkStatus .Upcoming // Shouldn't happen
394
- },
395
- onSubmitFeedback = { emotion ->
396
- onSubmitFeedback(session.id, emotion)
397
- },
398
- onSubmitFeedbackWithComment = { emotion, comment ->
399
- onSubmitFeedbackWithComment(session.id, emotion, comment)
400
- },
401
- onClick = { onSession(session.id) },
356
+ onBookmark = onBookmark,
357
+ onSubmitFeedback = onSubmitFeedback,
358
+ onSubmitFeedbackWithComment = onSubmitFeedbackWithComment,
359
+ onSession = onSession,
402
360
modifier = Modifier
403
361
.fillMaxWidth()
404
362
.padding(horizontal = 12 .dp, vertical = 8 .dp)
@@ -416,3 +374,47 @@ fun ScheduleList(
416
374
}
417
375
}
418
376
}
377
+
378
+ @Composable
379
+ private fun SessionCard (
380
+ session : SessionCardView ,
381
+ onBookmark : (SessionId , Boolean ) -> Unit ,
382
+ onSubmitFeedback : (SessionId , Emotion ? ) -> Unit ,
383
+ onSubmitFeedbackWithComment : (SessionId , Emotion , String ) -> Unit ,
384
+ onSession : (SessionId ) -> Unit ,
385
+ modifier : Modifier = Modifier ,
386
+ titleHighlights : List <IntRange > = emptyList(),
387
+ tagHighlights : List <String > = emptyList(),
388
+ speakerHighlights : List <IntRange > = emptyList(),
389
+ ) {
390
+ TalkCard (
391
+ title = session.title,
392
+ titleHighlights = titleHighlights,
393
+ bookmarked = session.isFavorite,
394
+ onBookmark = { isBookmarked -> onBookmark(session.id, isBookmarked) },
395
+ tags = session.tags,
396
+ tagHighlights = tagHighlights,
397
+ speakers = session.speakerLine,
398
+ speakerHighlights = speakerHighlights,
399
+ location = session.locationLine,
400
+ lightning = session.isLightning,
401
+ time = session.badgeTimeLine,
402
+ timeNote = session.startsInMinutes?.let { count ->
403
+ pluralStringResource(Res .plurals.schedule_in_x_minutes, count, count)
404
+ },
405
+ status = when {
406
+ session.isFinished -> TalkStatus .Past
407
+ session.isLive -> TalkStatus .Now
408
+ session.isUpcoming -> TalkStatus .Upcoming
409
+ else -> TalkStatus .Upcoming // Shouldn't happen
410
+ },
411
+ onSubmitFeedback = { emotion ->
412
+ onSubmitFeedback(session.id, emotion)
413
+ },
414
+ onSubmitFeedbackWithComment = { emotion, comment ->
415
+ onSubmitFeedbackWithComment(session.id, emotion, comment)
416
+ },
417
+ onClick = { onSession(session.id) },
418
+ modifier = modifier,
419
+ )
420
+ }
0 commit comments