Skip to content

Commit

Permalink
[feat #100] :: 공지 퍼블리싱
Browse files Browse the repository at this point in the history
  • Loading branch information
parkuiery authored Jan 11, 2025
2 parents 1453b37 + e9b7ad0 commit 2401434
Show file tree
Hide file tree
Showing 17 changed files with 344 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import team.aliens.dms.kmp.feature.notice.navigation.navigateToNoticeDetails
import team.aliens.dms.kmp.feature.signin.navigation.navigateToSignIn
import team.aliens.dms.kmp.feature.signup.model.SignUpData
import team.aliens.dms.kmp.feature.signup.navigation.navigateToEnterEmail
Expand Down Expand Up @@ -65,6 +66,10 @@ internal class DmsNavigator(
navController.navigateToTerms(signUpData = signUpData)
}

fun navigateToNoticeDetails(noticeId: Long) {
navController.navigateToNoticeDetails(noticeId = noticeId)
}

fun popBackStackIfNotHome() {
if (!isSameCurrentDestination()) {
popBackStack()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package team.aliens.dms.kmp.di

import org.koin.dsl.module
import team.aliens.dms.kmp.feature.home.di.homeModule
import team.aliens.dms.kmp.feature.notice.di.noticeModule
import team.aliens.dms.kmp.feature.signin.di.signInModule
import team.aliens.dms.kmp.feature.signup.di.signUpModule
import team.aliens.dms.kmp.feature.splash.di.splashModule
Expand All @@ -12,5 +13,6 @@ internal val featureModule = module {
signInModule,
signUpModule,
homeModule,
noticeModule,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package team.aliens.dms.kmp.navigation.main
import androidx.navigation.NavGraphBuilder
import androidx.navigation.navigation
import team.aliens.dms.kmp.DmsNavigator
import team.aliens.dms.kmp.feature.notice.navigation.noticeDetails
import team.aliens.dms.kmp.root.NAVIGATION_ROOT
import team.aliens.dms.kmp.root.root

Expand All @@ -15,6 +16,7 @@ internal fun NavGraphBuilder.mainNavigation(
route = NAVIGATION_MAIN,
startDestination = NAVIGATION_ROOT,
) {
root()
root(onNoticeDetailsClick = navigator::navigateToNoticeDetails)
noticeDetails()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ import androidx.navigation.compose.composable

const val NAVIGATION_ROOT = "root"

fun NavGraphBuilder.root() {
fun NavGraphBuilder.root(
onNoticeDetailsClick: (Long) -> Unit,
) {
composable(NAVIGATION_ROOT) {
Root()
Root(onNoticeDetailClick = onNoticeDetailsClick)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,22 @@ import team.aliens.dms.kmp.feature.application.navigation.application
import team.aliens.dms.kmp.feature.home.navigation.NAVIGATION_HOME
import team.aliens.dms.kmp.feature.home.navigation.home
import team.aliens.dms.kmp.feature.mypage.navigation.myPage
import team.aliens.dms.kmp.feature.notice.navigation.notice
import team.aliens.dms.kmp.feature.notice.navigation.notices
import team.aliens.dms.kmp.ui.BottomNavigationBar

@Composable
internal fun Root() {
RootScreen()
internal fun Root(
onNoticeDetailClick: (Long) -> Unit,
) {
RootScreen(
onNoticeDetailClick = onNoticeDetailClick,
)
}

@Composable
private fun RootScreen() {
private fun RootScreen(
onNoticeDetailClick: (Long) -> Unit,
) {
val navController: NavHostController = rememberNavController()

Scaffold(
Expand All @@ -37,7 +43,7 @@ private fun RootScreen() {
) {
home()
application()
notice()
notices(onNoticeDetailsClick = onNoticeDetailClick)
myPage()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import team.aliens.dms.kmp.core.designsystem.foundation.DmsIcon
import team.aliens.dms.kmp.feature.application.navigation.NAVIGATION_APPLICATION
import team.aliens.dms.kmp.feature.home.navigation.NAVIGATION_HOME
import team.aliens.dms.kmp.feature.mypage.navigation.NAVIGATION_MY_PAGE
import team.aliens.dms.kmp.feature.notice.navigation.NAVIGATION_NOTICE
import team.aliens.dms.kmp.feature.notice.navigation.NAVIGATION_NOTICES

sealed class BottomMenu(
val route: String,
Expand All @@ -28,7 +28,7 @@ sealed class BottomMenu(
)

data object Notice : BottomMenu(
route = NAVIGATION_NOTICE,
route = NAVIGATION_NOTICES,
icon = DmsIcon.BreakingNews,
selectedIcon = DmsIcon.BreakingNewsFill,
title = "안내",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ fun Modifier.horizontalPadding(
value: Dp = PaddingDefaults.ExtraLarge,
): Modifier = padding(horizontal = value)

fun Modifier.verticalPadding(value: Dp): Modifier = padding(vertical = value)

fun Modifier.startPadding(value: Dp): Modifier = padding(start = value)

fun Modifier.endPadding(value: Dp): Modifier = padding(end = value)
Expand Down
7 changes: 7 additions & 0 deletions feature/notice/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ kotlin {
implementation(compose.material3)
implementation(compose.ui)
implementation(libs.navigation.compose)

implementation(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel)

implementation(projects.core.designSystem)
implementation(projects.core.common)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
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)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package team.aliens.dms.kmp.feature.notice.navigation

import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import team.aliens.dms.kmp.feature.notice.ui.NoticeDetails

const val NAVIGATION_NOTICE_DETAILS = "noticeDetails"
private const val NOTICE_ID = "notice-id"

fun NavGraphBuilder.noticeDetails() {
composable(
route = "$NAVIGATION_NOTICE_DETAILS/{$NOTICE_ID}",
arguments = listOf(
navArgument(NOTICE_ID) { type = NavType.LongType },
),
) {
val noticeId = it.arguments?.getLong(NOTICE_ID) ?: 0L
NoticeDetails(noticeId = noticeId)
}
}

fun NavController.navigateToNoticeDetails(noticeId: Long) {
navigate("$NAVIGATION_NOTICE_DETAILS/$noticeId")
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package team.aliens.dms.kmp.feature.notice.navigation

import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import team.aliens.dms.kmp.feature.notice.ui.Notices

const val NAVIGATION_NOTICES = "notices"

fun NavGraphBuilder.notices(
onNoticeDetailsClick: (Long) -> Unit,
) {
composable(NAVIGATION_NOTICES) {
Notices(
onNoticeDetailsClick = onNoticeDetailsClick,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
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

@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,
)
}
}

This file was deleted.

Loading

0 comments on commit 2401434

Please sign in to comment.