Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] :: 잔류 신청 퍼블리싱 #105

Merged
merged 13 commits into from
Jan 25, 2025
1 change: 1 addition & 0 deletions composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ kotlin {
implementation(projects.feature.application)
implementation(projects.feature.notice)
implementation(projects.feature.mypage)
implementation(projects.feature.remain)
}
jvmMain.dependencies {
implementation(compose.desktop.currentOs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import team.aliens.dms.kmp.feature.signup.navigation.navigateToSetPassword
import team.aliens.dms.kmp.feature.signup.navigation.navigateToSignUp
import team.aliens.dms.kmp.feature.signup.navigation.navigateToTerms
import team.aliens.dms.kmp.root.navigateToRoot
import tema.aliens.dms.kmp.feature.remain.navigation.navigateToRemainApplication

internal class DmsNavigator(
val navController: NavHostController,
Expand Down Expand Up @@ -70,6 +71,10 @@ internal class DmsNavigator(
navController.navigateToNoticeDetails(noticeId = noticeId)
}

fun navigateToRemainApplication() {
navController.navigateToRemainApplication()
}

fun popBackStackIfNotHome() {
if (!isSameCurrentDestination()) {
popBackStack()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ 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
import tema.aliens.dms.kmp.feature.remain.navigation.remainApplication

private const val NAVIGATION_MAIN = "main"

Expand All @@ -16,7 +17,12 @@ internal fun NavGraphBuilder.mainNavigation(
route = NAVIGATION_MAIN,
startDestination = NAVIGATION_ROOT,
) {
root(onNoticeDetailsClick = navigator::navigateToNoticeDetails)
root(
onNavigateRemainApplication = navigator::navigateToRemainApplication,
onNavigateOutingApplication = {},
onNoticeDetailsClick = navigator::navigateToNoticeDetails
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

코드 스타일 개선이 필요합니다

파이프라인 실패를 해결하기 위해 trailing comma를 추가해 주세요.

다음과 같이 수정해 주세요:

     root(
         onNavigateRemainApplication = navigator::navigateToRemainApplication,
-        onNavigateOutingApplication = {},
+        onNavigateOutingApplication = {}, 
         onNoticeDetailsClick = navigator::navigateToNoticeDetails
     )
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
onNavigateRemainApplication = navigator::navigateToRemainApplication,
onNavigateOutingApplication = {},
onNoticeDetailsClick = navigator::navigateToNoticeDetails
)
onNavigateRemainApplication = navigator::navigateToRemainApplication,
onNavigateOutingApplication = {},
onNoticeDetailsClick = navigator::navigateToNoticeDetails
)
🧰 Tools
🪛 GitHub Actions: Kotlin Multiplatform CI

[warning] 23-23: Missing trailing comma before ')'

noticeDetails()
remainApplication()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,16 @@ import androidx.navigation.compose.composable
const val NAVIGATION_ROOT = "root"

fun NavGraphBuilder.root(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
onNoticeDetailsClick: (Long) -> Unit,
) {
composable(NAVIGATION_ROOT) {
Root(onNoticeDetailClick = onNoticeDetailsClick)
Root(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
onNoticeDetailClick = onNoticeDetailsClick
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

트레일링 콤마를 추가해주세요

CI 파이프라인 경고에 따라 마지막 파라미터 뒤에 트레일링 콤마를 추가해야 합니다.

 Root(
     onNavigateRemainApplication = onNavigateRemainApplication,
     onNavigateOutingApplication = onNavigateOutingApplication,
-    onNoticeDetailClick = onNoticeDetailsClick
+    onNoticeDetailClick = onNoticeDetailsClick,
 )
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Root(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
onNoticeDetailClick = onNoticeDetailsClick
)
Root(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
onNoticeDetailClick = onNoticeDetailsClick,
)
🧰 Tools
🪛 GitHub Actions: Kotlin Multiplatform CI

[warning] 18-18: Missing trailing comma before ')'

}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,21 @@ import team.aliens.dms.kmp.ui.BottomNavigationBar

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

@Composable
private fun RootScreen(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
onNoticeDetailClick: (Long) -> Unit,
) {
val navController: NavHostController = rememberNavController()
Expand All @@ -42,7 +48,10 @@ private fun RootScreen(
.padding(bottom = it.calculateBottomPadding()),
) {
home()
application()
application(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
notices(onNoticeDetailsClick = onNoticeDetailClick)
myPage()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package team.aliens.dms.kmp.core.designsystem.float

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource
import team.aliens.dms.kmp.core.designsystem.foundation.DmsIcon
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

@Composable
fun DmsFloatingNotice(
modifier: Modifier = Modifier,
text: String,
iconResource: DrawableResource = DmsIcon.Notification,
) {
Row(
modifier = modifier
.fillMaxWidth()
.background(
color = DmsTheme.colors.primary,
shape = RoundedCornerShape(30.dp),
).padding(
horizontal = 22.dp,
vertical = 12.dp,
),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(14.dp),
) {
Icon(
painter = painterResource(iconResource),
contentDescription = null,
)
DmsText(
text = text,
style = DmsTypography.Body3,
color = DmsTheme.colors.onBackground,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package team.aliens.dms.kmp.core.designsystem.tag

import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
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

@Composable
fun DmsTag(
modifier: Modifier = Modifier,
text: String,
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 6.dp),
shape: Shape = RoundedCornerShape(24.dp),
backgroundColor: Color = DmsTheme.colors.primary,
contentColor: Color = DmsTheme.colors.inversePrimary,
border: BorderStroke? = null,
elevation: Dp = 0.dp,
) {
Surface(
modifier = modifier,
shape = shape,
color = backgroundColor,
contentColor = contentColor,
border = border,
elevation = elevation,
) {
DmsText(
modifier = Modifier.padding(contentPadding),
text = text,
style = DmsTypography.Caption,
color = DmsTheme.colors.inversePrimary,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ import team.aliens.dms.kmp.feature.application.ui.Application

const val NAVIGATION_APPLICATION = "application"

fun NavGraphBuilder.application() {
fun NavGraphBuilder.application(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
composable(NAVIGATION_APPLICATION) {
Application()
Application(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,25 @@ import team.aliens.dms.kmp.core.designsystem.button.ButtonType
import team.aliens.dms.kmp.core.designsystem.button.DmsButton
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.tag.DmsTag
import team.aliens.dms.kmp.core.designsystem.text.DmsText

@Composable
internal fun Application() {
ApplicationScreen()
internal fun Application(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
ApplicationScreen(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
}

@Composable
private fun ApplicationScreen() {
private fun ApplicationScreen(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
Column(
modifier = Modifier
.fillMaxSize()
Expand All @@ -49,14 +59,14 @@ private fun ApplicationScreen() {
title = "잔류",
description = "주말 기숙사 잔류 여부를 확인하고, 잔류 신청을 통해서 잔류 또는 귀가를 신청해 보세요.",
buttonText = "잔류 신청하기",
onButtonClick = { },
onButtonClick = onNavigateRemainApplication,
)
ApplicationCard(
title = "외출",
appliedTitle = "금요 귀가",
description = "기숙사 생활 중 밖으로 나갈 일이 있다면, 외출 신청을 통해서 외출해 보세요.",
buttonText = "외출 신청하기",
onButtonClick = { },
onButtonClick = onNavigateOutingApplication,
)
}
}
Expand Down Expand Up @@ -102,20 +112,7 @@ private fun ApplicationCard(
)
Spacer(modifier = Modifier.weight(1f))
appliedTitle?.let { text ->
DmsText(
modifier = Modifier
.background(
color = DmsTheme.colors.primary,
shape = RoundedCornerShape(24.dp),
)
.padding(
horizontal = 16.dp,
vertical = 6.dp,
),
text = text,
style = DmsTypography.Caption,
color = DmsTheme.colors.inversePrimary,
)
DmsTag(text = text)
}
}
DmsText(
Expand Down
67 changes: 67 additions & 0 deletions feature/outing/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import team.aliens.dms.kmp.buildsrc.ProjectProperties
import team.aliens.dms.kmp.buildsrc.Versions

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.ktlint)
}

kotlin {
androidTarget {
compilations.all {
compileTaskProvider.configure {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}
}
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

불필요한 공백 문자를 제거해 주세요.

파이프라인 검사에서 23번 줄에 불필요한 공백이 감지되었습니다.

-    
+
🧰 Tools
🪛 GitHub Actions: Kotlin Multiplatform CI

[warning] 23-23: Trailing spaces detected

listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64(),
).forEach {
it.binaries.framework {
baseName = "outing"
isStatic = true
}
}

sourceSets {
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
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)
}
}
}

android {
namespace = "team.aliens.dms.kmp.feature.outing"
compileSdk = ProjectProperties.COMPILE_SDK
defaultConfig {
minSdk = ProjectProperties.MIN_SDK
}
compileOptions {
sourceCompatibility = Versions.java
targetCompatibility = Versions.java
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package team.aliens.dms.kmp.feature.outing

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.runtime.Composable
import androidx.compose.ui.Modifier
import team.aliens.dms.kmp.core.designsystem.appbar.DmsTopAppBar
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme

@Composable
internal fun OutingApplication(
modifier: Modifier = Modifier
) {

}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

OutingApplication 구현이 필요합니다

OutingApplication 컴포저블이 비어있습니다. OutingApplicationScreen을 호출하도록 구현이 필요합니다.

다음과 같이 구현을 제안합니다:

 @Composable
 internal fun OutingApplication(
-    modifier: Modifier = Modifier
+    modifier: Modifier = Modifier,
 ) {
-
+    OutingApplicationScreen(
+        modifier = modifier,
+    )
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
internal fun OutingApplication(
modifier: Modifier = Modifier
) {
}
internal fun OutingApplication(
modifier: Modifier = Modifier,
) {
OutingApplicationScreen(
modifier = modifier,
)
}
🧰 Tools
🪛 detekt (1.23.7)

[warning] 15-17: This empty block of code can be removed.

(detekt.empty-blocks.EmptyFunctionBlock)

🪛 GitHub Actions: Kotlin Multiplatform CI

[warning] 14-16: Missing trailing comma, unexpected blank line before '}', and empty first line in method block


@Composable
private fun OutingApplicationScreen(
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier
.fillMaxSize()
.background(DmsTheme.colors.background),
verticalArrangement = Arrangement.Center,
) {
DmsTopAppBar(
title = "외출 신청",
onBackPressed = { },
Comment on lines +28 to +29
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

뒤로가기 동작이 구현되지 않았습니다

onBackPressed 핸들러가 비어있습니다. 사용자가 뒤로가기를 눌렀을 때의 동작을 구현해주세요.

)
}
}
Loading
Loading