From 9306d66ff73020da2d8e8e8828b6efb592abd933 Mon Sep 17 00:00:00 2001 From: Park JongHun Date: Thu, 9 May 2024 22:38:56 +0900 Subject: [PATCH 1/4] =?UTF-8?q?#283=20-=20=EC=84=B8=EC=85=98=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=ED=99=94=EB=A9=B4=20=EB=B3=B5=EC=88=98=20=EB=B0=9C?= =?UTF-8?q?=ED=91=9C=EC=9E=90=20=ED=91=9C=EC=8B=9C=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/feature/session/SessionDetailScreen.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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)) + } + } } } From 54a10dd310f90d2de148681a08714cf3546af539 Mon Sep 17 00:00:00 2001 From: Park JongHun Date: Thu, 9 May 2024 22:51:04 +0900 Subject: [PATCH 2/4] =?UTF-8?q?#283=20-=20=EC=9C=84=EC=A0=AF=20=EC=84=B8?= =?UTF-8?q?=EC=85=98=20=EC=B9=B4=EB=93=9C=20=EB=B3=B5=EC=88=98=20=EB=B0=9C?= =?UTF-8?q?=ED=91=9C=EC=9E=90=20=ED=91=9C=EC=8B=9C=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/com/droidknights/app/widget/WidgetSessionCard.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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..583d3896 100644 --- a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt +++ b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCard.kt @@ -49,8 +49,7 @@ internal fun WidgetSessionCard(session: Session) { ) Spacer(modifier = GlanceModifier.width(4.dp)) Text( - // FIXME : 2명 이상 발표자 있는 case에 대해 정상 동작하도록 수정 필요 - session.speakers.first().name, + session.speakers.joinToString { it.name }, style = TextDefaults.defaultTextStyle.copy( fontSize = 14.sp, color = GlanceTheme.colors.onTertiaryContainer From b4490dc7918f2b82df5d8b4a8df92c6c9129751d Mon Sep 17 00:00:00 2001 From: Park JongHun Date: Wed, 29 May 2024 09:12:22 +0900 Subject: [PATCH 3/4] =?UTF-8?q?#283=20-=20fix:=20UiState=EB=A1=9C=20?= =?UTF-8?q?=EA=B0=80=EA=B3=B5=ED=95=B4=EC=84=9C=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/widget/DroidKnightsWidget.kt | 17 +++++++++-------- .../app/widget/WidgetSessionCard.kt | 10 +++++----- .../app/widget/WidgetSessionCardUiState.kt | 12 ++++++++++++ 3 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt 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 583d3896..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,7 +49,7 @@ internal fun WidgetSessionCard(session: Session) { ) Spacer(modifier = GlanceModifier.width(4.dp)) Text( - session.speakers.joinToString { it.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..bb03506f --- /dev/null +++ b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt @@ -0,0 +1,12 @@ +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 + get() = session.speakers.joinToString { it.name } +} \ No newline at end of file From 7dc29d81a342dff50dd6bcf002d6604f27d24f82 Mon Sep 17 00:00:00 2001 From: Park JongHun Date: Mon, 3 Jun 2024 19:11:07 +0900 Subject: [PATCH 4/4] =?UTF-8?q?#283=20-=20fix:=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=ED=99=94=20=EC=A7=80=EC=97=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/droidknights/app/widget/WidgetSessionCardUiState.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt index bb03506f..d941c340 100644 --- a/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt +++ b/widget/src/main/kotlin/com/droidknights/app/widget/WidgetSessionCardUiState.kt @@ -7,6 +7,5 @@ import com.droidknights.app.core.model.Session data class WidgetSessionCardUiState( val session: Session, ) { - val speakerLabel: String - get() = session.speakers.joinToString { it.name } + val speakerLabel: String by lazy { session.speakers.joinToString { it.name } } } \ No newline at end of file