Skip to content

Commit

Permalink
[fix/#841] change List to ImmutableList
Browse files Browse the repository at this point in the history
  • Loading branch information
leeeyubin committed Sep 25, 2024
1 parent 1443f05 commit 614f92a
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 70 deletions.
1 change: 1 addition & 0 deletions feature/mypage/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ dependencies {
implementation(platform(libs.firebase))
implementation(libs.bundles.firebase)
implementation(libs.process.phoenix)
implementation(libs.kotlin.collections.immutable)
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ import org.sopt.official.designsystem.Gray400
import org.sopt.official.designsystem.Gray900
import org.sopt.official.designsystem.SoptTheme
import org.sopt.official.feature.mypage.model.MyPageUiModel
import kotlinx.collections.immutable.ImmutableList

@Composable
fun MyPageSection(items: List<MyPageUiModel>) {
fun MyPageSection(items: ImmutableList<MyPageUiModel>) {
Column(
modifier = Modifier
.padding(horizontal = 20.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,16 @@ import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.flowWithLifecycle
import com.jakewharton.processphoenix.ProcessPhoenix
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.collections.immutable.persistentListOf
import org.sopt.official.auth.model.UserActiveState
import org.sopt.official.common.navigator.NavigatorProvider
import org.sopt.official.common.util.serializableExtra
Expand Down Expand Up @@ -92,70 +93,80 @@ class MyPageActivity : AppCompatActivity() {
val dialogState by viewModel.dialogState.collectAsStateWithLifecycle()
val scrollState = rememberScrollState()

val serviceSectionItems = listOf(
MyPageUiModel.Header(title = stringResource(R.string.mypage_service_info_title)),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_private_info),
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.NOTICE_PRIVATE_INFO))) }
),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_service_rule),
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.NOTICE_SERVICE_RULE))) }
),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_send_opinion),
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.OPINION_KAKAO_CHAT))) }
val serviceSectionItems = remember {
persistentListOf(
MyPageUiModel.Header(title = "서비스 이용 방침"),
MyPageUiModel.MyPageItem(
title = "개인정보 처리 방침",
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.NOTICE_PRIVATE_INFO))) }
),
MyPageUiModel.MyPageItem(
title = "서비스 이용약관",
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.NOTICE_SERVICE_RULE))) }
),
MyPageUiModel.MyPageItem(
title = "의견 보내기",
onItemClick = { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(WebUrlConstant.OPINION_KAKAO_CHAT))) }
)
)
)
}

val notificationSectionItems = listOf(
MyPageUiModel.Header(title = stringResource(R.string.mypage_notification_setting)),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_notification),
onItemClick = {
Intent().apply {
action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
startActivity(this)
val notificationSectionItems = remember {
persistentListOf(
MyPageUiModel.Header(title = "알림 설정"),
MyPageUiModel.MyPageItem(
title = "알림 설정하기",
onItemClick = {
Intent().apply {
action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
startActivity(this)
}
}
}
)
)
)
}

val soptampSectionItems = listOf(
MyPageUiModel.Header(title = stringResource(R.string.mypage_soptamp_setting_title)),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_adjust_sentence),
onItemClick = { startActivity(AdjustSentenceActivity.getIntent(context)) }
),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_reset_stamp),
onItemClick = { viewModel.showDialogState(MyPageAction.CLEAR_SOPTAMP) }
val soptampSectionItems = remember {
persistentListOf(
MyPageUiModel.Header(title = "솝탬프 설정"),
MyPageUiModel.MyPageItem(
title = "한 마디 편집",
onItemClick = { startActivity(AdjustSentenceActivity.getIntent(context)) }
),
MyPageUiModel.MyPageItem(
title = "스탬프 초기화",
onItemClick = { viewModel.showDialogState(MyPageAction.CLEAR_SOPTAMP) }
)
)
)
}

val etcSectionItems = listOf(
MyPageUiModel.Header(title = stringResource(R.string.mypage_etc_title)),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_log_out),
onItemClick = { viewModel.showDialogState(MyPageAction.LOGOUT) }
),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_sign_out),
onItemClick = { startActivity(SignOutActivity.getIntent(context)) }
val etcSectionItems = remember {
persistentListOf(
MyPageUiModel.Header(title = "기타"),
MyPageUiModel.MyPageItem(
title = "로그아웃",
onItemClick = { viewModel.showDialogState(MyPageAction.LOGOUT) }
),
MyPageUiModel.MyPageItem(
title = "탈퇴하기",
onItemClick = { startActivity(SignOutActivity.getIntent(context)) }
)
)
)
}

val etcLoginSectionItems = listOf(
MyPageUiModel.Header(title = stringResource(R.string.mypage_etc_title)),
MyPageUiModel.MyPageItem(
title = stringResource(R.string.mypage_log_in),
onItemClick = {
setResult(ResultCode.LOG_IN.ordinal)
onBackPressedDispatcher.onBackPressed()
}
val etcLoginSectionItems = remember {
persistentListOf(
MyPageUiModel.Header(title = "기타"),
MyPageUiModel.MyPageItem(
title = "로그인",
onItemClick = {
setResult(ResultCode.LOG_IN.ordinal)
onBackPressedDispatcher.onBackPressed()
}
)
)
)
}

LaunchedEffect(Unit) {
args?.userActiveState?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
Expand Down Expand Up @@ -105,7 +106,9 @@ class SignOutActivity : AppCompatActivity() {
Spacer(modifier = Modifier.weight(1f))
MyPageButton(
paddingVertical = 16.dp,
modifier = Modifier.padding(20.dp),
modifier = Modifier
.padding(20.dp)
.fillMaxWidth(),
onClick = { viewModel.signOut() },
) {
Text(
Expand Down
13 changes: 0 additions & 13 deletions feature/mypage/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,7 @@
<resources>
<!-- mypage -->
<string name="toolbar_mypage">마이페이지</string>
<string name="mypage_service_info_title">서비스 이용 방침</string>
<string name="mypage_private_info">개인정보 처리 방침</string>
<string name="mypage_service_rule">서비스 이용약관</string>
<string name="mypage_send_opinion">의견 보내기</string>
<string name="mypage_notification_setting">알림 설정</string>
<string name="mypage_notification">알림 설정하기</string>
<string name="mypage_soptamp_setting_title">솝탬프 설정</string>
<string name="mypage_adjust_sentence">한 마디 편집</string>
<string name="mypage_change_nickname">닉네임 변경</string>
<string name="mypage_reset_stamp">스탬프 초기화</string>
<string name="mypage_etc_title">기타</string>
<string name="mypage_log_out">로그아웃</string>
<string name="mypage_sign_out">탈퇴하기</string>
<string name="mypage_log_in">로그인</string>
<string name="mypage_alert_soptamp_reset_title">미션을 초기화 하실건가요?</string>
<string name="mypage_alert_soptamp_reset_subtitle">사진, 메모가 삭제되고\n전체 미션이 미완료상태로 초기화됩니다.</string>
<string name="mypage_alert_soptamp_reset_positive">초기화</string>
Expand Down

0 comments on commit 614f92a

Please sign in to comment.