From 2af35a1b67923eced67d5775eed87220af2558b5 Mon Sep 17 00:00:00 2001 From: uiel Date: Mon, 6 Jan 2025 23:16:28 +0900 Subject: [PATCH] =?UTF-8?q?feat=20::=20NoticeDetails=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dms/kmp/feature/notice/di/NoticeModule.kt | 2 + .../feature/notice/ui/NoticeDetailsScreen.kt | 83 +++++++++++++++++++ .../viewmodel/NoticeDetailsViewModel.kt | 19 +++++ 3 files changed, 104 insertions(+) create mode 100644 feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/ui/NoticeDetailsScreen.kt create mode 100644 feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/viewmodel/NoticeDetailsViewModel.kt diff --git a/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/di/NoticeModule.kt b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/di/NoticeModule.kt index da63151..da2eeae 100644 --- a/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/di/NoticeModule.kt +++ b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/di/NoticeModule.kt @@ -2,8 +2,10 @@ package team.aliens.dms.kmp.feature.notice.di import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.module +import team.aliens.dms.kmp.feature.notice.viewmodel.NoticeDetailsViewModel import team.aliens.dms.kmp.feature.notice.viewmodel.NoticesViewModel val noticeModule = module { viewModelOf(::NoticesViewModel) + viewModelOf(::NoticeDetailsViewModel) } diff --git a/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/ui/NoticeDetailsScreen.kt b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/ui/NoticeDetailsScreen.kt new file mode 100644 index 0000000..f5ebef1 --- /dev/null +++ b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/ui/NoticeDetailsScreen.kt @@ -0,0 +1,83 @@ +package team.aliens.dms.kmp.feature.notice.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import org.koin.compose.koinInject +import team.aliens.dms.kmp.core.designsystem.appbar.DmsTopAppBar +import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme +import team.aliens.dms.kmp.core.designsystem.foundation.DmsTypography +import team.aliens.dms.kmp.core.designsystem.text.DmsText +import team.aliens.dms.kmp.feature.notice.viewmodel.NoticeDetailsState +import team.aliens.dms.kmp.feature.notice.viewmodel.NoticeDetailsViewModel +import team.aliens.dms.kmp.feature.notice.viewmodel.NoticesState + +@Composable +internal fun NoticeDetails( + noticeId: Long, +) { + val viewModel: NoticeDetailsViewModel = koinInject() + val state by viewModel.state.collectAsState() + + NoticeDetailsScreen(state = state) +} + +@Composable +private fun NoticeDetailsScreen( + state: NoticeDetailsState, +) { + Column( + modifier = Modifier + .fillMaxSize() + .background(DmsTheme.colors.background), + ) { + DmsTopAppBar( + title = "안내", + onBackPressed = { }, + ) + Notice() + } + +} + +@Composable +private fun Notice( + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier + .fillMaxWidth() + .padding(24.dp), + verticalArrangement = Arrangement.spacedBy(12.dp), + ) { + DmsText( + text = "기숙사생들에 알립니다.", + style = DmsTypography.Header3, + color = DmsTheme.colors.surfaceBright, + ) + DmsText( + text = "22/21/22 12:1", + style = DmsTypography.Body1, + color = DmsTheme.colors.inverseSurface, + ) + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + thickness = 1.dp, + color = DmsTheme.colors.surface, + ) + DmsText( + text = "sdasdasdasd", + style = DmsTypography.Body2, + color = DmsTheme.colors.onTertiaryContainer, + ) + } +} diff --git a/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/viewmodel/NoticeDetailsViewModel.kt b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/viewmodel/NoticeDetailsViewModel.kt new file mode 100644 index 0000000..c7c64ae --- /dev/null +++ b/feature/notice/src/commonMain/kotlin/team/aliens/dms/kmp/feature/notice/viewmodel/NoticeDetailsViewModel.kt @@ -0,0 +1,19 @@ +package team.aliens.dms.kmp.feature.notice.viewmodel + +import team.aliens.dms.kmp.core.common.base.BaseViewModel + +internal class NoticeDetailsViewModel : BaseViewModel(NoticeDetailsState.getDefaultState()) { + +} + +internal data class NoticeDetailsState( + val s: String, +) { + companion object { + fun getDefaultState() = NoticeDetailsState( + s = "" + ) + } +} + +internal sealed interface NoticeDetailsSideEffect