diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..c936e28d3 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +*.* @Team-return/jobis-android diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3ae1eed54..c56589b3b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,7 +26,16 @@ android { buildTypes { release { - isMinifyEnabled = false + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + debug { + isMinifyEnabled = true + isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 000000000..d27b9d618 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,97 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class team.** { *; } + +# keep everything in this package from being renamed only +-keepnames class team.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class okhttp3.** { *; } + +# keep everything in this package from being renamed only +-keepnames class okhttp3.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class kotlin.** { *; } + +# keep everything in this package from being renamed only +-keepnames class kotlin.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class okio.** { *; } + +# keep everything in this package from being renamed only +-keepnames class okio.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class java.** { *; } + +# keep everything in this package from being renamed only +-keepnames class java.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class retrofit2.** { *; } + +# keep everything in this package from being renamed only +-keepnames class retrofit2.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class org.** { *; } + +# keep everything in this package from being renamed only +-keepnames class org.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class javax.** { *; } + +# keep everything in this package from being renamed only +-keepnames class javax.** { *; } +# Add *one* of the following rules to your Proguard configuration file. +# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep + +# keep everything in this package from being removed or renamed +-keep class _COROUTINE.** { *; } + +# keep everything in this package from being renamed only +-keepnames class _COROUTINE.** { *; } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/ProjectProperties.kt b/buildSrc/src/main/kotlin/ProjectProperties.kt index 96b3c58c1..c0951bf1c 100644 --- a/buildSrc/src/main/kotlin/ProjectProperties.kt +++ b/buildSrc/src/main/kotlin/ProjectProperties.kt @@ -2,8 +2,8 @@ object ProjectProperties { const val COMPILE_SDK = 34 const val MIN_SDK = 28 const val TARGET_SDK = 34 - const val VERSION_CODE = 8 - const val VERSION_NAME = "2.0.6" + const val VERSION_CODE = 9 + const val VERSION_NAME = "2.0.7" const val COMPOSE_COMPILER_EXTENSION = "1.5.6" const val JVM_TARGET = "18" } diff --git a/feature/change-password/src/main/res/values/strings.xml b/feature/change-password/src/main/res/values/strings.xml index 98b2583eb..9b2efc8e4 100644 --- a/feature/change-password/src/main/res/values/strings.xml +++ b/feature/change-password/src/main/res/values/strings.xml @@ -4,7 +4,6 @@ 새로 사용할\n비밀번호를 입력해주세요 비밀번호 계정의 비밀번호를 설정해주세요 - 8 ~ 16자, 영문자, 숫자, 특수문자 포함 비밀번호 확인 위 비밀번호를 한 번 더 입력해주세요 완료 diff --git a/feature/home/src/main/res/values/strings.xml b/feature/home/src/main/res/values/strings.xml index 529ae2f09..757d3daee 100644 --- a/feature/home/src/main/res/values/strings.xml +++ b/feature/home/src/main/res/values/strings.xml @@ -1,9 +1,7 @@ %s기 대마고\n학생들의 취업 - 현재 %s명이 취업했어용 - 다른 기업들\n탐색하기 체험형 \n현장실습 다른 기업들은 어떨까?\n다른 기업들 둘러 보러 가기 @@ -13,7 +11,6 @@ 승인요청 및 반려 상태엔 재지원 가능 현재 지원한 기업이 없어요 - 사유 보기 반려 사유 재지원 하기 diff --git a/feature/mypage/src/main/res/values/strings.xml b/feature/mypage/src/main/res/values/strings.xml index 0b30efb42..9ddb40fd7 100644 --- a/feature/mypage/src/main/res/values/strings.xml +++ b/feature/mypage/src/main/res/values/strings.xml @@ -11,7 +11,6 @@ 회원 탈퇴 버그 제보 버그 제보하기 - 버그 제보함 면접 후기를 적어주세요! 작성하러 가기 → JOBIS에서 로그아웃 하시겠어요? diff --git a/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/RecruitmentDetailsScreen.kt b/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/RecruitmentDetailsScreen.kt index 4c0407466..88b7c7ec7 100644 --- a/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/RecruitmentDetailsScreen.kt +++ b/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/RecruitmentDetailsScreen.kt @@ -427,7 +427,7 @@ private fun BottomBar( id = if (isApplicable) { R.string.apply } else { - R.string.can_do_apply_third + R.string.can_do_not_apply }, ), style = JobisTypography.SubHeadLine, @@ -457,7 +457,11 @@ private fun BottomBar( }, ), contentDescription = "bookmark", - tint = JobisTheme.colors.onPrimary, + tint = if (isBookmark) { + JobisTheme.colors.onPrimary + } else { + JobisTheme.colors.onSurfaceVariant + }, ) } } diff --git a/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/component/RecruitmentItems.kt b/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/component/RecruitmentItems.kt index 171e25ede..af1835662 100644 --- a/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/component/RecruitmentItems.kt +++ b/feature/recruitment/src/main/java/team/retum/jobis/recruitment/ui/component/RecruitmentItems.kt @@ -1,6 +1,5 @@ package team.retum.jobis.recruitment.ui.component -import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -48,11 +47,7 @@ internal fun RecruitmentItems( RecruitmentItem( recruitment = recruitment, onClick = onRecruitmentClick, - bookmarkIcon = if (bookmarked) { - JobisIcon.BookmarkOn - } else { - JobisIcon.BookmarkOff - }, + bookmarked = bookmarked, onBookmarked = { onBookmarkClick(it) bookmarked = !bookmarked @@ -69,7 +64,7 @@ internal fun RecruitmentItems( private fun RecruitmentItem( recruitment: RecruitmentsEntity.RecruitmentEntity, onClick: (recruitId: Long) -> Unit, - @DrawableRes bookmarkIcon: Int, + bookmarked: Boolean, onBookmarked: (recruitId: Long) -> Unit, ) { val whetherMilitarySupported = when (recruitment.militarySupport) { @@ -149,10 +144,20 @@ private fun RecruitmentItem( Spacer(modifier = Modifier.width(4.dp)) JobisIconButton( modifier = Modifier.padding(4.dp), - painter = painterResource(id = bookmarkIcon), + painter = painterResource( + id = if (bookmarked) { + JobisIcon.BookmarkOn + } else { + JobisIcon.BookmarkOff + }, + ), contentDescription = "bookmark", onClick = { onBookmarked(recruitment.id) }, - tint = JobisTheme.colors.onPrimary, + tint = if (bookmarked) { + JobisTheme.colors.onPrimary + } else { + JobisTheme.colors.onSurfaceVariant + }, ) } } diff --git a/feature/recruitment/src/main/res/drawable/ic_arrow_up.xml b/feature/recruitment/src/main/res/drawable/ic_arrow_up.xml deleted file mode 100644 index 51cfebe25..000000000 --- a/feature/recruitment/src/main/res/drawable/ic_arrow_up.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/feature/recruitment/src/main/res/values/strings.xml b/feature/recruitment/src/main/res/values/strings.xml index e8cdb2de1..6bbfaf80b 100644 --- a/feature/recruitment/src/main/res/values/strings.xml +++ b/feature/recruitment/src/main/res/values/strings.xml @@ -4,7 +4,6 @@ 병역특례 O 병역특례 X - 실습 수당 검색어와 관련된 모집의뢰서를 못 찾았어요 제대로 입력했는지 다시 한 번 확인해주세요 @@ -20,12 +19,11 @@ 채용절차 필수 성적 근무시간 - 정규직 전환 시 복리후생 제출 서류 기타 사항 지원하기 - 3학년만 지원할 수 있어요 + 지원할 수 없어요 주요 업무 오류가 발생했습니다 diff --git a/feature/signup/src/main/java/team/retum/signup/ui/InputEmailScreen.kt b/feature/signup/src/main/java/team/retum/signup/ui/InputEmailScreen.kt index be87e80b8..f5cf3acbe 100644 --- a/feature/signup/src/main/java/team/retum/signup/ui/InputEmailScreen.kt +++ b/feature/signup/src/main/java/team/retum/signup/ui/InputEmailScreen.kt @@ -104,6 +104,7 @@ private fun InputEmailScreen( showAuthenticationCodeDescription = { state.showAuthenticationCodeDescription }, sendAuthenticationCode = { state.sendAuthenticationCode }, remainTime = state.remainTime, + isResend = { state.isResend }, ) Spacer(modifier = Modifier.weight(1f)) JobisButton( @@ -127,6 +128,7 @@ private fun EmailInputs( showAuthenticationCodeDescription: () -> Boolean, sendAuthenticationCode: () -> Boolean, remainTime: String, + isResend: () -> Boolean, ) { JobisTextField( title = stringResource(id = R.string.email), @@ -134,7 +136,13 @@ private fun EmailInputs( hint = stringResource(id = R.string.hint_email), onValueChange = onEmailChange, showEmailHint = true, - checkDescription = stringResource(id = R.string.description_email_sent), + checkDescription = stringResource( + id = if (isResend()) { + R.string.description_email_re_send + } else { + R.string.description_email_sent + }, + ), errorDescription = stringResource(id = R.string.description_conflict_email), showDescription = showEmailDescription, descriptionType = emailDescriptionType, @@ -150,6 +158,7 @@ private fun EmailInputs( color = ButtonColor.Secondary, onClick = onAuthenticationClick, keyboardInteractionEnabled = false, + enabled = email().isNotEmpty(), ) } JobisTextField( diff --git a/feature/signup/src/main/java/team/retum/signup/viewmodel/InputEmailViewModel.kt b/feature/signup/src/main/java/team/retum/signup/viewmodel/InputEmailViewModel.kt index 09b0cf4c1..73547f19a 100644 --- a/feature/signup/src/main/java/team/retum/signup/viewmodel/InputEmailViewModel.kt +++ b/feature/signup/src/main/java/team/retum/signup/viewmodel/InputEmailViewModel.kt @@ -25,6 +25,7 @@ internal class InputEmailViewModel @Inject constructor( ) : BaseViewModel(InputEmailState.getDefaultState()) { private val timerUtil: TimerUtil = TimerUtil() + private var authenticationClickCount: Int = 0 internal fun onNextClick() { setState { state.value.copy(buttonEnabled = false) } @@ -82,6 +83,10 @@ internal class InputEmailViewModel @Inject constructor( showEmailDescription = true, ) } + if (authenticationClickCount > 0) { + setState { state.value.copy(isResend = true) } + } + authenticationClickCount++ }.onFailure { when (it) { is BadRequestException -> { @@ -134,6 +139,7 @@ internal data class InputEmailState( val buttonEnabled: Boolean, val sendAuthenticationCode: Boolean, val remainTime: String, + val isResend: Boolean, ) { companion object { fun getDefaultState() = InputEmailState( @@ -145,6 +151,7 @@ internal data class InputEmailState( buttonEnabled = false, sendAuthenticationCode = false, remainTime = "5:00", + isResend = false, ) } } diff --git a/feature/signup/src/main/res/values/strings.xml b/feature/signup/src/main/res/values/strings.xml index 2757eefd5..88e6cd35b 100644 --- a/feature/signup/src/main/res/values/strings.xml +++ b/feature/signup/src/main/res/values/strings.xml @@ -18,12 +18,13 @@ 인증코드 인증 하기 - 재전송 + 재발송 example 이메일로 온 코드를 입력해주세요 인증 메일이 발송되었어요 + 인증 메일이 재발송되었어요 이미 가입 된 이메일이에요 이메일 형식을 확인해주세요 diff --git a/feature/verify-email/src/main/res/values/strings.xml b/feature/verify-email/src/main/res/values/strings.xml index d780802bd..f9ed15431 100644 --- a/feature/verify-email/src/main/res/values/strings.xml +++ b/feature/verify-email/src/main/res/values/strings.xml @@ -2,7 +2,6 @@ 비밀번호 변경을 위해\n이메일을 인증해주세요 이메일 - 인증 하기 인증 코드 example 이메일로 온 코드를 입력해주세요