diff --git a/feature/session/src/main/java/com/droidknights/app/feature/session/SessionDetailScreen.kt b/feature/session/src/main/java/com/droidknights/app/feature/session/SessionDetailScreen.kt index f26f9335..e6e5bc5f 100644 --- a/feature/session/src/main/java/com/droidknights/app/feature/session/SessionDetailScreen.kt +++ b/feature/session/src/main/java/com/droidknights/app/feature/session/SessionDetailScreen.kt @@ -160,7 +160,12 @@ private fun SessionDetailContent(session: Session) { HorizontalDivider(thickness = 1.dp, color = MaterialTheme.colorScheme.outline) Spacer(modifier = Modifier.height(40.dp)) - SessionDetailSpeaker(session.speakers.first()) + session.speakers.forEach { speaker -> + SessionDetailSpeaker(speaker) + if (speaker != session.speakers.last()) { + Spacer(modifier = Modifier.height(40.dp)) + } + } } } diff --git a/widget/src/main/kotlin/com/droidknights/app/widget/DroidKnightsWidget.kt b/widget/src/main/kotlin/com/droidknights/app/widget/DroidKnightsWidget.kt index 1762a531..ff8bf1c1 100644 --- a/widget/src/main/kotlin/com/droidknights/app/widget/DroidKnightsWidget.kt +++ b/widget/src/main/kotlin/com/droidknights/app/widget/DroidKnightsWidget.kt @@ -24,7 +24,6 @@ import androidx.glance.layout.fillMaxSize import androidx.glance.layout.height import androidx.glance.layout.padding import com.droidknights.app.core.designsystem.theme.KnightsGlanceTheme -import com.droidknights.app.core.model.Session import com.droidknights.app.widget.DroidKnightsWidgetReceiver.Companion.KEY_SESSION_IDS import com.droidknights.app.widget.di.WidgetModule import dagger.hilt.EntryPoints @@ -44,14 +43,16 @@ class DroidKnightsWidget : GlanceAppWidget() { provideContent { KnightsGlanceTheme { val state = currentState(stringSetPreferencesKey(KEY_SESSION_IDS)) - var list: List by remember(state) { mutableStateOf(listOf()) } + var widgetSessionCards: List by remember(state) { + mutableStateOf(listOf()) + } LaunchedEffect(state) { - list = arrayListOf().apply { - state?.forEach { - this.add(widgetModule.getSessionUseCase().invoke(it)) - } - } + widgetSessionCards = state?.map { + WidgetSessionCardUiState( + session = widgetModule.getSessionUseCase().invoke(it), + ) + } ?: emptyList() } Column( @@ -64,7 +65,7 @@ class DroidKnightsWidget : GlanceAppWidget() { WidgetTitle() Spacer(modifier = GlanceModifier.height(16.dp)) LazyColumn { - items(list) { + items(widgetSessionCards) { WidgetSessionCard(it) } } diff --git a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt index a8d03cac..dded90c6 100644 --- a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt +++ b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt @@ -22,18 +22,18 @@ import com.droidknights.app.core.model.Session import kotlinx.datetime.toJavaLocalDateTime @Composable -internal fun WidgetSessionCard(session: Session) { +internal fun WidgetSessionCard(uiState: WidgetSessionCardUiState) { val context = LocalContext.current Box(modifier = GlanceModifier.padding(bottom = 16.dp, end = 16.dp)) { Column( modifier = GlanceModifier.padding(16.dp).fillMaxWidth() .cornerRadius(12.dp).background(GlanceTheme.colors.tertiaryContainer).clickable( - actionStartActivityWithSessionId(context, session.id) + actionStartActivityWithSessionId(context, uiState.session.id) ) ) { Text( - session.title, + uiState.session.title, style = TextDefaults.defaultTextStyle.copy( fontSize = 16.sp, color = GlanceTheme.colors.onTertiaryContainer @@ -41,7 +41,7 @@ internal fun WidgetSessionCard(session: Session) { ) Row { Text( - session.toTimeString(), + uiState.session.toTimeString(), style = TextDefaults.defaultTextStyle.copy( fontSize = 14.sp, color = GlanceTheme.colors.onTertiaryContainer @@ -49,8 +49,7 @@ internal fun WidgetSessionCard(session: Session) { ) Spacer(modifier = GlanceModifier.width(4.dp)) Text( - // FIXME : 2명 이상 발표자 있는 case에 대해 정상 동작하도록 수정 필요 - session.speakers.first().name, + uiState.speakerLabel, style = TextDefaults.defaultTextStyle.copy( fontSize = 14.sp, color = GlanceTheme.colors.onTertiaryContainer diff --git a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt new file mode 100644 index 00000000..d941c340 --- /dev/null +++ b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt @@ -0,0 +1,11 @@ +package com.droidknights.app.widget + +import androidx.compose.runtime.Immutable +import com.droidknights.app.core.model.Session + +@Immutable +data class WidgetSessionCardUiState( + val session: Session, +) { + val speakerLabel: String by lazy { session.speakers.joinToString { it.name } } +} \ No newline at end of file