Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
f29bad1
feat: 1:1 문의 화면 및 Preview 추가
koongmai Aug 12, 2026
8802f68
feat(setting): 문의 화면 텍스트 스타일 수정
koongmai Aug 22, 2026
4160bcc
Merge remote-tracking branch 'origin/develop' into feat/784
koongmai Sep 5, 2026
ea3f9d3
fix(setting): 1:1 문의 화면이 지어낸 데이터를 보여주거나 접수 성공을 가장하지 않게 한다
koongmai Sep 6, 2026
53eb3b9
Merge remote-tracking branch 'origin/develop' into handoff/784-settin…
OnlyReadOneBook Sep 6, 2026
58c6954
fix(setting): 문의 첨부 상태와 기존 리뷰 지적을 보완한다 (#784)
OnlyReadOneBook Sep 6, 2026
4d85f43
fix(ci): GMD D8 병합의 힙과 worker 예산을 제한한다 (#784)
OnlyReadOneBook Sep 6, 2026
275e6c5
fix(setting): address inquiry form review feedback
OnlyReadOneBook Sep 7, 2026
dc12775
test: update screenshot baselines in CI
github-actions[bot] Sep 7, 2026
cc83f66
refactor(setting): adapt inquiry stack to Nav3 prerequisite (#784)
OnlyReadOneBook Sep 8, 2026
0155ab9
Merge branch 'codex/1695-setting-nav3' into codex/784-setting-nav3
OnlyReadOneBook Sep 8, 2026
5c09b64
test: update screenshot baselines in CI
github-actions[bot] Sep 8, 2026
c2894f8
fix(setting): 문의 첨부 선택기를 사진 선택기로 바꾸고 persistable 권한을 걷어낸다 (#784)
OnlyReadOneBook Sep 11, 2026
828e1fd
fix(setting): 문의 첨부를 프로세스 사망 복원에서 제외한다 (#784)
OnlyReadOneBook Sep 11, 2026
988d0e8
Merge remote-tracking branch 'origin/codex/1695-setting-nav3' into ha…
OnlyReadOneBook Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions .github/workflows/android-managed-device.yml
Original file line number Diff line number Diff line change
Expand Up @@ -614,12 +614,9 @@ jobs:
run_gradle() { # $1: selector 목록(빈 문자열 = 필터 없음), $2: 로그 라벨
local selectors="$1" label="$2" remaining rc
local test_arguments=() jvm_arguments=()
# #1824 merge-group API34: cold APK packaging exhausted the 2Gi heap
# in ApkFlinger. The 15Gi runner still had 7Gi available, so reserve
# 4Gi for this lane only and preserve the existing UTF-8 JVM flag.
if [[ "$DEVICE_TASK" == "pixel2Api34DebugAndroidTest" ]]; then
jvm_arguments+=("-Dorg.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8")
fi
# Cold D8/APK merging exceeded the default 2 GiB heap (#784, #1824).
# Keep the budget local to GMD and leave room for Kotlin and the emulator.
jvm_arguments+=("-Dorg.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8")
if [[ -n "$selectors" ]]; then
test_arguments+=("-Pandroid.testInstrumentationRunnerArguments.class=$selectors")
fi
Expand All @@ -633,7 +630,7 @@ jobs:
fi
set +e
timeout --signal=TERM --kill-after=30s "${remaining}s" \
./gradlew "$DEVICE_TASK" "${test_arguments[@]}" "${jvm_arguments[@]}" \
./gradlew "$DEVICE_TASK" "${test_arguments[@]}" "${jvm_arguments[@]}" --max-workers=2 \
-Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect \
--console=plain \
--stacktrace >> "$gradle_log" 2>&1
Expand Down
8 changes: 8 additions & 0 deletions core/ui/src/main/kotlin/com/afternote/core/ui/theme/Color.kt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ internal fun lightColors() =
accent10 = Accent10,
error = Error,
requiredMark = RequiredMark,
successContainer = Color(0xFFDCEDE3),
isLightMode = true,
)

Expand Down Expand Up @@ -127,6 +128,7 @@ internal fun darkColors() =
accent10 = Accent10,
error = Error,
requiredMark = RequiredMark,
successContainer = Color(0xFF284536),
isLightMode = false,
)

Expand Down Expand Up @@ -161,6 +163,7 @@ class AfternoteColors(
accent10: Color,
error: Color,
requiredMark: Color,
successContainer: Color,
isLightMode: Boolean,
) {
var white by mutableStateOf(white)
Expand Down Expand Up @@ -213,6 +216,8 @@ class AfternoteColors(
private set
var requiredMark by mutableStateOf(requiredMark)
private set
var successContainer by mutableStateOf(successContainer)
private set
var isLightMode by mutableStateOf(isLightMode)
private set

Expand Down Expand Up @@ -242,6 +247,7 @@ class AfternoteColors(
accent10: Color = this.accent10,
error: Color = this.error,
requiredMark: Color = this.requiredMark,
successContainer: Color = this.successContainer,
isLightMode: Boolean = this.isLightMode,
) = AfternoteColors(
white = white,
Expand Down Expand Up @@ -269,6 +275,7 @@ class AfternoteColors(
accent10 = accent10,
error = error,
requiredMark = requiredMark,
successContainer = successContainer,
isLightMode = isLightMode,
)

Expand Down Expand Up @@ -298,6 +305,7 @@ class AfternoteColors(
this.accent10 = other.accent10
this.error = other.error
this.requiredMark = other.requiredMark
this.successContainer = other.successContainer
this.isLightMode = other.isLightMode
}
}
1 change: 1 addition & 0 deletions feature/setting/presentation/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies {
implementation(projects.core.ui)
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.androidx.compose.runtime)
implementation(libs.coil.compose)
implementation(libs.kakao.sdk.auth)
implementation(libs.kakao.sdk.user)
implementation(libs.androidx.biometric)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.afternote.feature.setting.presentation.model

internal enum class InquiryStatus { RECEIVED, ANSWERED }

internal data class InquiryUiModel(
val id: Long,
val status: InquiryStatus,
val date: String,
val title: String,
val content: String,
val answer: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,16 @@ internal class SettingLocalNavActions(
override fun onNavigateToNotice() {
backStack.add(SettingRoute.NoticeRoute)
}

override fun onNavigateToInquiry() {
backStack.add(SettingRoute.InquiryListRoute)
}

override fun onNavigateToInquiryDetail(inquiryId: Long) {
backStack.add(SettingRoute.InquiryDetailRoute(inquiryId))
}

override fun onNavigateToInquiryWrite() {
backStack.add(SettingRoute.InquiryWriteRoute)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,10 @@ internal interface SettingNavActions {
fun onNavigateToAppLock()

fun onNavigateToNotice()

fun onNavigateToInquiry()

fun onNavigateToInquiryDetail(inquiryId: Long)

fun onNavigateToInquiryWrite()
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ import com.afternote.feature.setting.presentation.component.PinSetupStep
import com.afternote.feature.setting.presentation.screen.AppLockSetupScreen
import com.afternote.feature.setting.presentation.screen.ConnectedAccountsScreen
import com.afternote.feature.setting.presentation.screen.DeliveryConditionScreen
import com.afternote.feature.setting.presentation.screen.InquiryDetailScreen
import com.afternote.feature.setting.presentation.screen.InquiryListScreen
import com.afternote.feature.setting.presentation.screen.InquiryWriteScreen
import com.afternote.feature.setting.presentation.screen.NoticeListScreen
import com.afternote.feature.setting.presentation.screen.NotificationSettingScreen
import com.afternote.feature.setting.presentation.screen.PassKeyListScreen
Expand Down Expand Up @@ -83,7 +86,7 @@ public fun SettingNavHost(
onPasskeyClick = actions::onNavigateToPasskey,
onAppLockClick = actions::onNavigateToAppLock,
onFaqClick = {},
onInquiryClick = {},
onInquiryClick = actions::onNavigateToInquiry,
onNoticeClick = actions::onNavigateToNotice,
onTermsClick = {},
onPrivacyClick = {},
Expand Down Expand Up @@ -233,6 +236,25 @@ public fun SettingNavHost(
onBackClick = actions::popBack,
)
}

entry<SettingRoute.InquiryListRoute> {
InquiryListScreen(
inquiries = emptyList(),
onBackClick = actions::popBack,
onInquiryClick = actions::onNavigateToInquiryDetail,
onNewInquiryClick = actions::onNavigateToInquiryWrite,
)
}

entry<SettingRoute.InquiryDetailRoute> {
// TODO(Afternote-BE#246): use the entry key inquiryId when the lookup contract exists.
// There is no production source yet; preserve the unavailable state.
InquiryDetailScreen(inquiry = null, onBackClick = actions::popBack)
}

entry<SettingRoute.InquiryWriteRoute> {
InquiryWriteScreen(onBackClick = actions::popBack)
}
},
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,15 @@ internal sealed interface SettingRoute : NavKey {

@Serializable
data object NoticeRoute : SettingRoute

@Serializable
data object InquiryListRoute : SettingRoute

@Serializable
data class InquiryDetailRoute(
val inquiryId: Long,
) : SettingRoute

@Serializable
data object InquiryWriteRoute : SettingRoute
}
Loading
Loading