diff --git a/.editorconfig b/.editorconfig index 93f6232d..42157346 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,6 +2,13 @@ root = true [*] charset = utf-8 -max_line_length = 300 +end_of_line = lf +indent_size = 4 +indent_style = space +max_line_length = 150 insert_final_newline = true trim_trailing_whitespace = true + +[*.{kt,kts}] +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true \ No newline at end of file diff --git a/.github/workflows/android_cd.yml b/.github/workflows/android_cd.yml new file mode 100644 index 00000000..1ee2e5aa --- /dev/null +++ b/.github/workflows/android_cd.yml @@ -0,0 +1,95 @@ +name: Clody CD + +on: + pull_request: + branches: [ staging ] + +jobs: + cd: + name: Continuous Deployment + runs-on: ubuntu-latest + + steps: + # Checkout + - name: Checkout code + uses: actions/checkout@v4 + + # Gradle Cache + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + # JDK + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'corretto' + cache: gradle + + # Android SDK + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + # gradlew 권한 + - name: Change gradlew permissions + run: chmod +x gradlew + + # google-services.json + - name: Decode google-services.json + env: + FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }} + run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json + + # local.properties + - name: Generate local.properties + env: + BASE_URL: ${{ secrets.BASE_URL }} + KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }} + AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }} + GOOGLE_ADMOB_APP_ID: ${{ secrets.GOOGLE_ADMOB_APP_ID }} + GOOGLE_ADMOB_UNIT_ID: ${{ secrets.GOOGLE_ADMOB_UNIT_ID }} + run: | + echo "baseUrl=$BASE_URL" >> local.properties + echo "kakao.api.key=$KAKAO_API_KEY" >> local.properties + echo "amplitude.api.key=$AMPLITUDE_API_KEY" >> local.properties + echo "googleAdmob.app.id=$GOOGLE_ADMOB_APP_ID" >> local.properties + echo "googleAdmob.unit.id=$GOOGLE_ADMOB_UNIT_ID" >> local.properties + + # Release AAB 빌드 + - name: Build Release AAB + run: ./gradlew bundleRelease --stacktrace + + # Firebase 인증 + - name: Set up Firebase Service Account Credentials + env: + GOOGLE_APPLICATION_CREDENTIALS_JSON: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_JSON }} + run: | + echo "$GOOGLE_APPLICATION_CREDENTIALS_JSON" | base64 --decode > $HOME/firebase-credentials.json + export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json + + # Firebase App Distribution + - name: Upload AAB to Firebase App Distribution + env: + FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }} + run: | + firebase appdistribution:distribute app/build/outputs/bundle/release/app-release.aab \ + --app "$FIREBASE_APP_ID" \ + --release-notes "🍀 새로운 테스트 버전이 업로드되었습니다!" \ + --groups "clody-tester-group" + + # Discord Notification + - name: Notify Discord + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + run: | + curl -H "Content-Type: application/json" \ + -X POST \ + -d '{"content": "🍀 새로운 테스트 버전이 업로드되었습니다!"}' \ + $DISCORD_WEBHOOK_URL diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml new file mode 100644 index 00000000..e6dd03df --- /dev/null +++ b/.github/workflows/android_ci.yml @@ -0,0 +1,93 @@ +name: Clody CI + +# 언제 동작할지 설정 +on: + pull_request: + branches: [ develop ] + paths: + - 'app/**' # app 모듈 내부 변경 + - 'build.gradle' # 최상위 build.gradle + - '**/*.kt' # 모든 Kotlin 파일 변경 + +# 공통 작업 디렉토리 설정 +defaults: + run: + working-directory: ./ + +# Job 정의 +jobs: + build: + runs-on: ubuntu-latest # Ubuntu 최신 이미지에서 실행 + + steps: + # Gradle 캐싱 (속도 향상) + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties', '**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + # Android SDK 캐싱 + - name: Cache Android SDK + uses: actions/cache@v4 + with: + path: ~/.android + key: ${{ runner.os }}-android + + # GitHub Repo 코드 Checkout + - name: Checkout the code + uses: actions/checkout@v4 + + # JDK 17 설치 (Android 공식 권장 버전) + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '17' + + # Android SDK 설치 + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + # gradlew 실행 권한 부여 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + # Firebase google-services.json 복호화 및 설정 + - name: Decode google-services.json + env: + FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }} # base64로 암호화된 json 사용 + run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json + + # local.properties 생성 + - name: Generate local.properties + env: + BASE_URL: ${{ secrets.BASE_URL }} + KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }} + AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }} + GOOGLE_ADMOB_APP_ID: ${{ secrets.GOOGLE_ADMOB_APP_ID }} + GOOGLE_ADMOB_UNIT_ID: ${{ secrets.GOOGLE_ADMOB_UNIT_ID }} + run: | + echo "baseUrl=$BASE_URL" >> local.properties + echo "kakao.api.key=$KAKAO_API_KEY" >> local.properties + echo "amplitude.api.key=$AMPLITUDE_API_KEY" >> local.properties + echo "googleAdmob.app.id=$GOOGLE_ADMOB_APP_ID" >> local.properties + echo "googleAdmob.unit.id=$GOOGLE_ADMOB_UNIT_ID" >> local.properties + + # ------- Build & Lint ------- + + # Ktlint 코드 스타일 검사 + - name: Run ktlintCheck + run: ./gradlew --no-daemon --configuration-cache ktlintCheck + + # Android Lint 검사 + - name: Run Android Lint + run: ./gradlew --no-daemon --configuration-cache lint + + # Debug 빌드 생성 (CI Build 성공 여부 확인) + - name: Assemble Debug Build + run: ./gradlew --no-daemon --configuration-cache assembleDebug diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a104b6d2..db618159 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,6 +14,7 @@ plugins { alias(libs.plugins.kotlin.serialization) alias(libs.plugins.google.services) alias(libs.plugins.firebase.crashlytics.plugin) + alias(libs.plugins.firebase.app.distribution) } android { @@ -51,7 +52,7 @@ android { buildConfigField("String", "CLODY_BASE_URL", properties["clody.base.url"].toString()) proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } diff --git a/app/src/androidTest/java/com/sopt/clody/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/sopt/clody/ExampleInstrumentedTest.kt index bb77c99f..3fc22a27 100644 --- a/app/src/androidTest/java/com/sopt/clody/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/sopt/clody/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package com.sopt.clody -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * @@ -21,4 +19,4 @@ class ExampleInstrumentedTest { val appContext = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.sopt.clody", appContext.packageName) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/clody/data/ad/RewardAdShowerImpl.kt b/app/src/main/java/com/sopt/clody/data/ad/RewardAdShowerImpl.kt index ce6ede74..747ddfe1 100644 --- a/app/src/main/java/com/sopt/clody/data/ad/RewardAdShowerImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/ad/RewardAdShowerImpl.kt @@ -8,7 +8,7 @@ import com.sopt.clody.data.remote.datasource.AdRemoteDataSource import javax.inject.Inject class RewardAdShowerImpl @Inject constructor( - private val adRemoteDataSource: AdRemoteDataSource + private val adRemoteDataSource: AdRemoteDataSource, ) : RewardAdShower { override fun showAd(activity: Activity, onAdRewarded: () -> Unit, onAdDismissed: () -> Unit) { val rewardedAd = adRemoteDataSource.getRewardedAd() diff --git a/app/src/main/java/com/sopt/clody/data/datastore/TokenDataStoreImpl.kt b/app/src/main/java/com/sopt/clody/data/datastore/TokenDataStoreImpl.kt index f7ff1a26..c71dda3f 100644 --- a/app/src/main/java/com/sopt/clody/data/datastore/TokenDataStoreImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/datastore/TokenDataStoreImpl.kt @@ -4,7 +4,7 @@ import android.content.SharedPreferences import javax.inject.Inject class TokenDataStoreImpl @Inject constructor( - private val sharedPreferences: SharedPreferences + private val sharedPreferences: SharedPreferences, ) : TokenDataStore { override var accessToken: String get() = sharedPreferences.getString(ACCESS_TOKEN, "") ?: "" diff --git a/app/src/main/java/com/sopt/clody/data/local/datasource/LocalDataSource.kt b/app/src/main/java/com/sopt/clody/data/local/datasource/LocalDataSource.kt index 4dbfb11e..f95d5cbf 100644 --- a/app/src/main/java/com/sopt/clody/data/local/datasource/LocalDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/local/datasource/LocalDataSource.kt @@ -1,6 +1,5 @@ package com.sopt.clody.data.local.datasource - interface LocalDataSource { fun getLocalData(): String } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/AccountManagementService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/AccountManagementService.kt index 1d142b18..2d42eb5c 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/AccountManagementService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/AccountManagementService.kt @@ -1,11 +1,11 @@ package com.sopt.clody.data.remote.api +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.ModifyNicknameRequestDto import com.sopt.clody.data.remote.dto.response.ModifyNicknameResponseDto import com.sopt.clody.data.remote.dto.response.UserInfoResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse -import retrofit2.http.DELETE import retrofit2.http.Body +import retrofit2.http.DELETE import retrofit2.http.GET import retrofit2.http.PATCH @@ -15,9 +15,9 @@ interface AccountManagementService { @PATCH("api/v1/user/nickname") suspend fun modifyNickname( - @Body body: ModifyNicknameRequestDto - ) : ApiResponse + @Body body: ModifyNicknameRequestDto, + ): ApiResponse @DELETE("api/v1/user/revoke") - suspend fun revokeAccount() : ApiResponse + suspend fun revokeAccount(): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/AdService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/AdService.kt index 3cf4feba..b736e7bd 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/AdService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/AdService.kt @@ -9,11 +9,11 @@ import retrofit2.http.POST interface AdService { @POST("api/v1/reply/ad/start") suspend fun startAd( - @Body adRequestDto: AdRequestDto - ) : NullableApiResponse + @Body adRequestDto: AdRequestDto, + ): NullableApiResponse @PATCH("api/v1/reply/ad/end") suspend fun endAd( - @Body adRequestDto: AdRequestDto - ) : NullableApiResponse + @Body adRequestDto: AdRequestDto, + ): NullableApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/AuthService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/AuthService.kt index 68860c62..af1ae417 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/AuthService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/AuthService.kt @@ -1,10 +1,10 @@ package com.sopt.clody.data.remote.api +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.LoginRequestDto -import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.request.SignUpRequestDto +import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.response.SignUpResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse import retrofit2.http.Body import retrofit2.http.Header import retrofit2.http.POST @@ -13,12 +13,12 @@ interface AuthService { @POST("api/v1/auth/signin") suspend fun postLogin( @Header("Authorization") accessToken: String, - @Body body: LoginRequestDto + @Body body: LoginRequestDto, ): ApiResponse @POST("api/v1/auth/signup") suspend fun signUp( @Header("Authorization") authorization: String, - @Body signUpRequestDto: SignUpRequestDto + @Body signUpRequestDto: SignUpRequestDto, ): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/DiaryService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/DiaryService.kt index 9b5ce6a5..8a702f80 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/DiaryService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/DiaryService.kt @@ -17,34 +17,34 @@ import retrofit2.http.Query interface DiaryService { @POST("api/v1/diary") suspend fun writeDiary( - @Body writeDiaryRequestDto: WriteDiaryRequestDto + @Body writeDiaryRequestDto: WriteDiaryRequestDto, ): ApiResponse @DELETE("api/v1/diary") suspend fun deleteDailyDiary( @Query("year") year: Int, @Query("month") month: Int, - @Query("date") date: Int + @Query("date") date: Int, ): ApiResponse @GET("api/v1/diary") suspend fun getDailyDiariesData( @Query("year") year: Int, @Query("month") month: Int, - @Query("date") date: Int + @Query("date") date: Int, ): ApiResponse @GET("api/v1/diary/time") suspend fun getDiaryTime( @Query("year") year: Int, @Query("month") month: Int, - @Query("date") date: Int + @Query("date") date: Int, ): ApiResponse @GET("api/v1/calendar") suspend fun getMonthlyCalendarData( @Query("year") year: Int, - @Query("month") month: Int + @Query("month") month: Int, ): ApiResponse @GET("api/v1/calendar/list") @@ -57,6 +57,6 @@ interface DiaryService { suspend fun getReplyDiary( @Query("year") year: Int, @Query("month") month: Int, - @Query("date") date: Int + @Query("date") date: Int, ): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/NotificationService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/NotificationService.kt index 900cf49e..39bcfda0 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/NotificationService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/NotificationService.kt @@ -14,6 +14,6 @@ interface NotificationService { @POST("api/v1/alarm") suspend fun sendNotification( - @Body sendNotificationRequestDto: SendNotificationRequestDto + @Body sendNotificationRequestDto: SendNotificationRequestDto, ): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/api/TokenReissueService.kt b/app/src/main/java/com/sopt/clody/data/remote/api/TokenReissueService.kt index afb2d36c..a0fe490e 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/api/TokenReissueService.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/api/TokenReissueService.kt @@ -1,13 +1,13 @@ package com.sopt.clody.data.remote.api -import com.sopt.clody.data.remote.dto.response.TokenReissueResponseDto import com.sopt.clody.data.remote.dto.base.ApiResponse +import com.sopt.clody.data.remote.dto.response.TokenReissueResponseDto import retrofit2.http.GET import retrofit2.http.Header interface TokenReissueService { @GET("api/v1/auth/reissue") suspend fun reissue( - @Header("Authorization") refreshToken: String + @Header("Authorization") refreshToken: String, ): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasource/AccountManagementDataSource.kt b/app/src/main/java/com/sopt/clody/data/remote/datasource/AccountManagementDataSource.kt index 2c347e91..01225955 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasource/AccountManagementDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasource/AccountManagementDataSource.kt @@ -1,12 +1,12 @@ package com.sopt.clody.data.remote.datasource +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.ModifyNicknameRequestDto import com.sopt.clody.data.remote.dto.response.ModifyNicknameResponseDto import com.sopt.clody.data.remote.dto.response.UserInfoResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse interface AccountManagementDataSource { suspend fun getUserInfo(): ApiResponse - suspend fun modifyNickname(modifyNicknameRequestDto: ModifyNicknameRequestDto) : ApiResponse + suspend fun modifyNickname(modifyNicknameRequestDto: ModifyNicknameRequestDto): ApiResponse suspend fun revokeAccount(): ApiResponse } diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasource/AdRemoteDataSource.kt b/app/src/main/java/com/sopt/clody/data/remote/datasource/AdRemoteDataSource.kt index 3e59cea4..f5adc5c7 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasource/AdRemoteDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasource/AdRemoteDataSource.kt @@ -17,7 +17,7 @@ import kotlin.coroutines.suspendCoroutine @Singleton class AdRemoteDataSource @Inject constructor( private val adService: AdService, - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, ) { private var rewardedAd: RewardedAd? = null private val adUnitId = BuildConfig.GOOGLE_ADMOB_UNIT_ID @@ -50,7 +50,7 @@ class AdRemoteDataSource @Inject constructor( override fun onAdFailedToLoad(error: LoadAdError) { continuation.resume(Result.failure(Exception(error.message))) } - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasource/AuthDataSource.kt b/app/src/main/java/com/sopt/clody/data/remote/datasource/AuthDataSource.kt index 42fc9462..e4dfe411 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasource/AuthDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasource/AuthDataSource.kt @@ -1,13 +1,12 @@ package com.sopt.clody.data.remote.datasource +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.LoginRequestDto -import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.request.SignUpRequestDto +import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.response.SignUpResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse interface AuthDataSource { suspend fun signIn(authorization: String, requestSignInDto: LoginRequestDto): ApiResponse suspend fun signUp(authorization: String, requestSignUpDto: SignUpRequestDto): ApiResponse - } diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasource/DiaryRemoteDataSource.kt b/app/src/main/java/com/sopt/clody/data/remote/datasource/DiaryRemoteDataSource.kt index 9d61f72a..19dae1a7 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasource/DiaryRemoteDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasource/DiaryRemoteDataSource.kt @@ -11,7 +11,7 @@ import com.sopt.clody.data.remote.dto.response.WriteDiaryResponseDto interface DiaryRemoteDataSource { suspend fun writeDiary(date: String, content: List): ApiResponse suspend fun deleteDailyDiary(year: Int, month: Int, date: Int): ApiResponse - suspend fun getDailyDiariesData(year: Int, month: Int, date:Int): ApiResponse + suspend fun getDailyDiariesData(year: Int, month: Int, date: Int): ApiResponse suspend fun getDiaryTime(year: Int, month: Int, date: Int): ApiResponse suspend fun getMonthlyCalendarData(year: Int, month: Int): ApiResponse suspend fun getMonthlyDiary(year: Int, month: Int): ApiResponse diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasource/TokenReissueDataSource.kt b/app/src/main/java/com/sopt/clody/data/remote/datasource/TokenReissueDataSource.kt index ab45a480..0568e2d0 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasource/TokenReissueDataSource.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasource/TokenReissueDataSource.kt @@ -1,7 +1,7 @@ package com.sopt.clody.data.remote.datasource -import com.sopt.clody.data.remote.dto.response.TokenReissueResponseDto import com.sopt.clody.data.remote.dto.base.ApiResponse +import com.sopt.clody.data.remote.dto.response.TokenReissueResponseDto interface TokenReissueDataSource { suspend fun getReissueToken(authorization: String): ApiResponse diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AccountManagementDataSourceImpl.kt b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AccountManagementDataSourceImpl.kt index d4d1d278..4ba69943 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AccountManagementDataSourceImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AccountManagementDataSourceImpl.kt @@ -2,10 +2,10 @@ package com.sopt.clody.data.remote.datasourceimpl import com.sopt.clody.data.remote.api.AccountManagementService import com.sopt.clody.data.remote.datasource.AccountManagementDataSource +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.ModifyNicknameRequestDto import com.sopt.clody.data.remote.dto.response.ModifyNicknameResponseDto import com.sopt.clody.data.remote.dto.response.UserInfoResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse import javax.inject.Inject class AccountManagementDataSourceImpl @Inject constructor( diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AuthDataSourceImpl.kt b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AuthDataSourceImpl.kt index 4ad4e4d5..91670e80 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AuthDataSourceImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/AuthDataSourceImpl.kt @@ -2,15 +2,15 @@ package com.sopt.clody.data.remote.datasourceimpl import com.sopt.clody.data.remote.api.AuthService import com.sopt.clody.data.remote.datasource.AuthDataSource +import com.sopt.clody.data.remote.dto.base.ApiResponse import com.sopt.clody.data.remote.dto.request.LoginRequestDto -import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.request.SignUpRequestDto +import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.response.SignUpResponseDto -import com.sopt.clody.data.remote.dto.base.ApiResponse import javax.inject.Inject class AuthDataSourceImpl @Inject constructor( - private val authService: AuthService + private val authService: AuthService, ) : AuthDataSource { override suspend fun signIn(authorization: String, requestSignInDto: LoginRequestDto): ApiResponse = authService.postLogin(authorization, requestSignInDto) diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/DiaryRemoteDataSourceImpl.kt b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/DiaryRemoteDataSourceImpl.kt index ea9d8b5d..cbbb7b53 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/DiaryRemoteDataSourceImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/DiaryRemoteDataSourceImpl.kt @@ -13,8 +13,8 @@ import com.sopt.clody.data.remote.dto.response.WriteDiaryResponseDto import javax.inject.Inject class DiaryRemoteDataSourceImpl @Inject constructor( - private val diaryService: DiaryService -): DiaryRemoteDataSource { + private val diaryService: DiaryService, +) : DiaryRemoteDataSource { override suspend fun writeDiary(date: String, content: List): ApiResponse = diaryService.writeDiary(WriteDiaryRequestDto(date, content)) diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/NotificationDataSourceImpl.kt b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/NotificationDataSourceImpl.kt index 4de24842..067993a6 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/NotificationDataSourceImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/NotificationDataSourceImpl.kt @@ -9,7 +9,7 @@ import com.sopt.clody.data.remote.dto.response.SendNotificationResponseDto import javax.inject.Inject class NotificationDataSourceImpl @Inject constructor( - private val notificationService: NotificationService + private val notificationService: NotificationService, ) : NotificationDataSource { override suspend fun getNotificationInfo(): ApiResponse = notificationService.getNotificationInfo() diff --git a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/TokenReissueDataSourceImpl.kt b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/TokenReissueDataSourceImpl.kt index 061d963d..bc6227cf 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/TokenReissueDataSourceImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/datasourceimpl/TokenReissueDataSourceImpl.kt @@ -7,9 +7,8 @@ import com.sopt.clody.data.remote.dto.response.TokenReissueResponseDto import javax.inject.Inject class TokenReissueDataSourceImpl @Inject constructor( - private val tokenReissueService: TokenReissueService + private val tokenReissueService: TokenReissueService, ) : TokenReissueDataSource { override suspend fun getReissueToken(authorization: String): ApiResponse = tokenReissueService.reissue(authorization) } - diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/base/ApiResponse.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/base/ApiResponse.kt index 793b665a..9af80ca7 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/base/ApiResponse.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/base/ApiResponse.kt @@ -7,6 +7,5 @@ import kotlinx.serialization.Serializable data class ApiResponse( @SerialName("status") val status: Int, @SerialName("message") val message: String, - @SerialName("data") val data: T + @SerialName("data") val data: T, ) - diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/request/LoginRequestDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/request/LoginRequestDto.kt index 3dc21aeb..9fd4075c 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/request/LoginRequestDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/request/LoginRequestDto.kt @@ -5,6 +5,6 @@ import kotlinx.serialization.Serializable @Serializable data class LoginRequestDto( - @SerialName("platform") val platform: String, - @SerialName("fcmToken") val fcmToken: String + @SerialName("platform") val platform: String, + @SerialName("fcmToken") val fcmToken: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/request/ModifyNicknameRequestDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/request/ModifyNicknameRequestDto.kt index f15d8468..de68c123 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/request/ModifyNicknameRequestDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/request/ModifyNicknameRequestDto.kt @@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable @Serializable data class ModifyNicknameRequestDto( - @SerialName("name") val name: String + @SerialName("name") val name: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/request/SendNotificationRequestDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/request/SendNotificationRequestDto.kt index 671e7211..8a051a8d 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/request/SendNotificationRequestDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/request/SendNotificationRequestDto.kt @@ -8,5 +8,5 @@ data class SendNotificationRequestDto( @SerialName("isDiaryAlarm") val isDiaryAlarm: Boolean, @SerialName("isReplyAlarm") val isReplyAlarm: Boolean, @SerialName("time") val time: String, - @SerialName("fcmToken") val fcmToken: String + @SerialName("fcmToken") val fcmToken: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/request/SignUpRequestDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/request/SignUpRequestDto.kt index 616e34f0..e38625e9 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/request/SignUpRequestDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/request/SignUpRequestDto.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.Serializable data class SignUpRequestDto( @SerialName("platform") val platform: String, @SerialName("name") val name: String, - @SerialName("fcmToken") val fcmToken: String + @SerialName("fcmToken") val fcmToken: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/request/WriteDiaryRequestDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/request/WriteDiaryRequestDto.kt index f94e17c2..7026db09 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/request/WriteDiaryRequestDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/request/WriteDiaryRequestDto.kt @@ -6,5 +6,5 @@ import kotlinx.serialization.Serializable @Serializable data class WriteDiaryRequestDto( @SerialName("date") val date: String, - @SerialName("content")val content: List + @SerialName("content")val content: List, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/DailyDiariesResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/DailyDiariesResponseDto.kt index 1f830600..1f995a09 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/DailyDiariesResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/DailyDiariesResponseDto.kt @@ -5,10 +5,10 @@ import kotlinx.serialization.Serializable @Serializable data class DailyDiariesResponseDto( - @SerialName("diaries") val diaries: List + @SerialName("diaries") val diaries: List, ) { @Serializable data class Diary( - @SerialName("content")val content: String + @SerialName("content")val content: String, ) } diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/LoginResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/LoginResponseDto.kt index 0ae4fae4..50d075da 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/LoginResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/LoginResponseDto.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.Serializable data class LoginResponseDto( @SerialName("accessToken") val accessToken: String, @SerialName("refreshToken") val refreshToken: String, - @SerialName("isBeginner") val isBeginner: Boolean = false + @SerialName("isBeginner") val isBeginner: Boolean = false, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/ModifyNicknameResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/ModifyNicknameResponseDto.kt index 297bb814..5fdc66f9 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/ModifyNicknameResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/ModifyNicknameResponseDto.kt @@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable @Serializable data class ModifyNicknameResponseDto( - @SerialName("name") val name: String + @SerialName("name") val name: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyCalendarResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyCalendarResponseDto.kt index 301432fc..43eaaa12 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyCalendarResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyCalendarResponseDto.kt @@ -6,12 +6,12 @@ import kotlinx.serialization.Serializable @Serializable data class MonthlyCalendarResponseDto( @SerialName("totalCloverCount") val totalCloverCount: Int, - @SerialName("diaries") val diaries: List + @SerialName("diaries") val diaries: List, ) { @Serializable data class Diary( @SerialName("diaryCount") val diaryCount: Int, @SerialName("replyStatus") val replyStatus: String, - @SerialName("isDeleted") val isDeleted: Boolean + @SerialName("isDeleted") val isDeleted: Boolean, ) } diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyDiaryResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyDiaryResponseDto.kt index 53b0d4ce..27b0883a 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyDiaryResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/MonthlyDiaryResponseDto.kt @@ -6,7 +6,7 @@ import kotlinx.serialization.Serializable @Serializable data class MonthlyDiaryResponseDto( @SerialName("totalCloverCount") val totalCloverCount: Int, - @SerialName("diaries") val diaries: List + @SerialName("diaries") val diaries: List, ) { @Serializable data class DailyDiary( @@ -14,11 +14,11 @@ data class MonthlyDiaryResponseDto( @SerialName("replyStatus") val replyStatus: String, @SerialName("date") val date: String, @SerialName("diary") val diary: List, - @SerialName("isDeleted") val isDeleted: Boolean + @SerialName("isDeleted") val isDeleted: Boolean, ) { @Serializable data class DailyDiaryContent( - @SerialName("content") val content: String + @SerialName("content") val content: String, ) } } diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/NotificationInfoResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/NotificationInfoResponseDto.kt index 0915eb9e..641a8ca2 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/NotificationInfoResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/NotificationInfoResponseDto.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.Serializable data class NotificationInfoResponseDto( @SerialName("isDiaryAlarm") val isDiaryAlarm: Boolean, @SerialName("isReplyAlarm") val isReplyAlarm: Boolean, - @SerialName("time") val time: String + @SerialName("time") val time: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/ReplyDiaryResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/ReplyDiaryResponseDto.kt index 5aca93be..4f55fd63 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/ReplyDiaryResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/ReplyDiaryResponseDto.kt @@ -7,6 +7,5 @@ data class ReplyDiaryResponseDto( val content: String?, val nickname: String, val month: Int, - val date: Int + val date: Int, ) - diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/SendNotificationResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/SendNotificationResponseDto.kt index 2e9effc2..4c29fc62 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/SendNotificationResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/SendNotificationResponseDto.kt @@ -8,5 +8,5 @@ data class SendNotificationResponseDto( @SerialName("isDiaryAlarm") val isDiaryAlarm: Boolean, @SerialName("isReplyAlarm") val isReplyAlarm: Boolean, @SerialName("time") val time: String, - @SerialName("fcmToken") val fcmToken: String + @SerialName("fcmToken") val fcmToken: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/TokenReissueResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/TokenReissueResponseDto.kt index 36248e6c..2ddc9f88 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/TokenReissueResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/TokenReissueResponseDto.kt @@ -8,5 +8,5 @@ data class TokenReissueResponseDto( @SerialName("accessToken") val accessToken: String, @SerialName("refreshToken") - val refreshToken: String + val refreshToken: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/UserInfoResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/UserInfoResponseDto.kt index a2cd1f5f..558e2797 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/UserInfoResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/UserInfoResponseDto.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.Serializable data class UserInfoResponseDto( @SerialName("email") val email: String, @SerialName("name") val name: String, - @SerialName("platform") val platform: String + @SerialName("platform") val platform: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/dto/response/WriteDiaryResponseDto.kt b/app/src/main/java/com/sopt/clody/data/remote/dto/response/WriteDiaryResponseDto.kt index e6db61e7..31b4b1cb 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/dto/response/WriteDiaryResponseDto.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/dto/response/WriteDiaryResponseDto.kt @@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable @Serializable data class WriteDiaryResponseDto( val createdAt: String, - val replyType: String + val replyType: String, ) diff --git a/app/src/main/java/com/sopt/clody/data/remote/util/AuthInterceptor.kt b/app/src/main/java/com/sopt/clody/data/remote/util/AuthInterceptor.kt index d774cf7f..f3e1fac4 100644 --- a/app/src/main/java/com/sopt/clody/data/remote/util/AuthInterceptor.kt +++ b/app/src/main/java/com/sopt/clody/data/remote/util/AuthInterceptor.kt @@ -24,7 +24,7 @@ import javax.inject.Provider class AuthInterceptor @Inject constructor( private val tokenReissueRepositoryProvider: Provider, private val tokenDataStore: TokenDataStore, - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, ) : Interceptor { private val mutex = Mutex() @@ -48,8 +48,8 @@ class AuthInterceptor @Inject constructor( private fun shouldAddAuthorization(url: String): Boolean { return !url.contains("api/v1/auth/signin") && - !url.contains("api/v1/auth/signup") && - !url.contains("api/v1/auth/reissue") + !url.contains("api/v1/auth/signup") && + !url.contains("api/v1/auth/reissue") } private fun addAuthorizationHeader(request: Request): Request { @@ -65,7 +65,7 @@ class AuthInterceptor @Inject constructor( private fun handleTokenExpiration( chain: Interceptor.Chain, - originalRequest: Request + originalRequest: Request, ): Response { return runBlocking { mutex.withLock { diff --git a/app/src/main/java/com/sopt/clody/data/remote/util/handleApiResponse.kt b/app/src/main/java/com/sopt/clody/data/remote/util/HandleApiResponse.kt similarity index 100% rename from app/src/main/java/com/sopt/clody/data/remote/util/handleApiResponse.kt rename to app/src/main/java/com/sopt/clody/data/remote/util/HandleApiResponse.kt diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AccountManagementRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AccountManagementRepositoryImpl.kt index d64d7ad3..6a65521a 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AccountManagementRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AccountManagementRepositoryImpl.kt @@ -9,7 +9,7 @@ import com.sopt.clody.domain.repository.AccountManagementRepository import javax.inject.Inject class AccountManagementRepositoryImpl @Inject constructor( - private val accountManagementDataSource: AccountManagementDataSource + private val accountManagementDataSource: AccountManagementDataSource, ) : AccountManagementRepository { override suspend fun getUserInfo(): Result = runCatching { diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AdRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AdRepositoryImpl.kt index 0e47dfc1..d9b89ab3 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AdRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AdRepositoryImpl.kt @@ -5,7 +5,7 @@ import com.sopt.clody.domain.repository.AdRepository import javax.inject.Inject class AdRepositoryImpl @Inject constructor( - private val adRemoteDataSource: AdRemoteDataSource + private val adRemoteDataSource: AdRemoteDataSource, ) : AdRepository { override suspend fun startAd(year: Int, month: Int, day: Int): Result { return adRemoteDataSource.startAd(year, month, day) diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AuthRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AuthRepositoryImpl.kt index 76a2ce15..854fcaf7 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/AuthRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/AuthRepositoryImpl.kt @@ -22,4 +22,3 @@ class AuthRepositoryImpl @Inject constructor( authDataSource.signUp(authorization, requestSignUpDto).handleApiResponse().getOrThrow() } } - diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/DiaryRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/DiaryRepositoryImpl.kt index cd2e4b8d..20d14634 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/DiaryRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/DiaryRepositoryImpl.kt @@ -15,8 +15,8 @@ import retrofit2.HttpException import javax.inject.Inject class DiaryRepositoryImpl @Inject constructor( - private val diaryRemoteDataSource: DiaryRemoteDataSource -): DiaryRepository { + private val diaryRemoteDataSource: DiaryRemoteDataSource, +) : DiaryRepository { override suspend fun writeDiary(date: String, content: List): Result = runCatching { diaryRemoteDataSource.writeDiary(date, content).handleApiResponse().getOrThrow() diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/NotificationRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/NotificationRepositoryImpl.kt index 4b2c889b..b4e50abe 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/NotificationRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/NotificationRepositoryImpl.kt @@ -4,12 +4,12 @@ import com.sopt.clody.data.remote.datasource.NotificationDataSource import com.sopt.clody.data.remote.dto.request.SendNotificationRequestDto import com.sopt.clody.data.remote.dto.response.NotificationInfoResponseDto import com.sopt.clody.data.remote.dto.response.SendNotificationResponseDto -import com.sopt.clody.domain.repository.NotificationRepository import com.sopt.clody.data.remote.util.handleApiResponse +import com.sopt.clody.domain.repository.NotificationRepository import javax.inject.Inject class NotificationRepositoryImpl @Inject constructor( - private val notificationDataSource: NotificationDataSource + private val notificationDataSource: NotificationDataSource, ) : NotificationRepository { override suspend fun getNotificationInfo(): Result = runCatching { diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenReissueRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenReissueRepositoryImpl.kt index 3f96bb94..13569ed3 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenReissueRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenReissueRepositoryImpl.kt @@ -6,9 +6,9 @@ import com.sopt.clody.domain.repository.TokenReissueRepository import javax.inject.Inject class TokenReissueRepositoryImpl @Inject constructor( - private val tokenReissueDataSource: TokenReissueDataSource + private val tokenReissueDataSource: TokenReissueDataSource, ) : TokenReissueRepository { - override suspend fun getReissueToken(authorization: String, ): Result = + override suspend fun getReissueToken(authorization: String): Result = runCatching { val authorizationHeader = "Bearer $authorization" tokenReissueDataSource.getReissueToken(authorizationHeader).data diff --git a/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenRepositoryImpl.kt b/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenRepositoryImpl.kt index 808da2ad..c2d0a2f2 100644 --- a/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/clody/data/repositoryimpl/TokenRepositoryImpl.kt @@ -1,12 +1,11 @@ package com.sopt.clody.data.repositoryimpl -import android.util.Log import com.sopt.clody.data.datastore.TokenDataStore import com.sopt.clody.domain.repository.TokenRepository import javax.inject.Inject class TokenRepositoryImpl @Inject constructor( - private val tokenDataStore: TokenDataStore + private val tokenDataStore: TokenDataStore, ) : TokenRepository { override fun getAccessToken(): String = tokenDataStore.accessToken override fun getRefreshToken(): String = tokenDataStore.refreshToken diff --git a/app/src/main/java/com/sopt/clody/di/AdModule.kt b/app/src/main/java/com/sopt/clody/di/AdModule.kt index 3e10cd76..928e59cc 100644 --- a/app/src/main/java/com/sopt/clody/di/AdModule.kt +++ b/app/src/main/java/com/sopt/clody/di/AdModule.kt @@ -12,6 +12,6 @@ import dagger.hilt.components.SingletonComponent abstract class AdModule { @Binds abstract fun bindRewardAdShower( - impl: RewardAdShowerImpl + impl: RewardAdShowerImpl, ): RewardAdShower } diff --git a/app/src/main/java/com/sopt/clody/di/DataSourceModule.kt b/app/src/main/java/com/sopt/clody/di/DataSourceModule.kt index 9721c454..4d570e72 100644 --- a/app/src/main/java/com/sopt/clody/di/DataSourceModule.kt +++ b/app/src/main/java/com/sopt/clody/di/DataSourceModule.kt @@ -22,30 +22,30 @@ abstract class DataSourceModule { @Binds @Singleton abstract fun bindAuthDataSource( - authDataSourceImpl: AuthDataSourceImpl + authDataSourceImpl: AuthDataSourceImpl, ): AuthDataSource @Binds @Singleton abstract fun bindTokenReissueDataSource( - tokenReissueDataSourceImpl: TokenReissueDataSourceImpl + tokenReissueDataSourceImpl: TokenReissueDataSourceImpl, ): TokenReissueDataSource @Binds @Singleton abstract fun bindDiaryRemoteDataSource( - diaryRemoteDataSourceImpl: DiaryRemoteDataSourceImpl + diaryRemoteDataSourceImpl: DiaryRemoteDataSourceImpl, ): DiaryRemoteDataSource @Binds @Singleton abstract fun bindAccountManagementDataSource( - accountManagementDataSourceImpl: AccountManagementDataSourceImpl + accountManagementDataSourceImpl: AccountManagementDataSourceImpl, ): AccountManagementDataSource @Binds @Singleton abstract fun bindNotificationDataSource( - notificationDataSourceImpl: NotificationDataSourceImpl + notificationDataSourceImpl: NotificationDataSourceImpl, ): NotificationDataSource } diff --git a/app/src/main/java/com/sopt/clody/di/NetworkModule.kt b/app/src/main/java/com/sopt/clody/di/NetworkModule.kt index 511d1be9..4399784d 100644 --- a/app/src/main/java/com/sopt/clody/di/NetworkModule.kt +++ b/app/src/main/java/com/sopt/clody/di/NetworkModule.kt @@ -1,6 +1,5 @@ package com.sopt.clody.di - import android.content.Context import android.net.ConnectivityManager import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory @@ -37,7 +36,7 @@ object NetworkModule { fun provideOauthInterceptor( tokenReissueRepository: Provider, tokenDataStore: TokenDataStore, - @ApplicationContext context: Context + @ApplicationContext context: Context, ): AuthInterceptor { return AuthInterceptor(tokenReissueRepository, tokenDataStore, context) } @@ -46,7 +45,7 @@ object NetworkModule { @Singleton fun provideClodyOkHttpClient( loggingInterceptor: HttpLoggingInterceptor, - oauthInterceptor: AuthInterceptor + oauthInterceptor: AuthInterceptor, ): OkHttpClient { return OkHttpClient.Builder() .addInterceptor(loggingInterceptor) @@ -64,7 +63,7 @@ object NetworkModule { @Singleton fun provideRetrofit( okHttpClient: OkHttpClient, - baseUrl: String + baseUrl: String, ): Retrofit { val json = Json { ignoreUnknownKeys = true } return Retrofit.Builder() diff --git a/app/src/main/java/com/sopt/clody/di/RepositoryModule.kt b/app/src/main/java/com/sopt/clody/di/RepositoryModule.kt index 1ba75ece..006a0064 100644 --- a/app/src/main/java/com/sopt/clody/di/RepositoryModule.kt +++ b/app/src/main/java/com/sopt/clody/di/RepositoryModule.kt @@ -26,42 +26,42 @@ abstract class RepositoryModule { @Binds @Singleton abstract fun bindAuthRepository( - authRepositoryImpl: AuthRepositoryImpl + authRepositoryImpl: AuthRepositoryImpl, ): AuthRepository @Binds @Singleton abstract fun bindTokenRepository( - tokenRepositoryImpl: TokenRepositoryImpl + tokenRepositoryImpl: TokenRepositoryImpl, ): TokenRepository @Binds @Singleton abstract fun bindTokenReissueRepository( - tokenReissueRepositoryImpl: TokenReissueRepositoryImpl + tokenReissueRepositoryImpl: TokenReissueRepositoryImpl, ): TokenReissueRepository @Binds @Singleton abstract fun bindDiaryRepository( - diaryRepositoryImpl: DiaryRepositoryImpl + diaryRepositoryImpl: DiaryRepositoryImpl, ): DiaryRepository @Binds @Singleton abstract fun bindAccountManagementRepository( - accountManagementRepositoryImpl: AccountManagementRepositoryImpl + accountManagementRepositoryImpl: AccountManagementRepositoryImpl, ): AccountManagementRepository @Binds @Singleton abstract fun bindNotificationRepository( - notificationRepositoryImpl: NotificationRepositoryImpl + notificationRepositoryImpl: NotificationRepositoryImpl, ): NotificationRepository @Binds @Singleton abstract fun bindAdRepository( - adRepositoryImpl: AdRepositoryImpl + adRepositoryImpl: AdRepositoryImpl, ): AdRepository } diff --git a/app/src/main/java/com/sopt/clody/domain/model/ExampleModel.kt b/app/src/main/java/com/sopt/clody/domain/model/ExampleModel.kt index 151bc989..2f99de36 100644 --- a/app/src/main/java/com/sopt/clody/domain/model/ExampleModel.kt +++ b/app/src/main/java/com/sopt/clody/domain/model/ExampleModel.kt @@ -1,6 +1,6 @@ package com.sopt.clody.domain.model -data class ExampleModel ( +data class ExampleModel( val id: String, - val name: String + val name: String, ) diff --git a/app/src/main/java/com/sopt/clody/domain/repository/AccountManagementRepository.kt b/app/src/main/java/com/sopt/clody/domain/repository/AccountManagementRepository.kt index aec46210..baffc72f 100644 --- a/app/src/main/java/com/sopt/clody/domain/repository/AccountManagementRepository.kt +++ b/app/src/main/java/com/sopt/clody/domain/repository/AccountManagementRepository.kt @@ -8,9 +8,8 @@ interface AccountManagementRepository { suspend fun getUserInfo(): Result suspend fun modifyNickname( - modifyNicknameRequestDto: ModifyNicknameRequestDto + modifyNicknameRequestDto: ModifyNicknameRequestDto, ): Result suspend fun revokeAccount(): Result - } diff --git a/app/src/main/java/com/sopt/clody/domain/repository/AuthRepository.kt b/app/src/main/java/com/sopt/clody/domain/repository/AuthRepository.kt index 14bd454d..e9b822ec 100644 --- a/app/src/main/java/com/sopt/clody/domain/repository/AuthRepository.kt +++ b/app/src/main/java/com/sopt/clody/domain/repository/AuthRepository.kt @@ -1,11 +1,10 @@ package com.sopt.clody.domain.repository import com.sopt.clody.data.remote.dto.request.LoginRequestDto -import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.request.SignUpRequestDto +import com.sopt.clody.data.remote.dto.response.LoginResponseDto import com.sopt.clody.data.remote.dto.response.SignUpResponseDto - interface AuthRepository { suspend fun signIn(authorization: String, requestSignInDto: LoginRequestDto): Result suspend fun signUp(authorization: String, requestSignUpDto: SignUpRequestDto): Result diff --git a/app/src/main/java/com/sopt/clody/domain/repository/DiaryRepository.kt b/app/src/main/java/com/sopt/clody/domain/repository/DiaryRepository.kt index ddcd3c0f..9c95565e 100644 --- a/app/src/main/java/com/sopt/clody/domain/repository/DiaryRepository.kt +++ b/app/src/main/java/com/sopt/clody/domain/repository/DiaryRepository.kt @@ -10,7 +10,7 @@ import com.sopt.clody.data.remote.dto.response.WriteDiaryResponseDto interface DiaryRepository { suspend fun writeDiary(date: String, content: List): Result suspend fun deleteDailyDiary(year: Int, month: Int, day: Int): Result - suspend fun getDailyDiariesData(year: Int, month: Int, date:Int): Result + suspend fun getDailyDiariesData(year: Int, month: Int, date: Int): Result suspend fun getDiaryTime(year: Int, month: Int, date: Int): Result suspend fun getMonthlyCalendarData(year: Int, month: Int): Result suspend fun getMonthlyDiary(year: Int, month: Int): Result diff --git a/app/src/main/java/com/sopt/clody/domain/repository/TokenRepository.kt b/app/src/main/java/com/sopt/clody/domain/repository/TokenRepository.kt index a1a8efe4..3e06999f 100644 --- a/app/src/main/java/com/sopt/clody/domain/repository/TokenRepository.kt +++ b/app/src/main/java/com/sopt/clody/domain/repository/TokenRepository.kt @@ -6,4 +6,3 @@ interface TokenRepository { fun setTokens(accessToken: String, refreshToken: String) fun clearInfo() } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/KaKaoButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/KaKaoButton.kt index c74f820a..a1fe84d0 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/KaKaoButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/KaKaoButton.kt @@ -27,7 +27,7 @@ import com.sopt.clody.ui.theme.ClodyTheme fun KaKaoButton( text: String, onClick: () -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { Button( onClick = onClick, @@ -36,23 +36,23 @@ fun KaKaoButton( modifier = modifier .fillMaxWidth() .height(48.dp) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center, - modifier = Modifier.fillMaxSize() + modifier = Modifier.fillMaxSize(), ) { Image( painter = painterResource(id = R.drawable.ic_signup_kakao), contentDescription = null, - modifier = Modifier.size(24.dp) + modifier = Modifier.size(24.dp), ) Spacer(modifier = Modifier.width(10.dp)) Text( text = text, style = ClodyTheme.typography.body1SemiBold, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } } @@ -63,6 +63,6 @@ fun KaKaoButton( fun KaKaoButtonPreview() { KaKaoButton( text = "카카오 로그인", - onClick = { /*TODO*/ } + onClick = { /*TODO*/ }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/NextButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/NextButton.kt index 6dfecb0f..70816f4c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/NextButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/button/NextButton.kt @@ -16,21 +16,21 @@ import androidx.compose.ui.unit.dp fun NextButton( onClick: () -> Unit, imageResource: Int, - contentDescription: String? = null + contentDescription: String? = null, ) { Box( modifier = Modifier.run { size(23.dp) .clip(CircleShape) .clickable( - onClick = onClick + onClick = onClick, ) }, - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Image( painter = painterResource(id = imageResource), - contentDescription = contentDescription + contentDescription = contentDescription, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/checkbox/CustomCheckBox.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/checkbox/CustomCheckBox.kt index 58f4f297..e0618c1e 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/checkbox/CustomCheckBox.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/checkbox/CustomCheckBox.kt @@ -21,16 +21,16 @@ fun CustomCheckbox( onCheckedChange: (Boolean) -> Unit, size: Dp, checkedImageRes: Int, - uncheckedImageRes: Int + uncheckedImageRes: Int, ) { Box( modifier = Modifier .size(size) .clip(CircleShape) .clickable( - onClick = { onCheckedChange(!checked) } + onClick = { onCheckedChange(!checked) }, ), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { if (checked) { Image( @@ -49,5 +49,11 @@ fun CustomCheckbox( @Preview(showBackground = true) @Composable fun CustomCheckboxPreview() { - CustomCheckbox(checked = true, onCheckedChange = {}, size = 23.dp, checkedImageRes = R.drawable.ic_terms_check_on_23, uncheckedImageRes = R.drawable.ic_terms_check_off_23) + CustomCheckbox( + checked = true, + onCheckedChange = {}, + size = 23.dp, + checkedImageRes = R.drawable.ic_terms_check_on_23, + uncheckedImageRes = R.drawable.ic_terms_check_off_23, + ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/container/PickerBox.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/container/PickerBox.kt index cbfeb84c..6102ce3d 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/container/PickerBox.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/container/PickerBox.kt @@ -20,7 +20,7 @@ import com.sopt.clody.ui.theme.ClodyTheme fun PickerBox( time: String, // 추가: 선택된 시간을 받는 매개변수 modifier: Modifier = Modifier, - onClick: () -> Unit // onClick 파라미터 추가 + onClick: () -> Unit, // onClick 파라미터 추가 ) { val interactionSource = remember { MutableInteractionSource() } @@ -29,19 +29,19 @@ fun PickerBox( .clickable( onClick = onClick, indication = null, // 클릭 효과 제거 - interactionSource = interactionSource - ) + interactionSource = interactionSource, + ), ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Text( text = time, // 수정: 선택된 시간을 표시 style = ClodyTheme.typography.body1SemiBold, color = ClodyTheme.colors.gray03, - modifier = Modifier.weight(1f) + modifier = Modifier.weight(1f), ) Image( painter = painterResource(id = R.drawable.ic_timereminder_down), @@ -55,6 +55,5 @@ fun PickerBox( @Composable fun PreviewPickerBox() { PickerBox(time = "오후 6:00") { - } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/textfield/NickNameTextField.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/textfield/NickNameTextField.kt index 9e045eae..906a87bf 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/textfield/NickNameTextField.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/textfield/NickNameTextField.kt @@ -62,35 +62,34 @@ fun NickNameTextField( Modifier .fillMaxWidth() .padding(horizontal = 0.dp, vertical = 0.dp), - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { Row( verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Box(modifier = Modifier.weight(1f)) { if (value.text.isEmpty() && !isFocused) { Text( text = hint, style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray05 + color = ClodyTheme.colors.gray05, ) } - innerTextField() // 실제 입력 필드 + innerTextField() // 실제 입력 필드 } Box( modifier = Modifier .clickable( onClick = onRemove, indication = null, - interactionSource = remember { MutableInteractionSource() } - ) - , - contentAlignment = Alignment.Center + interactionSource = remember { MutableInteractionSource() }, + ), + contentAlignment = Alignment.Center, ) { Image( painter = painterResource(id = R.drawable.ic_nickname_delete), - contentDescription = null + contentDescription = null, ) } } @@ -99,17 +98,20 @@ fun NickNameTextField( modifier = Modifier .height(2.dp) .fillMaxWidth() - .background(when { - isValid.not() -> ClodyTheme.colors.red - isFocused -> ClodyTheme.colors.mainYellow - else -> ClodyTheme.colors.gray08 - }) + .background( + when { + isValid.not() -> ClodyTheme.colors.red + isFocused -> ClodyTheme.colors.mainYellow + else -> ClodyTheme.colors.gray08 + }, + ), ) } - } + }, ) } } + @Preview(showBackground = true) @Composable fun PreviewNickNameTextField() { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/timepicker/BottomSheetTimePicker.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/timepicker/BottomSheetTimePicker.kt index 2d4f5fcf..6e486ad9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/timepicker/BottomSheetTimePicker.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/component/timepicker/BottomSheetTimePicker.kt @@ -33,14 +33,14 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun BottomSheetTimePicker( onDismissRequest: () -> Unit, - onRemindTimeSelected: (String, String, String) -> Unit + onRemindTimeSelected: (String, String, String) -> Unit, ) { Surface( modifier = Modifier .fillMaxWidth() .wrapContentHeight(), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), - color = ClodyTheme.colors.white + color = ClodyTheme.colors.white, ) { Column( horizontalAlignment = Alignment.CenterHorizontally, @@ -48,26 +48,26 @@ fun BottomSheetTimePicker( modifier = Modifier .wrapContentSize() .background(color = ClodyTheme.colors.white) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Box( modifier = Modifier .fillMaxWidth() - .padding(top = 16.dp, bottom = 30.dp) + .padding(top = 16.dp, bottom = 30.dp), ) { Text( stringResource(id = R.string.time_picker_title), style = ClodyTheme.typography.head4, color = ClodyTheme.colors.gray01, - modifier = Modifier.align(Alignment.Center) + modifier = Modifier.align(Alignment.Center), ) IconButton( onClick = onDismissRequest, modifier = Modifier .size(24.dp) - .align(Alignment.CenterEnd) + .align(Alignment.CenterEnd), ) { Image( painter = painterResource(id = R.drawable.ic_picker_dismiss), @@ -86,19 +86,19 @@ fun BottomSheetTimePicker( Box( modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Box( modifier = Modifier .fillMaxWidth() .align(Alignment.Center) .height(35.dp) - .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)) + .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)), ) Row( modifier = Modifier .fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { ClodyPicker( state = amPmPickerState, @@ -137,14 +137,15 @@ fun BottomSheetTimePicker( onRemindTimeSelected( amPmPickerState.selectedItem, hourPickerState.selectedItem, - minutePickerState.selectedItem + minutePickerState.selectedItem, ) - onDismissRequest() }, + onDismissRequest() + }, text = "완료", enabled = true, modifier = Modifier .fillMaxWidth() - .padding(top = 30.dp, bottom = 28.dp) + .padding(top = 30.dp, bottom = 28.dp), ) } } @@ -153,5 +154,4 @@ fun BottomSheetTimePicker( @Preview(showBackground = true) @Composable fun BottomSheetPickerPreview() { - } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavGraph.kt index c47233e6..563ec440 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavGraph.kt @@ -6,12 +6,11 @@ import androidx.navigation.navigation import com.sopt.clody.presentation.ui.auth.screen.GuideRoute import com.sopt.clody.presentation.ui.auth.screen.NicknameRoute import com.sopt.clody.presentation.ui.auth.screen.TermsOfServiceRoute -import com.sopt.clody.presentation.ui.auth.timereminder.TimeReminderRoute import com.sopt.clody.presentation.ui.auth.signup.SignUpRoute - +import com.sopt.clody.presentation.ui.auth.timereminder.TimeReminderRoute fun NavGraphBuilder.registerNavGraph( - navigator: AuthNavigator + navigator: AuthNavigator, ) { navigation(startDestination = "register", route = "register_graph") { composable("register") { @@ -21,7 +20,7 @@ fun NavGraphBuilder.registerNavGraph( } fun NavGraphBuilder.termsOfServiceNavGraph( - navigator: AuthNavigator + navigator: AuthNavigator, ) { composable("terms_of_service") { TermsOfServiceRoute(navigator) @@ -29,7 +28,7 @@ fun NavGraphBuilder.termsOfServiceNavGraph( } fun NavGraphBuilder.nicknameNavGraph( - navigator: AuthNavigator + navigator: AuthNavigator, ) { composable("nickname") { NicknameRoute(navigator) @@ -37,7 +36,7 @@ fun NavGraphBuilder.nicknameNavGraph( } fun NavGraphBuilder.guidNavGraph( - navigator: AuthNavigator + navigator: AuthNavigator, ) { composable("guide") { GuideRoute(navigator) @@ -45,7 +44,7 @@ fun NavGraphBuilder.guidNavGraph( } fun NavGraphBuilder.timeReminderNavGraph( - navigator: AuthNavigator + navigator: AuthNavigator, ) { composable("time_reminder") { TimeReminderRoute(navigator) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavigator.kt index 56efe49f..693ceaaa 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/navigation/AuthNavigator.kt @@ -3,9 +3,8 @@ package com.sopt.clody.presentation.ui.auth.navigation import androidx.navigation.NavHostController import java.time.LocalDate - class AuthNavigator( - val navController: NavHostController + val navController: NavHostController, ) { val startDestination = "register_graph" fun navigateTermsOfService() { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/GuideScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/GuideScreen.kt index 5f32a8b5..7a21c233 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/GuideScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/GuideScreen.kt @@ -47,7 +47,7 @@ import kotlinx.coroutines.launch @Composable fun GuideRoute( - navigator: AuthNavigator + navigator: AuthNavigator, ) { GuideScreen(onNextButtonClick = { navigator.navigateHome() }) } @@ -55,33 +55,33 @@ fun GuideRoute( @OptIn(ExperimentalFoundationApi::class) @Composable fun GuideScreen( - onNextButtonClick: () -> Unit + onNextButtonClick: () -> Unit, ) { val pages = listOf( BoardingPage( title = stringResource(R.string.guide_page1_title), subtitle = stringResource(R.string.guide_page1_subtitle), description = stringResource(R.string.guide_page1_description), - imageRes = R.drawable.img_guide_first + imageRes = R.drawable.img_guide_first, ), BoardingPage( title = stringResource(R.string.guide_page2_title), subtitle = stringResource(R.string.guide_page2_subtitle), description = stringResource(R.string.guide_page2_description), - imageRes = R.drawable.img_guide_second + imageRes = R.drawable.img_guide_second, ), BoardingPage( title = stringResource(R.string.guide_page3_title), subtitle = stringResource(R.string.guide_page3_subtitle), description = stringResource(R.string.guide_page3_description), - imageRes = R.drawable.img_guide_third + imageRes = R.drawable.img_guide_third, ), BoardingPage( title = stringResource(R.string.guide_page4_title), subtitle = stringResource(R.string.guide_page4_subtitle), description = stringResource(R.string.guide_page4_description), - imageRes = R.drawable.img_guide_fourth - ) + imageRes = R.drawable.img_guide_fourth, + ), ) val pagerState = rememberPagerState(pageCount = { pages.size }) @@ -120,12 +120,12 @@ fun GuideScreen( exit = fadeOut(animationSpec = tween(1000)), // 1초 페이드 아웃 modifier = Modifier .fillMaxSize() - .padding(innerPadding) + .padding(innerPadding), ) { Column( modifier = Modifier .fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Spacer(modifier = Modifier.heightForScreenPercentage(0.21f)) HorizontalPager( @@ -133,26 +133,26 @@ fun GuideScreen( ) { page -> Column( horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Text( text = pages[page].title, style = ClodyTheme.typography.head1, color = ClodyTheme.colors.gray01, - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) Text( text = pages[page].subtitle, style = ClodyTheme.typography.head1, color = ClodyTheme.colors.gray01, - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.02f)) Text( text = pages[page].description, style = ClodyTheme.typography.body1Medium, color = ClodyTheme.colors.gray05, - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.04f)) Image( @@ -160,14 +160,14 @@ fun GuideScreen( contentDescription = null, modifier = Modifier .fillMaxWidth(), - contentScale = ContentScale.Fit + contentScale = ContentScale.Fit, ) } } Spacer(modifier = Modifier.heightForScreenPercentage(0.2f)) Row( - horizontalArrangement = Arrangement.Center + horizontalArrangement = Arrangement.Center, ) { repeat(pagerState.pageCount) { iteration -> val color = if (pagerState.currentPage == iteration) ClodyTheme.colors.gray03 else ClodyTheme.colors.gray07 @@ -176,7 +176,7 @@ fun GuideScreen( .padding(4.dp) .clip(CircleShape) .background(color) - .size(6.dp) + .size(6.dp), ) } } @@ -189,7 +189,7 @@ fun GuideScreen( onNextButtonClick() } } - } + }, ) } @@ -197,13 +197,13 @@ data class BoardingPage( val title: String, val subtitle: String, val description: String, - val imageRes: Int + val imageRes: Int, ) @Preview(showBackground = true) @Composable fun PreviewBoardingScreen() { GuideScreen( - onNextButtonClick = { } + onNextButtonClick = { }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/NicknameScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/NicknameScreen.kt index ad9c5eec..b5626c91 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/NicknameScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/NicknameScreen.kt @@ -53,7 +53,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun NicknameRoute( navigator: AuthNavigator, - viewModel: SignUpViewModel = hiltViewModel() + viewModel: SignUpViewModel = hiltViewModel(), ) { val nickname by viewModel.nickname.collectAsState() val isValidNickname by viewModel.isValidNickname.collectAsState() @@ -70,7 +70,7 @@ fun NicknameRoute( onBackClick = { navigator.navigateBack() }, isLoading = signUpState.uiState is UiState.Loading, isValidNickname = isValidNickname, - nicknameMessage = nicknameMessage + nicknameMessage = nicknameMessage, ) LaunchedEffect(signUpState) { @@ -94,7 +94,7 @@ fun NicknameRoute( onDismiss = { showDialog = false viewModel.resetSignUpState() - } + }, ) } } @@ -107,7 +107,7 @@ fun NicknameScreen( onBackClick: () -> Unit, isLoading: Boolean, isValidNickname: Boolean, - nicknameMessage: String + nicknameMessage: String, ) { var nicknameTextField by remember { mutableStateOf(TextFieldValue(nickname)) } val focusRequester = remember { FocusRequester() } @@ -132,11 +132,11 @@ fun NicknameScreen( onClick = { onBackClick() }, modifier = Modifier .statusBarsPadding() - .padding(start = 8.dp) + .padding(start = 8.dp), ) { Image( painter = painterResource(id = R.drawable.ic_nickname_back), - contentDescription = null + contentDescription = null, ) } }, @@ -163,13 +163,13 @@ fun NicknameScreen( .background(color = ClodyTheme.colors.white) .padding(paddingValues) .padding(horizontal = 24.dp), - horizontalAlignment = Alignment.Start + horizontalAlignment = Alignment.Start, ) { Spacer(modifier = Modifier.heightForScreenPercentage(0.056f)) Text( text = stringResource(id = R.string.nickname_title), style = ClodyTheme.typography.head1, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.06f)) NickNameTextField( @@ -186,12 +186,12 @@ fun NicknameScreen( modifier = Modifier .focusRequester(focusRequester) .clickable { focusRequester.requestFocus() } - .fillMaxWidth() + .fillMaxWidth(), ) Spacer(modifier = Modifier.heightForScreenPercentage(0.005f)) Row( modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween + horizontalArrangement = Arrangement.SpaceBetween, ) { Text( text = nicknameMessage, @@ -200,7 +200,7 @@ fun NicknameScreen( nicknameTextField.text.isEmpty() -> ClodyTheme.colors.gray04 isValidNickname -> ClodyTheme.colors.gray04 else -> ClodyTheme.colors.red - } + }, ) Text( text = annotatedString, @@ -210,7 +210,7 @@ fun NicknameScreen( ) } } - } + }, ) if (isLoading) { @@ -228,6 +228,6 @@ fun NicknameScreenPreview() { onBackClick = {}, isLoading = false, isValidNickname = true, - nicknameMessage = "특수문자, 띄어쓰기 없이 작성해주세요" + nicknameMessage = "특수문자, 띄어쓰기 없이 작성해주세요", ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/TermsOfServiceScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/TermsOfServiceScreen.kt index 70a645c2..7c1dd556 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/TermsOfServiceScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/screen/TermsOfServiceScreen.kt @@ -41,7 +41,7 @@ import kotlinx.coroutines.delay @Composable fun TermsOfServiceRoute( - navigator: AuthNavigator + navigator: AuthNavigator, ) { var backPressCount by remember { mutableStateOf(0) } @@ -61,14 +61,14 @@ fun TermsOfServiceRoute( } TermsOfServiceScreen( onAgreeClick = { navigator.navigateNickname() }, - onBackClick = { navigator.navigateToSignupScreen() } + onBackClick = { navigator.navigateToSignupScreen() }, ) } @Composable fun TermsOfServiceScreen( onAgreeClick: () -> Unit, - onBackClick: () -> Unit + onBackClick: () -> Unit, ) { var allChecked by remember { mutableStateOf(false) } var serviceChecked by remember { mutableStateOf(false) } @@ -83,11 +83,11 @@ fun TermsOfServiceScreen( onClick = { onBackClick() }, modifier = Modifier .statusBarsPadding() - .padding(start = 8.dp) + .padding(start = 8.dp), ) { Image( painter = painterResource(id = R.drawable.ic_nickname_back), - contentDescription = null + contentDescription = null, ) } }, @@ -109,7 +109,7 @@ fun TermsOfServiceScreen( .fillMaxSize() .background(color = ClodyTheme.colors.white) .padding(paddingValues) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Spacer(modifier = Modifier.heightForScreenPercentage(0.056f)) Text( @@ -120,13 +120,13 @@ fun TermsOfServiceScreen( Spacer(modifier = Modifier.heightForScreenPercentage(0.06f)) Row( verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Text( text = stringResource(id = R.string.terms_agree_all), style = ClodyTheme.typography.head3, color = ClodyTheme.colors.gray01, - modifier = Modifier.weight(1f) + modifier = Modifier.weight(1f), ) CustomCheckbox( checked = allChecked, @@ -137,7 +137,7 @@ fun TermsOfServiceScreen( }, size = 25.dp, checkedImageRes = R.drawable.ic_terms_check_on_25, - uncheckedImageRes = R.drawable.ic_terms_check_off_25 + uncheckedImageRes = R.drawable.ic_terms_check_off_25, ) } @@ -148,17 +148,17 @@ fun TermsOfServiceScreen( Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Text( stringResource(id = R.string.terms_service_use), style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) NextButton( onClick = { onClickSettingOption(context, SettingOptionUrls.TERMS_OF_SERVICE_URL) }, imageResource = R.drawable.ic_terms_next, - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.weight(1f)) CustomCheckbox( @@ -170,24 +170,24 @@ fun TermsOfServiceScreen( }, size = 23.dp, checkedImageRes = R.drawable.ic_terms_check_on_23, - uncheckedImageRes = R.drawable.ic_terms_check_off_23 + uncheckedImageRes = R.drawable.ic_terms_check_off_23, ) } Spacer(modifier = Modifier.heightForScreenPercentage(0.02f)) Row( verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Text( stringResource(id = R.string.terms_service_privacy), style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) NextButton( onClick = { onClickSettingOption(context, SettingOptionUrls.PRIVACY_POLICY_URL) }, imageResource = R.drawable.ic_terms_next, - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.weight(1f)) CustomCheckbox( @@ -199,11 +199,11 @@ fun TermsOfServiceScreen( }, size = 23.dp, checkedImageRes = R.drawable.ic_terms_check_on_23, - uncheckedImageRes = R.drawable.ic_terms_check_off_23 + uncheckedImageRes = R.drawable.ic_terms_check_off_23, ) } } - } + }, ) } @@ -212,6 +212,6 @@ fun TermsOfServiceScreen( fun TermsOfServiceScreenPreview() { TermsOfServiceScreen( onAgreeClick = { }, - onBackClick = { } + onBackClick = { }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignInState.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignInState.kt index d0b9a0f0..f3201b61 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignInState.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignInState.kt @@ -3,5 +3,5 @@ package com.sopt.clody.presentation.ui.auth.signup import com.sopt.clody.presentation.utils.base.UiState data class SignInState( - val uiState: UiState = UiState.Empty + val uiState: UiState = UiState.Empty, ) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpScreen.kt index 437d547d..8736d01f 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpScreen.kt @@ -33,7 +33,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun SignUpRoute( - authNavigator: AuthNavigator + authNavigator: AuthNavigator, ) { val viewModel: SignUpViewModel = hiltViewModel() val signInState by viewModel.signInState.collectAsState() @@ -62,7 +62,7 @@ fun SignUpRoute( @Composable fun SignUpScreen( isLoading: Boolean, - onSignInClick: () -> Unit + onSignInClick: () -> Unit, ) { val systemUiController = rememberSystemUiController() val backgroundColor = ClodyTheme.colors.white @@ -70,7 +70,7 @@ fun SignUpScreen( LaunchedEffect(Unit) { systemUiController.setStatusBarColor( color = backgroundColor, - darkIcons = true + darkIcons = true, ) } @@ -82,7 +82,7 @@ fun SignUpScreen( modifier = Modifier .fillMaxWidth() .navigationBarsPadding() - .padding(bottom = 40.dp) + .padding(bottom = 40.dp), ) }, content = { innerPadding -> @@ -97,21 +97,21 @@ fun SignUpScreen( Image( painter = painterResource(id = R.drawable.ic_signup_logo), contentDescription = null, - contentScale = ContentScale.Crop + contentScale = ContentScale.Crop, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.02f)) Image( painter = painterResource(id = R.drawable.ic__signup_title), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.01f)) Image( painter = painterResource(id = R.drawable.ic_signup_logotitle), contentDescription = null, - contentScale = ContentScale.Crop + contentScale = ContentScale.Crop, ) } - } + }, ) if (isLoading) { @@ -124,6 +124,6 @@ fun SignUpScreen( fun RegisterScreenPreview() { SignUpScreen( isLoading = false, - onSignInClick = {} + onSignInClick = {}, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpState.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpState.kt index 8c5ff14e..e4d57f0b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpState.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpState.kt @@ -3,5 +3,5 @@ package com.sopt.clody.presentation.ui.auth.signup import com.sopt.clody.presentation.utils.base.UiState data class SignUpState( - val uiState: UiState = UiState.Empty + val uiState: UiState = UiState.Empty, ) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpViewModel.kt index 19119776..a8b29806 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/signup/SignUpViewModel.kt @@ -32,7 +32,7 @@ import kotlin.coroutines.resumeWithException class SignUpViewModel @Inject constructor( private val authRepository: AuthRepository, private val tokenRepository: TokenRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _signInState = MutableStateFlow(SignInState()) @@ -130,7 +130,7 @@ class SignUpViewModel @Inject constructor( UiState.Failure(message) } _signInState.value = SignInState(uiState) - } + }, ) } } @@ -151,7 +151,7 @@ class SignUpViewModel @Inject constructor( viewModelScope.launch { authRepository.signUp( authorization, - SignUpRequestDto(platform = KAKAO_PLATFORM, name = nickname.value, fcmToken = fcmToken) + SignUpRequestDto(platform = KAKAO_PLATFORM, name = nickname.value, fcmToken = fcmToken), ).fold( onSuccess = { response -> _signUpState.value = SignUpState(UiState.Success(SIGN_UP_SUCCESS)) @@ -164,7 +164,7 @@ class SignUpViewModel @Inject constructor( error.localizedMessage ?: UNKNOWN_ERROR } _signUpState.value = SignUpState(UiState.Failure(errorMessage)) - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderScreen.kt index 9b7e7b99..67b254da 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderScreen.kt @@ -50,7 +50,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun TimeReminderRoute( navigator: AuthNavigator, - viewModel: TimeReminderViewModel = hiltViewModel() + viewModel: TimeReminderViewModel = hiltViewModel(), ) { val timeReminderState by viewModel.timeReminderState.collectAsState() val context = LocalContext.current @@ -60,7 +60,7 @@ fun TimeReminderRoute( val isNotificationPermissionGranted = remember { mutableStateOf(false) } val requestPermissionLauncher = rememberLauncherForActivityResult( - contract = ActivityResultContracts.RequestPermission() + contract = ActivityResultContracts.RequestPermission(), ) { isGranted: Boolean -> isNotificationPermissionGranted.value = isGranted } @@ -100,7 +100,7 @@ fun TimeReminderRoute( onDismiss = { showDialog = false viewModel.resetTimeReminderState() - } + }, ) } @@ -116,7 +116,7 @@ fun TimeReminderRoute( AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.ONBOARDING_ALARM) viewModel.sendNotification(context, isNotificationPermissionGranted.value) }, - isLoading = timeReminderState is TimeReminderState.Loading + isLoading = timeReminderState is TimeReminderState.Loading, ) } @@ -125,7 +125,7 @@ fun TimeReminderScreen( onStartClick: () -> Unit, onTimeSelected: (String, String, String) -> Unit, onCompleteClick: () -> Unit, - isLoading: Boolean + isLoading: Boolean, ) { var showBottomSheet by remember { mutableStateOf(false) } var selectedAmPm by remember { mutableStateOf("오후") } @@ -147,13 +147,13 @@ fun TimeReminderScreen( .navigationBarsPadding() .padding(horizontal = 24.dp) .padding(bottom = 14.dp), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { ClodyButton( onClick = onCompleteClick, text = stringResource(id = R.string.time_reminder_complete_button), enabled = true, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) Spacer(modifier = Modifier.height(LocalConfiguration.current.screenHeightDp.dp * 0.015f)) Text( @@ -162,11 +162,11 @@ fun TimeReminderScreen( .clickable( onClick = onStartClick, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), style = ClodyTheme.typography.detail1Medium, color = ClodyTheme.colors.gray05, - textDecoration = TextDecoration.Underline + textDecoration = TextDecoration.Underline, ) Spacer(modifier = Modifier.height(LocalConfiguration.current.screenHeightDp.dp * 0.017f)) } @@ -177,20 +177,20 @@ fun TimeReminderScreen( .fillMaxSize() .background(color = ClodyTheme.colors.white) .padding(innerPadding) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Spacer(modifier = Modifier.height(LocalConfiguration.current.screenHeightDp.dp * 0.14f)) Text( text = stringResource(id = R.string.time_reminder_title), style = ClodyTheme.typography.head1, color = ClodyTheme.colors.gray01, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) Spacer(modifier = Modifier.height(LocalConfiguration.current.screenHeightDp.dp * 0.05f)) PickerBox( time = "$selectedAmPm ${selectedHour}시 ${selectedMinute}분", modifier = Modifier.fillMaxWidth(), - onClick = { showBottomSheet = true } + onClick = { showBottomSheet = true }, ) HorizontalDivider(color = ClodyTheme.colors.gray07, thickness = 1.dp) } @@ -199,11 +199,11 @@ fun TimeReminderScreen( ClodyPopupBottomSheet(onDismissRequest = { showBottomSheet = false }) { BottomSheetTimePicker( onDismissRequest = { showBottomSheet = false }, - onRemindTimeSelected = onRemindTimeSelected + onRemindTimeSelected = onRemindTimeSelected, ) } } - } + }, ) if (isLoading) { @@ -211,7 +211,6 @@ fun TimeReminderScreen( } } - @Preview(showBackground = true) @Composable fun PreviewTimeReminderScreen() { @@ -219,6 +218,6 @@ fun PreviewTimeReminderScreen() { onStartClick = {}, onTimeSelected = { _, _, _ -> }, onCompleteClick = {}, - isLoading = false + isLoading = false, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderViewModel.kt index 9f97a447..91906f23 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/auth/timereminder/TimeReminderViewModel.kt @@ -7,11 +7,11 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sopt.clody.data.remote.dto.request.SendNotificationRequestDto +import com.sopt.clody.data.remote.util.NetworkUtil import com.sopt.clody.domain.repository.NotificationRepository import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_NETWORK_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_TEMPORARY_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.UNKNOWN_ERROR -import com.sopt.clody.data.remote.util.NetworkUtil import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -21,7 +21,7 @@ import javax.inject.Inject @HiltViewModel class TimeReminderViewModel @Inject constructor( private val notificationRepository: NotificationRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _timeReminderState = MutableStateFlow(TimeReminderState.Idle) @@ -47,7 +47,7 @@ class TimeReminderViewModel @Inject constructor( isDiaryAlarm = isPermissionGranted, isReplyAlarm = isPermissionGranted, time = selectedTime, - fcmToken = fcmToken + fcmToken = fcmToken, ) _timeReminderState.value = TimeReminderState.Loading @@ -62,7 +62,7 @@ class TimeReminderViewModel @Inject constructor( error.localizedMessage ?: UNKNOWN_ERROR } _timeReminderState.value = TimeReminderState.Failure(errorMessage) - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/FailureScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/FailureScreen.kt index 09f67985..adfee414 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/FailureScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/FailureScreen.kt @@ -27,7 +27,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun FailureScreen( message: String = "일시적인 오류가 발생했어요.\n잠시 후 다시 시도해주세요.", - confirmAction: () -> Unit = {} + confirmAction: () -> Unit = {}, ) { Column( modifier = Modifier @@ -35,19 +35,19 @@ fun FailureScreen( .navigationBarsPadding() .statusBarsPadding() .background(ClodyTheme.colors.white), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Spacer(modifier = Modifier.weight(1f)) Image( painter = painterResource(id = R.drawable.img_failure_screen_clody), contentDescription = null, - modifier = Modifier.padding(start = 20.dp, bottom = 30.dp) + modifier = Modifier.padding(start = 20.dp, bottom = 30.dp), ) Text( text = message, color = ClodyTheme.colors.gray06, textAlign = TextAlign.Center, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) Spacer(modifier = Modifier.weight(1f)) Button( @@ -56,13 +56,13 @@ fun FailureScreen( .fillMaxWidth() .padding(24.dp), shape = RoundedCornerShape(10.dp), - colors = ButtonDefaults.buttonColors(ClodyTheme.colors.mainYellow) + colors = ButtonDefaults.buttonColors(ClodyTheme.colors.mainYellow), ) { Text( text = stringResource(R.string.failure_screen_refresh_btn), modifier = Modifier.padding(6.dp), color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/LoadingScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/LoadingScreen.kt index 0e55f9ea..4d0a759a 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/LoadingScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/LoadingScreen.kt @@ -14,17 +14,17 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun LoadingScreen( - backgroundColor: Color = ClodyTheme.colors.white + backgroundColor: Color = ClodyTheme.colors.white, ) { Box( modifier = Modifier .fillMaxSize() .background(backgroundColor), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { CircularProgressIndicator( modifier = Modifier.wrapContentSize(Alignment.Center), - color = ClodyTheme.colors.mainYellow + color = ClodyTheme.colors.mainYellow, ) } } @@ -34,4 +34,3 @@ fun LoadingScreen( fun LoadingScreenPreview() { LoadingScreen() } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/ClodyBottomSheet.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/ClodyBottomSheet.kt index d225238a..bf15669c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/ClodyBottomSheet.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/ClodyBottomSheet.kt @@ -36,7 +36,7 @@ fun ClodyBottomSheet( dragHandle = null, contentWindowInsets = { WindowInsets(0.dp, 0.dp, 0.dp, 0.dp) }, modifier = modifier - .navigationBarsPadding() + .navigationBarsPadding(), ) { Box( Modifier @@ -44,7 +44,7 @@ fun ClodyBottomSheet( .wrapContentHeight() .pointerInput(Unit) { detectVerticalDragGestures { _, _ -> } - } + }, ) { content() } @@ -60,6 +60,6 @@ fun ClodyBottomSheet( fun ClodyBottomSheetPreview() { ClodyBottomSheet( content = {}, - onDismissRequest = {} + onDismissRequest = {}, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/DiaryDeleteSheet.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/DiaryDeleteSheet.kt index 8352ed7a..ba5f2b4e 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/DiaryDeleteSheet.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/bottomsheet/DiaryDeleteSheet.kt @@ -9,17 +9,14 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.sopt.clody.R @@ -28,16 +25,16 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun DiaryDeleteSheet( onDismiss: () -> Unit, - showDiaryDeleteDialog: () -> Unit + showDiaryDeleteDialog: () -> Unit, ) { ClodyBottomSheet( onDismissRequest = onDismiss, content = { DiaryDeleteBottomSheetItem( onDismiss = onDismiss, - showDiaryDeleteDialog = showDiaryDeleteDialog + showDiaryDeleteDialog = showDiaryDeleteDialog, ) - } + }, ) } @@ -51,7 +48,7 @@ fun DiaryDeleteBottomSheetItem( .fillMaxWidth() .background(ClodyTheme.colors.white) .padding(vertical = 20.dp), - verticalArrangement = Arrangement.Top + verticalArrangement = Arrangement.Top, ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -63,20 +60,20 @@ fun DiaryDeleteBottomSheetItem( showDiaryDeleteDialog() }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ) - .padding(start = 24.dp) + .padding(start = 24.dp), ) { Image( painter = painterResource(id = R.drawable.ic_bottomsheet_trash), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.width(8.dp)) Text( text = "삭제하기", style = ClodyTheme.typography.body4SemiBold, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } Spacer(modifier = Modifier.navigationBarsPadding()) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyButton.kt index 3156e15f..accd545d 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyButton.kt @@ -16,7 +16,7 @@ fun ClodyButton( onClick: () -> Unit, text: String, enabled: Boolean, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { val backgroundColor = if (enabled) ClodyTheme.colors.mainYellow else ClodyTheme.colors.lightYellow val contentColor = if (enabled) ClodyTheme.colors.gray01 else ClodyTheme.colors.gray06 @@ -27,17 +27,17 @@ fun ClodyButton( containerColor = backgroundColor, contentColor = contentColor, disabledContainerColor = ClodyTheme.colors.lightYellow, - disabledContentColor = ClodyTheme.colors.gray06 + disabledContentColor = ClodyTheme.colors.gray06, ), shape = RoundedCornerShape(10.dp), enabled = enabled, modifier = modifier - .height(50.dp) + .height(50.dp), ) { Text( text = text, color = contentColor, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) } } @@ -48,6 +48,6 @@ fun ClodyButtonPreview() { ClodyButton( onClick = {}, text = "클로디 버튼", - enabled = true + enabled = true, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyReplyButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyReplyButton.kt index 1299a358..8386a21f 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyReplyButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/button/ClodyReplyButton.kt @@ -16,7 +16,7 @@ fun ClodyReplyButton( onClick: () -> Unit, text: String, enabled: Boolean, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { val backgroundColor = if (enabled) ClodyTheme.colors.gray02 else ClodyTheme.colors.gray02 val contentColor = if (enabled) ClodyTheme.colors.white else ClodyTheme.colors.white @@ -27,17 +27,17 @@ fun ClodyReplyButton( containerColor = backgroundColor, contentColor = contentColor, disabledContainerColor = ClodyTheme.colors.gray07, - disabledContentColor = ClodyTheme.colors.gray04 + disabledContentColor = ClodyTheme.colors.gray04, ), shape = RoundedCornerShape(10.dp), enabled = enabled, modifier = modifier - .height(50.dp) + .height(50.dp), ) { Text( text = text, color = contentColor, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) } } @@ -48,6 +48,6 @@ fun ClodyReplyButtonPreview() { ClodyReplyButton( onClick = {}, text = "클로디 버튼", - enabled = true + enabled = true, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/ClodyDialog.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/ClodyDialog.kt index 1ff0b841..6d45a195 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/ClodyDialog.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/ClodyDialog.kt @@ -50,35 +50,34 @@ fun ClodyDialog( onDismissRequest = onDismiss, properties = DialogProperties( dismissOnClickOutside = false, - usePlatformDefaultWidth = false - ) + usePlatformDefaultWidth = false, + ), ) { Box( modifier = Modifier .fillMaxSize() .background(Color.Black.copy(alpha = 0.5f)) .wrapContentSize(Alignment.Center) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Card( shape = RoundedCornerShape(12.dp), colors = CardDefaults.cardColors(containerColor = ClodyTheme.colors.white), modifier = Modifier .fillMaxSize() - .wrapContentHeight() + .wrapContentHeight(), ) { Column( modifier = Modifier .padding(28.dp), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { - Spacer(modifier = Modifier.height(8.dp)) Text( text = titleMassage, - style = ClodyTheme.typography.body1SemiBold + style = ClodyTheme.typography.body1SemiBold, ) Spacer(modifier = Modifier.height(8.dp)) @@ -87,14 +86,14 @@ fun ClodyDialog( text = descriptionMassage, color = ClodyTheme.colors.gray04, textAlign = TextAlign.Center, - style = ClodyTheme.typography.body3Regular + style = ClodyTheme.typography.body3Regular, ) Spacer(modifier = Modifier.height(32.dp)) Row( modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Button( onClick = { @@ -107,14 +106,14 @@ fun ClodyDialog( .weight(1f) .background( color = ClodyTheme.colors.gray07, - shape = RoundedCornerShape(size = 8.dp) + shape = RoundedCornerShape(size = 8.dp), ), - colors = ButtonDefaults.buttonColors(ClodyTheme.colors.gray07) + colors = ButtonDefaults.buttonColors(ClodyTheme.colors.gray07), ) { Text( text = dismissOption, color = ClodyTheme.colors.gray04, - style = ClodyTheme.typography.body3SemiBold + style = ClodyTheme.typography.body3SemiBold, ) } @@ -131,14 +130,14 @@ fun ClodyDialog( .weight(1f) .background( color = confirmButtonColor, - shape = RoundedCornerShape(size = 8.dp) + shape = RoundedCornerShape(size = 8.dp), ), - colors = ButtonDefaults.buttonColors(confirmButtonColor) + colors = ButtonDefaults.buttonColors(confirmButtonColor), ) { Text( text = confirmOption, color = confirmButtonTextColor, - style = ClodyTheme.typography.body3SemiBold + style = ClodyTheme.typography.body3SemiBold, ) } } @@ -147,4 +146,3 @@ fun ClodyDialog( } } } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/FailureDialog.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/FailureDialog.kt index cc3417f7..6ff6a936 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/FailureDialog.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/dialog/FailureDialog.kt @@ -2,21 +2,15 @@ package com.sopt.clody.presentation.ui.component.dialog import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -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.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button -import androidx.compose.material3.ButtonColors import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -39,44 +33,44 @@ import com.sopt.clody.ui.theme.ClodyTheme fun FailureDialog( message: String = "일시적인 오류가 발생했어요.\n잠시 후 다시 시도해주세요.", confirmAction: () -> Unit = {}, - onDismiss: () -> Unit = {} + onDismiss: () -> Unit = {}, ) { Dialog( onDismissRequest = onDismiss, properties = DialogProperties( dismissOnClickOutside = false, - usePlatformDefaultWidth = false - ) + usePlatformDefaultWidth = false, + ), ) { Box( modifier = Modifier .fillMaxSize() .background(Color.Black.copy(alpha = 0.5f)) .wrapContentSize(Alignment.Center) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Card( shape = RoundedCornerShape(12.dp), colors = CardDefaults.cardColors(containerColor = ClodyTheme.colors.white), modifier = Modifier - .wrapContentHeight() + .wrapContentHeight(), ) { Column( modifier = Modifier .padding(20.dp), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Image( painter = painterResource(id = R.drawable.ic_failure_dialog), contentDescription = null, - modifier = Modifier.padding(bottom = 6.dp) + modifier = Modifier.padding(bottom = 6.dp), ) Text( text = message, modifier = Modifier.padding(bottom = 30.dp), color = ClodyTheme.colors.gray04, textAlign = TextAlign.Center, - style = ClodyTheme.typography.body3Medium + style = ClodyTheme.typography.body3Medium, ) Button( onClick = { @@ -86,12 +80,12 @@ fun FailureDialog( modifier = Modifier .fillMaxWidth(), shape = RoundedCornerShape(10.dp), - colors = ButtonDefaults.buttonColors(ClodyTheme.colors.mainYellow) + colors = ButtonDefaults.buttonColors(ClodyTheme.colors.mainYellow), ) { Text( text = stringResource(R.string.failure_dialog_confirm_btn), color = ClodyTheme.colors.gray02, - style = ClodyTheme.typography.body3SemiBold + style = ClodyTheme.typography.body3SemiBold, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/popup/ClodyPopupBottomSheet.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/popup/ClodyPopupBottomSheet.kt index fe164f5c..afb0ea18 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/popup/ClodyPopupBottomSheet.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/popup/ClodyPopupBottomSheet.kt @@ -28,7 +28,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun ClodyPopupBottomSheet( onDismissRequest: () -> Unit, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { var isVisible by remember { mutableStateOf(true) } @@ -37,38 +37,38 @@ fun ClodyPopupBottomSheet( Modifier .fillMaxSize() .background(Color(0x70000000)) - .clickable(onClick = { isVisible = false; onDismissRequest() }) + .clickable(onClick = { isVisible = false; onDismissRequest() }), ) { - Popup( // 팝업 컴포넌트 + Popup( // 팝업 컴포넌트 alignment = Alignment.BottomCenter, onDismissRequest = { isVisible = false; onDismissRequest() }, properties = PopupProperties( focusable = true, dismissOnBackPress = true, dismissOnClickOutside = true, - excludeFromSystemGesture = false - ) + excludeFromSystemGesture = false, + ), ) { AnimatedVisibility( visible = isVisible, enter = slideInVertically( initialOffsetY = { it }, - animationSpec = tween(durationMillis = 300) + animationSpec = tween(durationMillis = 300), ), exit = slideOutVertically( targetOffsetY = { it }, - animationSpec = tween(durationMillis = 300) - ) + animationSpec = tween(durationMillis = 300), + ), ) { - Surface( // 팝업의 내용을 담을 서피스 + Surface( // 팝업의 내용을 담을 서피스 modifier = Modifier .fillMaxWidth() .wrapContentHeight() .align(Alignment.BottomCenter), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), - color = ClodyTheme.colors.white + color = ClodyTheme.colors.white, ) { - content() // 팝업 내부에 제공된 컴포저블 콘텐츠를 렌더링 + content() // 팝업 내부에 제공된 컴포저블 콘텐츠를 렌더링 } } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/ClodyPicker.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/ClodyPicker.kt index 44747221..ef43d19d 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/ClodyPicker.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/ClodyPicker.kt @@ -23,7 +23,6 @@ import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.Preview import com.sopt.clody.ui.theme.ClodyTheme import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map @@ -37,7 +36,7 @@ fun ClodyPicker( startIndex: Int = 0, visibleItemsCount: Int, textModifier: Modifier = Modifier, - infiniteScroll: Boolean = true + infiniteScroll: Boolean = true, ) { val visibleItemsMiddle = visibleItemsCount / 2 val listScrollCount = if (infiniteScroll) Integer.MAX_VALUE else items.size + visibleItemsMiddle * 2 @@ -94,7 +93,7 @@ fun ClodyPicker( .drawWithContent { drawContent() drawRect(fadingEdgeGradient, size = size) - } + }, ) { items(listScrollCount) { index -> if (!infiniteScroll && (index < visibleItemsMiddle || index >= items.size + visibleItemsMiddle)) { @@ -103,7 +102,7 @@ fun ClodyPicker( maxLines = 1, overflow = TextOverflow.Ellipsis, style = ClodyTheme.typography.head3Medium.copy(color = ClodyTheme.colors.gray01), - modifier = Modifier.height(itemHeightDp) + modifier = Modifier.height(itemHeightDp), ) } else { Text( @@ -113,7 +112,7 @@ fun ClodyPicker( style = ClodyTheme.typography.head3Medium.copy(color = ClodyTheme.colors.gray01), modifier = Modifier .onSizeChanged { size -> itemHeightPixels.intValue = size.height } - .then(textModifier) + .then(textModifier), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPicker.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPicker.kt index d27fc8d6..9cd81c01 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPicker.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPicker.kt @@ -33,14 +33,14 @@ fun YearMonthPicker( onDismissRequest: () -> Unit, selectedYear: Int, selectedMonth: Int, - onYearMonthSelected: (Int, Int) -> Unit + onYearMonthSelected: (Int, Int) -> Unit, ) { Surface( modifier = Modifier .fillMaxWidth() .wrapContentHeight(), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), - color = ClodyTheme.colors.white + color = ClodyTheme.colors.white, ) { Column( horizontalAlignment = Alignment.CenterHorizontally, @@ -48,26 +48,26 @@ fun YearMonthPicker( modifier = Modifier .wrapContentSize() .background(color = ClodyTheme.colors.white) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Box( modifier = Modifier .fillMaxWidth() - .padding(top = 16.dp, bottom = 30.dp) + .padding(top = 16.dp, bottom = 30.dp), ) { Text( text = "다른 날짜 보기", style = ClodyTheme.typography.body2SemiBold, color = ClodyTheme.colors.gray01, - modifier = Modifier.align(Alignment.Center) + modifier = Modifier.align(Alignment.Center), ) IconButton( onClick = onDismissRequest, modifier = Modifier .size(24.dp) - .align(Alignment.CenterEnd) + .align(Alignment.CenterEnd), ) { Image( painter = painterResource(id = R.drawable.ic_picker_dismiss), @@ -87,19 +87,19 @@ fun YearMonthPicker( Box( modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Box( modifier = Modifier .fillMaxWidth() .align(Alignment.Center) .height(35.dp) - .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)) + .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)), ) Row( modifier = Modifier .fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Spacer(modifier = Modifier.weight(1f)) YearMonthPickerItem( @@ -137,7 +137,7 @@ fun YearMonthPicker( enabled = true, modifier = Modifier .fillMaxWidth() - .padding(top = 30.dp, bottom = 28.dp) + .padding(top = 30.dp, bottom = 28.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPickerItem.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPickerItem.kt index 1e59f70a..813f6ac7 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPickerItem.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/timepicker/YearMonthPickerItem.kt @@ -37,7 +37,7 @@ fun YearMonthPickerItem( startIndex: Int = 0, visibleItemsCount: Int, textModifier: Modifier = Modifier, - infiniteScroll: Boolean = true + infiniteScroll: Boolean = true, ) { val visibleItemsMiddle = visibleItemsCount / 2 val emptyItems = List(visibleItemsMiddle) { "" } @@ -96,7 +96,7 @@ fun YearMonthPickerItem( .drawWithContent { drawContent() drawRect(fadingEdgeGradient, size = size) - } + }, ) { items(listScrollCount) { index -> Text( @@ -106,14 +106,13 @@ fun YearMonthPickerItem( style = ClodyTheme.typography.head3Medium.copy(color = ClodyTheme.colors.gray01), modifier = Modifier .onSizeChanged { size -> itemHeightPixels.intValue = size.height } - .then(textModifier) + .then(textModifier), ) } } } } - @Preview(showBackground = true) @Composable fun PreviewPicker() { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/component/toast/ClodyToastMessage.kt b/app/src/main/java/com/sopt/clody/presentation/ui/component/toast/ClodyToastMessage.kt index 60a23177..ff1fbf64 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/component/toast/ClodyToastMessage.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/component/toast/ClodyToastMessage.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -23,7 +22,6 @@ import androidx.compose.ui.unit.dp import com.sopt.clody.ui.theme.ClodyTheme import kotlinx.coroutines.delay - @Composable fun ClodyToastMessage( message: String, @@ -32,7 +30,7 @@ fun ClodyToastMessage( contentColor: Color, durationMillis: Long, onDismiss: () -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { LaunchedEffect(Unit) { delay(durationMillis) @@ -43,19 +41,19 @@ fun ClodyToastMessage( modifier = modifier .wrapContentHeight() .background(color = backgroundColor, shape = RoundedCornerShape(28.dp)) - .padding(horizontal = 22.dp, vertical = 16.dp) + .padding(horizontal = 22.dp, vertical = 16.dp), ) { Row(verticalAlignment = Alignment.CenterVertically) { Image( painter = painterResource(id = iconResId), contentDescription = null, - modifier = Modifier.size(24.dp) + modifier = Modifier.size(24.dp), ) Spacer(modifier = Modifier.width(8.dp)) Text( text = message, color = contentColor, - style = ClodyTheme.typography.body3SemiBold + style = ClodyTheme.typography.body3SemiBold, ) } } @@ -65,12 +63,12 @@ fun ClodyToastMessage( @Composable fun PreviewCustomToastMessage() { ClodyToastMessage( - message = "토스트 메시지", - iconResId = 0, - backgroundColor = Color(0xFF000000), - contentColor = Color(0xFFFFFFFF), - durationMillis = 3000, - onDismiss = {}, - modifier = Modifier - ) + message = "토스트 메시지", + iconResId = 0, + backgroundColor = Color(0xFF000000), + contentColor = Color(0xFFFFFFFF), + durationMillis = 3000, + onDismiss = {}, + modifier = Modifier, + ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCard.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCard.kt index 0709a52a..63e10649 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCard.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCard.kt @@ -59,40 +59,40 @@ fun DailyDiaryCard( .padding(horizontal = 24.dp) .padding(bottom = 14.dp) .wrapContentSize(align = Alignment.TopStart), - colors = CardDefaults.cardColors(containerColor = ClodyTheme.colors.white) + colors = CardDefaults.cardColors(containerColor = ClodyTheme.colors.white), ) { Column( modifier = Modifier .fillMaxSize() - .padding(top = 20.dp) + .padding(top = 20.dp), ) { Row( modifier = Modifier .fillMaxWidth() .wrapContentHeight() .padding(start = 20.dp, end = 12.dp, bottom = 18.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Image( painter = painterResource(id = iconRes), contentDescription = "clover", modifier = Modifier - .padding(end = 6.dp) + .padding(end = 6.dp), ) Row( - verticalAlignment = Alignment.Bottom + verticalAlignment = Alignment.Bottom, ) { Text( text = stringResource(R.string.diarylist_daily_diary_day, day), modifier = Modifier .padding(end = 2.dp), color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) Text( text = stringResource(R.string.diarylist_daily_diary_day_of_week, dayOfWeek), color = ClodyTheme.colors.gray04, - style = ClodyTheme.typography.body4Medium + style = ClodyTheme.typography.body4Medium, ) } Spacer(modifier = Modifier.weight(1f)) @@ -106,7 +106,7 @@ fun DailyDiaryCard( DiaryDeleteButton( diaryListViewModel = diaryListViewModel, dailyDiary = dailyDiary, - showDiaryDeleteBottomSheet = showDiaryDeleteBottomSheet + showDiaryDeleteBottomSheet = showDiaryDeleteBottomSheet, ) } DailyDiaryCardContent(dailyDiary.diary.map { it.content }) @@ -123,7 +123,7 @@ fun ReplyDiaryButton( onClickReplyDiary: (Int, Int, Int, String) -> Unit, ) { Box( - contentAlignment = Alignment.TopEnd + contentAlignment = Alignment.TopEnd, ) { Button( onClick = { onClickReplyDiary(year, month, day, dailyDiary.replyStatus) }, @@ -135,7 +135,7 @@ fun ReplyDiaryButton( containerColor = ClodyTheme.colors.lightBlue, contentColor = ClodyTheme.colors.blue, disabledContainerColor = ClodyTheme.colors.gray08, - disabledContentColor = ClodyTheme.colors.gray06 + disabledContentColor = ClodyTheme.colors.gray06, ), shape = RoundedCornerShape(size = 9.dp), contentPadding = PaddingValues(0.dp), @@ -162,7 +162,7 @@ fun ReplyDiaryButton( fun DiaryDeleteButton( diaryListViewModel: DiaryListViewModel, dailyDiary: MonthlyDiaryResponseDto.DailyDiary, - showDiaryDeleteBottomSheet: () -> Unit + showDiaryDeleteBottomSheet: () -> Unit, ) { Image( painter = painterResource(id = R.drawable.ic_listview_kebab_menu), @@ -174,6 +174,6 @@ fun DiaryDeleteButton( diaryListViewModel.setSelectedDiaryDate(dailyDiary.date) showDiaryDeleteBottomSheet() }, - ) + ), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCardContent.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCardContent.kt index 9a37afea..04d9721b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCardContent.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DailyDiaryCardContent.kt @@ -14,28 +14,28 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun DailyDiaryCardContent( - diary: List + diary: List, ) { Column( modifier = Modifier .fillMaxWidth() .padding(horizontal = 20.dp) - .padding(bottom = 2.dp) + .padding(bottom = 2.dp), ) { diary.forEachIndexed { index, content -> Row( - modifier = Modifier.padding(bottom = 24.dp) + modifier = Modifier.padding(bottom = 24.dp), ) { Text( text = "${index + 1}.", color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body3SemiBold + style = ClodyTheme.typography.body3SemiBold, ) Spacer(modifier = Modifier.width(10.dp)) Text( text = content, color = ClodyTheme.colors.gray03, - style = ClodyTheme.typography.body3Medium + style = ClodyTheme.typography.body3Medium, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DiaryListTopAppBar.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DiaryListTopAppBar.kt index 5f1614a4..e6a80526 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DiaryListTopAppBar.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/DiaryListTopAppBar.kt @@ -45,28 +45,29 @@ fun DiaryListTopAppBar( .clickable( onClick = showYearMonthPicker, indication = null, - interactionSource = remember { MutableInteractionSource() }), - verticalAlignment = Alignment.CenterVertically + interactionSource = remember { MutableInteractionSource() }, + ), + verticalAlignment = Alignment.CenterVertically, ) { Text( text = stringResource(R.string.diarylist_selected_year_month, selectedYear, selectedMonth), color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.head4 + style = ClodyTheme.typography.head4, ) Image( painter = painterResource(id = R.drawable.ic_listview_arrow_down), - contentDescription = null + contentDescription = null, ) } }, navigationIcon = { IconButton( onClick = onClickCalendar, - modifier = Modifier.padding(start = 8.dp) + modifier = Modifier.padding(start = 8.dp), ) { Image( painter = painterResource(id = R.drawable.ic_listview_calendar), - contentDescription = "go to calenderView" + contentDescription = "go to calenderView", ) } }, @@ -77,7 +78,7 @@ fun DiaryListTopAppBar( modifier = Modifier .fillMaxWidth() .height(1.dp) - .background(ClodyTheme.colors.gray07) + .background(ClodyTheme.colors.gray07), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/EmptyDiaryList.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/EmptyDiaryList.kt index 6886b588..fc9c0c3c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/EmptyDiaryList.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/EmptyDiaryList.kt @@ -15,13 +15,13 @@ import com.sopt.clody.ui.theme.ClodyTheme fun EmptyDiaryList() { Box( modifier = Modifier.fillMaxSize(), - contentAlignment = Alignment.Center - ){ + contentAlignment = Alignment.Center, + ) { Text( - text= stringResource(R.string.diary_list_empty_diary_list), + text = stringResource(R.string.diary_list_empty_diary_list), color = ClodyTheme.colors.gray06, textAlign = TextAlign.Center, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/MonthlyDiaryList.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/MonthlyDiaryList.kt index 9801c77a..49f8bdbc 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/MonthlyDiaryList.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/component/MonthlyDiaryList.kt @@ -24,7 +24,7 @@ fun MonthlyDiaryList( modifier = Modifier .fillMaxSize() .padding(paddingValues) - .padding(top = 18.dp) + .padding(top = 18.dp), ) { itemsIndexed(items = diaries) { index, dailyDiary -> val date = dailyDiary.date.split("-") @@ -41,7 +41,7 @@ fun MonthlyDiaryList( day = day, dayOfWeek = dayOfWeek, showDiaryDeleteBottomSheet = showDiaryDeleteBottomSheet, - onClickReplyDiary = onClickReplyDiary + onClickReplyDiary = onClickReplyDiary, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavGraph.kt index 20078918..46ef810d 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavGraph.kt @@ -12,10 +12,10 @@ fun NavGraphBuilder.diaryListNavGraph( ) { composable( route = "diary_list/{selectedYearFromHome}/{selectedMonthFromHome}", - arguments = listOf ( + arguments = listOf( navArgument("selectedYearFromHome") { type = NavType.IntType }, - navArgument("selectedMonthFromHome") { type = NavType.IntType } - ) + navArgument("selectedMonthFromHome") { type = NavType.IntType }, + ), ) { backStackEntry -> val currentDate = LocalDate.now() val selectedYearFromHome = backStackEntry.arguments?.getInt("selectedYearFromHome") ?: currentDate.year @@ -23,7 +23,7 @@ fun NavGraphBuilder.diaryListNavGraph( DiaryListRoute( navigator = diaryListNavigator, selectedYearFromHome = selectedYearFromHome, - selectedMonthFromHome = selectedMonthFromHome + selectedMonthFromHome = selectedMonthFromHome, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavigator.kt index 8ddc5409..c3546037 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/navigation/DiaryListNavigator.kt @@ -3,7 +3,7 @@ package com.sopt.clody.presentation.ui.diarylist.navigation import androidx.navigation.NavController class DiaryListNavigator( - val navController: NavController + val navController: NavController, ) { fun navigateHome(selectedYear: Int, selectedMonth: Int) { navController.navigate("home/$selectedYear/$selectedMonth") diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListScreen.kt index bc4a33bc..086e56a0 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListScreen.kt @@ -32,7 +32,7 @@ fun DiaryListRoute( navigator: DiaryListNavigator, diaryListViewModel: DiaryListViewModel = hiltViewModel(), selectedYearFromHome: Int, - selectedMonthFromHome: Int + selectedMonthFromHome: Int, ) { var selectedYearInDiaryList by remember { mutableIntStateOf(selectedYearFromHome) } var selectedMonthInDiaryList by remember { mutableIntStateOf(selectedMonthFromHome) } @@ -85,7 +85,7 @@ fun DiaryListRoute( onClickReplyDiary = { year, month, day, replyStatus -> navigator.navigateReplyLoading(year, month, day, replyStatus) AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.LIST_REPLY) - } + }, ) } @@ -125,7 +125,6 @@ fun DiaryListScreen( content = { innerPadding -> when (diaryListState) { is DiaryListState.Idle -> { - } is DiaryListState.Loading -> { @@ -133,14 +132,15 @@ fun DiaryListScreen( } is DiaryListState.Success -> { - if (diaryListState.data.diaries.isEmpty()) EmptyDiaryList() - else { + if (diaryListState.data.diaries.isEmpty()) { + EmptyDiaryList() + } else { MonthlyDiaryList( paddingValues = innerPadding, diaryListViewModel = diaryListViewModel, diaries = diaryListState.data.diaries, showDiaryDeleteBottomSheet = showDiaryDeleteBottomSheet, - onClickReplyDiary = onClickReplyDiary + onClickReplyDiary = onClickReplyDiary, ) } } @@ -148,22 +148,27 @@ fun DiaryListScreen( is DiaryListState.Failure -> { FailureScreen( message = diaryListState.errorMessage, - confirmAction = { diaryListViewModel.fetchMonthlyDiary(selectedYearInDiaryList, selectedMonthInDiaryList) } + confirmAction = { + diaryListViewModel.fetchMonthlyDiary( + selectedYearInDiaryList, + selectedMonthInDiaryList, + ) + }, ) } } - } + }, ) if (yearMonthPickerState) { ClodyPopupBottomSheet( - onDismissRequest = dismissYearMonthPicker + onDismissRequest = dismissYearMonthPicker, ) { YearMonthPicker( onDismissRequest = dismissYearMonthPicker, selectedYear = selectedYearInDiaryList, selectedMonth = selectedMonthInDiaryList, - onYearMonthSelected = updateYearAndMonth + onYearMonthSelected = updateYearAndMonth, ) } } @@ -171,7 +176,7 @@ fun DiaryListScreen( if (diaryDeleteBottomSheetState) { DiaryDeleteSheet( onDismiss = dismissDiaryDeleteBottomSheet, - showDiaryDeleteDialog = showDiaryDeleteDialog + showDiaryDeleteDialog = showDiaryDeleteDialog, ) } @@ -190,14 +195,14 @@ fun DiaryListScreen( dismissDiaryDeleteDialog() }, confirmButtonColor = ClodyTheme.colors.red, - confirmButtonTextColor = ClodyTheme.colors.white + confirmButtonTextColor = ClodyTheme.colors.white, ) } if (showDiaryDeleteFailureDialog) { FailureDialog( message = failureDialogMessage, - onDismiss = { diaryListViewModel.dismissDiaryDeleteFailureDialog() } + onDismiss = { diaryListViewModel.dismissDiaryDeleteFailureDialog() }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListViewModel.kt index 229144b1..5d5354b4 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/diarylist/screen/DiaryListViewModel.kt @@ -17,7 +17,7 @@ import javax.inject.Inject @HiltViewModel class DiaryListViewModel @Inject constructor( private val diaryRepository: DiaryRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _diaryListState = MutableStateFlow(DiaryListState.Idle) @@ -64,7 +64,7 @@ class DiaryListViewModel @Inject constructor( } DiaryListState.Failure(errorMessage) } - } + }, ) } } @@ -100,7 +100,7 @@ class DiaryListViewModel @Inject constructor( } _showDiaryDeleteFailureDialog.value = true DiaryDeleteState.Failure(_failureDialogMessage.value) - } + }, ) } } @@ -114,6 +114,6 @@ class DiaryListViewModel @Inject constructor( val year: Int = 0, val month: Int = 0, val day: Int = 0, - val dayOfWeek: String = "" + val dayOfWeek: String = "", ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/ClodyCalendar.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/ClodyCalendar.kt index 4158baeb..a47b4d40 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/ClodyCalendar.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/ClodyCalendar.kt @@ -31,7 +31,7 @@ fun ClodyCalendar( onDateSelected: (LocalDate) -> Unit, diaries: List, homeViewModel: HomeViewModel, - onShowDiaryDeleteStateChange: (Boolean) -> Unit + onShowDiaryDeleteStateChange: (Boolean) -> Unit, ) { val currentMonth = YearMonth.of(selectedYear, selectedMonth) val dateList = remember(currentMonth.year, currentMonth.monthValue) { @@ -44,7 +44,7 @@ fun ClodyCalendar( Column( modifier = Modifier .fillMaxSize(), - verticalArrangement = Arrangement.spacedBy(16.dp) + verticalArrangement = Arrangement.spacedBy(16.dp), ) { MonthlyItem( dateList = dateList, @@ -62,7 +62,6 @@ fun ClodyCalendar( when (val state = dailyDiariesUiState) { is DailyDiariesState.Idle -> { - } is DailyDiariesState.Loading -> { @@ -74,7 +73,7 @@ fun ClodyCalendar( date = selectedDate, dayOfWeek = initialDayOfWeek, dailyDiaries = state.data.diaries, - onShowDiaryDeleteStateChange = onShowDiaryDeleteStateChange + onShowDiaryDeleteStateChange = onShowDiaryDeleteStateChange, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DailyDiaryListItem.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DailyDiaryListItem.kt index 738aaa60..cf428318 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DailyDiaryListItem.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DailyDiaryListItem.kt @@ -31,31 +31,31 @@ fun DailyDiaryListItem( date: LocalDate, dayOfWeek: DayOfWeek, dailyDiaries: List, - onShowDiaryDeleteStateChange: (Boolean) -> Unit + onShowDiaryDeleteStateChange: (Boolean) -> Unit, ) { Column( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp), - verticalArrangement = Arrangement.spacedBy(10.dp) + verticalArrangement = Arrangement.spacedBy(10.dp), ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() - .padding(8.dp) + .padding(8.dp), ) { Text( text = "${date.month.value}.${date.dayOfMonth}", style = ClodyTheme.typography.body3Medium, color = ClodyTheme.colors.gray04, - modifier = Modifier.padding(vertical = 3.dp) + modifier = Modifier.padding(vertical = 3.dp), ) Text( text = "${dayOfWeek.toKoreanShortLabel()}요일", style = ClodyTheme.typography.body2Medium, color = ClodyTheme.colors.gray02, - modifier = Modifier.padding(horizontal = 6.dp, vertical = 2.dp) + modifier = Modifier.padding(horizontal = 6.dp, vertical = 2.dp), ) Spacer(modifier = Modifier.weight(1f)) Image( @@ -63,7 +63,7 @@ fun DailyDiaryListItem( contentDescription = "go to delete", modifier = Modifier .clip(RoundedCornerShape(12.dp)) - .clickable(onClick = { onShowDiaryDeleteStateChange(true) }) + .clickable(onClick = { onShowDiaryDeleteStateChange(true) }), ) } if (dailyDiaries.isEmpty()) { @@ -71,7 +71,7 @@ fun DailyDiaryListItem( contentAlignment = Alignment.Center, modifier = Modifier .fillMaxSize() - .padding(vertical = 44.dp) + .padding(vertical = 44.dp), ) { Text( text = "아직 감사 일기가 없어요!", @@ -84,7 +84,7 @@ fun DailyDiaryListItem( dailyDiaries.forEachIndexed { index, diary -> DiaryItem( index = index + 1, - text = diary.content + text = diary.content, ) } } @@ -94,18 +94,18 @@ fun DailyDiaryListItem( @Composable fun DiaryItem( index: Int, - text: String + text: String, ) { Column( modifier = Modifier .fillMaxWidth() .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(10.dp)) - .padding(18.dp) + .padding(18.dp), ) { Text( text = "$index. $text", style = ClodyTheme.typography.body2Medium, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DayItem.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DayItem.kt index 75b67448..30e3d17b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DayItem.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/DayItem.kt @@ -45,16 +45,16 @@ fun DayItem( modifier = modifier .padding(8.dp) .clip(RoundedCornerShape(12.dp)) - .clickable { onDayClick(date) } + .clickable { onDayClick(date) }, ) { Box( modifier = Modifier .size(48.dp), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Image( painter = painterResource(id = iconRes), - contentDescription = "Diary clover icon" + contentDescription = "Diary clover icon", ) if (diaryData.replyStatus == "READY_NOT_READ" && diaryData.diaryCount > 0) { Image( @@ -63,7 +63,7 @@ fun DayItem( modifier = Modifier .align(Alignment.BottomEnd) .padding(end = 0.dp, bottom = 8.dp) - .size(12.dp) + .size(12.dp), ) } } @@ -72,24 +72,21 @@ fun DayItem( modifier = Modifier .background( if (isSelected) Color.Black else Color.Transparent, - shape = RoundedCornerShape(12.dp) + shape = RoundedCornerShape(12.dp), ) - .padding(horizontal = 6.dp) + .padding(horizontal = 6.dp), ) { Text( text = date.dayOfMonth.toString(), - style = ClodyTheme.typography.detail1SemiBold.copy - ( + style = ClodyTheme.typography.detail1SemiBold.copy( color = when { isSelected -> ClodyTheme.colors.white isToday -> ClodyTheme.colors.gray02 else -> ClodyTheme.colors.gray05 - } + }, ), - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) } } } - - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/HorizontalDivider.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/HorizontalDivider.kt index 153be33a..13855dd9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/HorizontalDivider.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/HorizontalDivider.kt @@ -15,12 +15,12 @@ import com.sopt.clody.ui.theme.ClodyTheme fun HorizontalDivider( color: Color = ClodyTheme.colors.gray08, thickness: Dp = 6.dp, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { Box( modifier = modifier .fillMaxWidth() .height(thickness) - .background(color) + .background(color), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/MonthlyItem.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/MonthlyItem.kt index 4a1760c3..90452006 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/MonthlyItem.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/MonthlyItem.kt @@ -26,7 +26,7 @@ fun MonthlyItem( dateList: List, selectedDate: LocalDate, onDayClick: (LocalDate) -> Unit, - getDiaryDataForDate: (LocalDate) -> MonthlyCalendarResponseDto.Diary? + getDiaryDataForDate: (LocalDate) -> MonthlyCalendarResponseDto.Diary?, ) { val itemWidth = (LocalConfiguration.current.screenWidthDp.dp - 40.dp) / 7 @@ -44,7 +44,7 @@ fun MonthlyItem( ) { Column( horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { val firstDate = dateList.firstOrNull()?.let { LocalDate.of(it.year, it.month, it.date) } val firstDayOfWeek = firstDate?.dayOfWeek ?: DayOfWeek.SUNDAY @@ -55,7 +55,7 @@ fun MonthlyItem( paddedDateList.chunked(7).forEach { weekDates -> Row( modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween + horizontalArrangement = Arrangement.SpaceBetween, ) { weekDates.forEach { date -> Box( @@ -77,7 +77,7 @@ fun MonthlyItem( }, isSelected = localDate == selectedDate, diaryData = diaryData, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) } } @@ -88,7 +88,7 @@ fun MonthlyItem( Box( modifier = Modifier .width(itemWidth) - .padding(vertical = 2.dp) + .padding(vertical = 2.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/WeekHeader.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/WeekHeader.kt index d318a4e3..ba985f67 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/WeekHeader.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/calendar/component/WeekHeader.kt @@ -22,7 +22,7 @@ fun WeekHeader(modifier: Modifier = Modifier, itemWidth: Dp) { val itemWidth = (LocalConfiguration.current.screenWidthDp.dp - 40.dp) / 7 Row( horizontalArrangement = Arrangement.SpaceBetween, - modifier = modifier.fillMaxWidth() + modifier = modifier.fillMaxWidth(), ) { val weekLabelArray = listOf( DayOfWeek.SUNDAY, @@ -31,7 +31,7 @@ fun WeekHeader(modifier: Modifier = Modifier, itemWidth: Dp) { DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, - DayOfWeek.SATURDAY + DayOfWeek.SATURDAY, ) val koreanWeekLabels = weekLabelArray.map { it.toKoreanShortLabel() } @@ -39,7 +39,7 @@ fun WeekHeader(modifier: Modifier = Modifier, itemWidth: Dp) { koreanWeekLabels.forEach { week -> Box( modifier = Modifier.width(itemWidth), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Text( text = week, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/CloverCount.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/CloverCount.kt index d72e8e3b..d85e720c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/CloverCount.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/CloverCount.kt @@ -15,14 +15,14 @@ import androidx.compose.ui.unit.dp import com.sopt.clody.ui.theme.ClodyTheme @Composable -fun CloverCount(cloverCount:Int) { +fun CloverCount(cloverCount: Int) { val text = "클로버 ${cloverCount}개" Box( modifier = Modifier .fillMaxWidth() .padding(top = 10.dp, bottom = 5.dp, end = 20.dp), - contentAlignment = Alignment.TopEnd + contentAlignment = Alignment.TopEnd, ) { Text( text = text, @@ -32,9 +32,7 @@ fun CloverCount(cloverCount:Int) { .border(9.dp, ClodyTheme.colors.lightGreenBack, shape = RoundedCornerShape(9.dp)) .background(ClodyTheme.colors.lightGreenBack, shape = RoundedCornerShape(9.dp)) .padding(horizontal = 12.dp, vertical = 8.dp), - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) } } - - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/DiaryStateButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/DiaryStateButton.kt index a68cb8db..754f7450 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/DiaryStateButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/DiaryStateButton.kt @@ -22,7 +22,7 @@ fun DiaryStateButton( val today = LocalDate.now() val isAvailableDay = year == today.year && month == today.monthValue && (day == today.dayOfMonth || day == today.dayOfMonth - 1) - val writeDiaryEnabled = diaryCount == 0 && isAvailableDay + val writeDiaryEnabled = diaryCount == 0 && isAvailableDay val writeDiaryDisabled = diaryCount == 0 && !isAvailableDay val checkReplyEnabled = diaryCount != 0 && !isDeleted val checkReplyDisabled = diaryCount != 0 && isDeleted @@ -35,7 +35,7 @@ fun DiaryStateButton( enabled = true, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp) + .padding(horizontal = 16.dp), ) } @@ -46,7 +46,7 @@ fun DiaryStateButton( enabled = false, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp) + .padding(horizontal = 16.dp), ) } @@ -57,7 +57,7 @@ fun DiaryStateButton( enabled = true, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp) + .padding(horizontal = 16.dp), ) } @@ -68,7 +68,7 @@ fun DiaryStateButton( enabled = false, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp) + .padding(horizontal = 16.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/HomeTopAppBar.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/HomeTopAppBar.kt index cb0eb286..264207a8 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/HomeTopAppBar.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/HomeTopAppBar.kt @@ -24,46 +24,47 @@ fun HomeTopAppBar( selectedYear: Int, selectedMonth: Int, ) { - CenterAlignedTopAppBar( title = { Box( modifier = Modifier .padding(start = 16.dp), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { YearAndMonthTitle( - onShowYearMonthPickerStateChange, selectedYear, selectedMonth + onShowYearMonthPickerStateChange, + selectedYear, + selectedMonth, ) } }, navigationIcon = { - IconButton( - onClick = { onClickDiaryList() }, - modifier = Modifier.padding(start = 8.dp) - ) { - Image( - painter = painterResource(id = R.drawable.ic_home_list), - contentDescription = "go to list" - ) - } + IconButton( + onClick = { onClickDiaryList() }, + modifier = Modifier.padding(start = 8.dp), + ) { + Image( + painter = painterResource(id = R.drawable.ic_home_list), + contentDescription = "go to list", + ) + } }, actions = { - IconButton( - onClick = { onClickSetting() }, - modifier = Modifier.padding(end = 8.dp) - ) { - Image( - painter = painterResource(id = R.drawable.ic_home_setting), - contentDescription = "go to setting" - ) - } + IconButton( + onClick = { onClickSetting() }, + modifier = Modifier.padding(end = 8.dp), + ) { + Image( + painter = painterResource(id = R.drawable.ic_home_setting), + contentDescription = "go to setting", + ) + } }, colors = TopAppBarDefaults.topAppBarColors( containerColor = ClodyTheme.colors.white, titleContentColor = ClodyTheme.colors.gray01, navigationIconContentColor = ClodyTheme.colors.gray01, - actionIconContentColor = ClodyTheme.colors.gray01 - ) + actionIconContentColor = ClodyTheme.colors.gray01, + ), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/YearAndMonthTitle.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/YearAndMonthTitle.kt index e6e3ab17..32d9e7bf 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/component/YearAndMonthTitle.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/component/YearAndMonthTitle.kt @@ -20,31 +20,30 @@ import com.sopt.clody.ui.theme.ClodyTheme fun YearAndMonthTitle( onShowYearMonthPickerStateChange: (Boolean) -> Unit, selectedYear: Int, - selectedMonth: Int + selectedMonth: Int, ) { val text = "${selectedYear}년 ${selectedMonth}월" Column { Row( modifier = Modifier.clickable( - onClick = { onShowYearMonthPickerStateChange(true)}, + onClick = { onShowYearMonthPickerStateChange(true) }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Text( text = text, style = ClodyTheme.typography.head4, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) Image( painter = painterResource(id = R.drawable.ic_home_under_arrow), contentDescription = "choose month", modifier = Modifier - .padding(horizontal = 6.dp, vertical = 6.dp) + .padding(horizontal = 6.dp, vertical = 6.dp), ) } } } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/model/CalendarDateData.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/model/CalendarDateData.kt index 59a73504..6264ba52 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/model/CalendarDateData.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/model/CalendarDateData.kt @@ -5,7 +5,7 @@ import java.time.YearMonth data class CalendarDate( val date: Int, val month: Int, - val year: Int + val year: Int, ) fun daysInMonth(month: Int, year: Int): Int { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/model/DiaryDateData.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/model/DiaryDateData.kt index 23d990b1..55585e33 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/model/DiaryDateData.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/model/DiaryDateData.kt @@ -4,5 +4,5 @@ import java.time.LocalDate data class DiaryDateData( val year: Int = LocalDate.now().year, - val month: Int = LocalDate.now().monthValue + val month: Int = LocalDate.now().monthValue, ) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavGraph.kt index 5e917d4d..3ef284b8 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavGraph.kt @@ -14,8 +14,8 @@ fun NavGraphBuilder.homeNavGraph( route = "home/{selectedYear}/{selectedMonth}", arguments = listOf( navArgument("selectedYear") { type = NavType.IntType }, - navArgument("selectedMonth") { type = NavType.IntType } - ) + navArgument("selectedMonth") { type = NavType.IntType }, + ), ) { backStackEntry -> val currentDate = LocalDate.now() val selectedYear = backStackEntry.arguments?.getInt("selectedYear") ?: currentDate.year @@ -23,7 +23,7 @@ fun NavGraphBuilder.homeNavGraph( HomeRoute( navigator = navigator, selectedYear = selectedYear, - selectedMonth = selectedMonth + selectedMonth = selectedMonth, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavigator.kt index e852a706..80428b26 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/navigation/HomeNavigator.kt @@ -3,7 +3,7 @@ package com.sopt.clody.presentation.ui.home.navigation import androidx.navigation.NavController class HomeNavigator( - val navController: NavController + val navController: NavController, ) { fun navigateDiaryList(selectedYear: Int, selectedMonth: Int) { navController.navigate("diary_list/$selectedYear/$selectedMonth") @@ -25,4 +25,3 @@ class HomeNavigator( navController.navigateUp() } } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeScreen.kt index b2d4f22d..1e9ef2c9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeScreen.kt @@ -68,21 +68,28 @@ fun HomeRoute( val selectedDate = homeViewModel.selectedDate.value homeViewModel.refreshCalendarDataCalendarData(selectedYear, selectedMonth) homeViewModel.loadDailyDiariesData(selectedYear, selectedMonth, selectedDate.dayOfMonth) - } + }, ) } else { HomeScreen( homeViewModel = homeViewModel, - onClickDiaryList = { selectedYearFromHome, selectedMonthFromHome -> navigator.navigateDiaryList(selectedYearFromHome, selectedMonthFromHome) }, + onClickDiaryList = { selectedYearFromHome, selectedMonthFromHome -> + navigator.navigateDiaryList( + selectedYearFromHome, + selectedMonthFromHome, + ) + }, onClickSetting = { navigator.navigateSetting() }, onClickWriteDiary = { year, month, day -> AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.HOME_WRITING_DIARY) - navigator.navigateWriteDiary(year, month, day) }, + navigator.navigateWriteDiary(year, month, day) + }, onClickReplyDiary = { year, month, day, replyStatus -> AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.HOME_REPLY) - navigator.navigateReplyLoading(year, month, day, replyStatus) }, + navigator.navigateReplyLoading(year, month, day, replyStatus) + }, selectedYear = selectedYear, - selectedMonth = selectedMonth + selectedMonth = selectedMonth, ) } } @@ -95,7 +102,7 @@ fun HomeScreen( onClickWriteDiary: (Int, Int, Int) -> Unit, onClickReplyDiary: (Int, Int, Int, String) -> Unit, selectedYear: Int, - selectedMonth: Int + selectedMonth: Int, ) { val (isError, errorMessage) = homeViewModel.errorState.collectAsStateWithLifecycle().value @@ -106,7 +113,7 @@ fun HomeScreen( homeViewModel.refreshCalendarDataCalendarData(selectedYear, selectedMonth) val selectedDate = homeViewModel.selectedDate.value homeViewModel.loadDailyDiariesData(selectedYear, selectedMonth, selectedDate.dayOfMonth) - } + }, ) } else { val selectedDiaryDate by homeViewModel.selectedDiaryDate.collectAsStateWithLifecycle() @@ -139,7 +146,8 @@ fun HomeScreen( HomeTopAppBar( onClickDiaryList = { AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.HOME_LIST_DIARY) - onClickDiaryList(selectedDiaryDate.year, selectedDiaryDate.month) }, + onClickDiaryList(selectedDiaryDate.year, selectedDiaryDate.month) + }, onClickSetting = onClickSetting, onShowYearMonthPickerStateChange = { newState -> homeViewModel.setShowYearMonthPickerState(newState) }, selectedYear = selectedDiaryDate.year, @@ -149,7 +157,7 @@ fun HomeScreen( containerColor = ClodyTheme.colors.white, content = { innerPadding -> when (val state = calendarState) { - is CalendarState.Idle -> { } + is CalendarState.Idle -> { } is CalendarState.Loading -> { LoadingScreen() @@ -167,7 +175,7 @@ fun HomeScreen( onDiaryDataUpdated = { diaryCount, replyStatus -> homeViewModel.updateDiaryState(state.data.diaries) }, - modifier = Modifier.padding(innerPadding) + modifier = Modifier.padding(innerPadding), ) } @@ -184,7 +192,6 @@ fun HomeScreen( } is DeleteDiaryState.Success -> { - } is DeleteDiaryState.Failure -> { @@ -193,9 +200,10 @@ fun HomeScreen( } }, bottomBar = { - Column(modifier = Modifier - .navigationBarsPadding() - .background(ClodyTheme.colors.white) + Column( + modifier = Modifier + .navigationBarsPadding() + .background(ClodyTheme.colors.white), ) { Spacer(modifier = Modifier.height(14.dp)) DiaryStateButton( @@ -205,11 +213,18 @@ fun HomeScreen( month = selectedDate.monthValue, day = selectedDate.dayOfMonth, onClickWriteDiary = onClickWriteDiary, - onClickReplyDiary = { onClickReplyDiary(selectedDate.year, selectedDate.monthValue, selectedDate.dayOfMonth, replyStatus) } + onClickReplyDiary = { + onClickReplyDiary( + selectedDate.year, + selectedDate.monthValue, + selectedDate.dayOfMonth, + replyStatus, + ) + }, ) Spacer(modifier = Modifier.height(14.dp)) } - } + }, ) if (showYearMonthPickerState) { @@ -221,7 +236,7 @@ fun HomeScreen( onYearMonthSelected = { year, month -> homeViewModel.updateSelectedDiaryDate(DiaryDateData(year, month)) homeViewModel.loadCalendarData(year, month) - } + }, ) } } @@ -231,7 +246,8 @@ fun HomeScreen( onDismiss = { homeViewModel.setShowDiaryDeleteState(false) }, showDiaryDeleteDialog = { AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.HOME_DELETE_DIARY) - homeViewModel.setShowDiaryDeleteDialog(true) } + homeViewModel.setShowDiaryDeleteDialog(true) + }, ) } @@ -242,14 +258,19 @@ fun HomeScreen( confirmOption = "삭제할래요", dismissOption = "아니요", confirmAction = { - homeViewModel.deleteDailyDiary(selectedDiaryDate.year, selectedDiaryDate.month, selectedDate.dayOfMonth) + homeViewModel.deleteDailyDiary( + selectedDiaryDate.year, + selectedDiaryDate.month, + selectedDate.dayOfMonth, + ) homeViewModel.setShowDiaryDeleteDialog(false) }, onDismiss = { AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.HOME_NO_DELETE_DIARY) - homeViewModel.setShowDiaryDeleteDialog(false) }, + homeViewModel.setShowDiaryDeleteDialog(false) + }, confirmButtonColor = ClodyTheme.colors.red, - confirmButtonTextColor = ClodyTheme.colors.white + confirmButtonTextColor = ClodyTheme.colors.white, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeViewModel.kt index e0dc97b9..eb99e84d 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/HomeViewModel.kt @@ -15,17 +15,18 @@ import kotlinx.coroutines.launch import java.time.LocalDate import javax.inject.Inject - @HiltViewModel class HomeViewModel @Inject constructor( private val diaryRepository: DiaryRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _calendarState = MutableStateFlow>(CalendarState.Idle) val calendarState: StateFlow> get() = _calendarState - private val _dailyDiariesState = MutableStateFlow>(DailyDiariesState.Idle) + private val _dailyDiariesState = MutableStateFlow>( + DailyDiariesState.Idle, + ) val dailyDiariesState: StateFlow> get() = _dailyDiariesState private val _deleteDiaryState = MutableStateFlow(DeleteDiaryState.Idle) @@ -99,7 +100,7 @@ class HomeViewModel @Inject constructor( onFailure = { exception -> setErrorState(true, exception.message ?: ErrorMessages.UNKNOWN_ERROR) CalendarState.Error(exception.message ?: ErrorMessages.UNKNOWN_ERROR) - } + }, ) } } @@ -121,7 +122,7 @@ class HomeViewModel @Inject constructor( onFailure = { exception -> setErrorState(true, exception.message ?: ErrorMessages.UNKNOWN_ERROR) DailyDiariesState.Error(exception.message ?: ErrorMessages.UNKNOWN_ERROR) - } + }, ) } } @@ -138,7 +139,7 @@ class HomeViewModel @Inject constructor( }, onFailure = { DeleteDiaryState.Failure(it.message ?: "Unknown error") - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/ScrollableCalendar.kt b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/ScrollableCalendar.kt index 8d2aabf9..07e93820 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/ScrollableCalendar.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/home/screen/ScrollableCalendar.kt @@ -27,7 +27,7 @@ fun ScrollableCalendar( onShowDiaryDeleteStateChange: (Boolean) -> Unit, selectedDate: LocalDate, onDiaryDataUpdated: (Int, String) -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { LaunchedEffect(selectedDate) { homeViewModel.updateDiaryState(diaries) @@ -39,7 +39,7 @@ fun ScrollableCalendar( modifier = modifier .fillMaxSize() .verticalScroll(scrollState) - .background(ClodyTheme.colors.white) + .background(ClodyTheme.colors.white), ) { CloverCount(cloverCount = cloverCount) Spacer(modifier = Modifier.height(20.dp)) @@ -52,7 +52,7 @@ fun ScrollableCalendar( }, diaries = diaries, homeViewModel = homeViewModel, - onShowDiaryDeleteStateChange = onShowDiaryDeleteStateChange + onShowDiaryDeleteStateChange = onShowDiaryDeleteStateChange, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/main/MainActivity.kt b/app/src/main/java/com/sopt/clody/presentation/ui/main/MainActivity.kt index 5da479d9..bc1e827f 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/main/MainActivity.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/main/MainActivity.kt @@ -90,7 +90,7 @@ class MainActivity : ComponentActivity() { writeDiaryNavigator = writeDiaryNavigator, settingNavigator = settingNavigator, replyLoadingNavigator = replyLoadingNavigator, - replyDiaryNavigator = replyDiaryNavigator + replyDiaryNavigator = replyDiaryNavigator, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/navigatior/MainNavHost.kt b/app/src/main/java/com/sopt/clody/presentation/ui/navigatior/MainNavHost.kt index 744ffaec..385666f8 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/navigatior/MainNavHost.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/navigatior/MainNavHost.kt @@ -38,7 +38,7 @@ fun MainNavHost( writeDiaryNavigator: WriteDiaryNavigator, settingNavigator: SettingNavigator, replyLoadingNavigator: ReplyLoadingNavigator, - replyDiaryNavigator: ReplyDiaryNavigator + replyDiaryNavigator: ReplyDiaryNavigator, ) { Box( modifier = modifier, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/CloverDialog.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/CloverDialog.kt index 29963489..b95d32a9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/CloverDialog.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/CloverDialog.kt @@ -41,58 +41,57 @@ fun CloverDialog( onDismissRequest = onDismiss, properties = DialogProperties( dismissOnClickOutside = false, - usePlatformDefaultWidth = false - ) + usePlatformDefaultWidth = false, + ), ) { Box( modifier = Modifier .fillMaxSize() .background(Color.Black.copy(alpha = 0.2f)) .wrapContentSize(Alignment.Center) - .padding(horizontal = 50.dp) + .padding(horizontal = 50.dp), ) { Card( shape = RoundedCornerShape(12.dp), colors = CardDefaults.cardColors(containerColor = ClodyTheme.colors.white), modifier = Modifier .wrapContentWidth() - .wrapContentHeight() + .wrapContentHeight(), ) { Column( modifier = Modifier .fillMaxWidth() .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { Image( painter = painterResource(id = R.drawable.ic_dialog_clover), contentDescription = null, modifier = Modifier - .padding(bottom = 20.dp) + .padding(bottom = 20.dp), ) Text( text = titleMassage, style = ClodyTheme.typography.detail1Medium, color = ClodyTheme.colors.gray05, - modifier = Modifier.padding(bottom = 8.dp) + modifier = Modifier.padding(bottom = 8.dp), ) Text( text = descriptionMassage, style = ClodyTheme.typography.head3, color = ClodyTheme.colors.gray01, - modifier = Modifier.padding(bottom = 30.dp) + modifier = Modifier.padding(bottom = 30.dp), ) Text( text = confirmOption, style = ClodyTheme.typography.body2SemiBold, color = ClodyTheme.colors.mainYellow, - modifier = Modifier.clickable(onClick = confirmAction) + modifier = Modifier.clickable(onClick = confirmAction), ) - } } } @@ -108,6 +107,6 @@ fun PreviewCloverDialog() { descriptionMassage = "", confirmOption = "확인", confirmAction = { }, - confirmButtonColor = ClodyTheme.colors.mainYellow + confirmButtonColor = ClodyTheme.colors.mainYellow, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryScreen.kt index 7dbaffdd..f68ddafb 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryScreen.kt @@ -43,7 +43,6 @@ import com.sopt.clody.presentation.utils.amplitude.AmplitudeUtils import com.sopt.clody.presentation.utils.extension.heightForScreenPercentage import com.sopt.clody.ui.theme.ClodyTheme - @Composable fun ReplyDiaryRoute( navigator: ReplyDiaryNavigator, @@ -82,14 +81,14 @@ fun ReplyDiaryRoute( ReplyDiaryScreen( onClickBack = { navigator.navigateHome(year, month) }, replyStatus = replyStatus, - replyDiaryState = successState + replyDiaryState = successState, ) } is ReplyDiaryState.Failure -> { FailureScreen( message = (replyDiaryState as ReplyDiaryState.Failure).error, - confirmAction = { viewModel.retryLastRequest() } + confirmAction = { viewModel.retryLastRequest() }, ) } @@ -102,7 +101,7 @@ fun ReplyDiaryRoute( fun ReplyDiaryScreen( onClickBack: () -> Unit, replyStatus: String, - replyDiaryState: ReplyDiaryState.Success + replyDiaryState: ReplyDiaryState.Success, ) { var showDialog by remember { mutableStateOf(false) } @@ -129,7 +128,7 @@ fun ReplyDiaryScreen( IconButton(onClick = onClickBack) { Image( painterResource(id = R.drawable.ic_nickname_back), - contentDescription = "back" + contentDescription = "back", ) } }, @@ -141,7 +140,7 @@ fun ReplyDiaryScreen( modifier = Modifier .fillMaxSize() .background(ClodyTheme.colors.white) - .padding(innerPadding) + .padding(innerPadding), ) { Column( modifier = Modifier @@ -150,7 +149,7 @@ fun ReplyDiaryScreen( .padding(bottom = 28.dp) .clip(RoundedCornerShape(16.dp)) .background(ClodyTheme.colors.gray08), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { val content = replyDiaryState.content val nickname = replyDiaryState.nickname @@ -159,7 +158,7 @@ fun ReplyDiaryScreen( Spacer(modifier = Modifier.heightForScreenPercentage(0.02f)) Image( painter = painterResource(id = R.drawable.img_reply_logo), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.03f)) Text( @@ -172,7 +171,7 @@ fun ReplyDiaryScreen( modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp) - .verticalScroll(rememberScrollState()) + .verticalScroll(rememberScrollState()), ) { Text( text = content, @@ -183,7 +182,7 @@ fun ReplyDiaryScreen( } } } - } + }, ) if (showDialog) { @@ -193,7 +192,7 @@ fun ReplyDiaryScreen( descriptionMassage = stringResource(R.string.clover_dialog_description), confirmOption = stringResource(R.string.clover_dialog_confirm_option), confirmAction = { showDialog = false }, - confirmButtonColor = ClodyTheme.colors.mainYellow + confirmButtonColor = ClodyTheme.colors.mainYellow, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryState.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryState.kt index 700cb257..543ca914 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryState.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryState.kt @@ -7,7 +7,7 @@ sealed class ReplyDiaryState { val content: String, val nickname: String, val month: Int, - val date: Int + val date: Int, ) : ReplyDiaryState() data class Failure(val error: String) : ReplyDiaryState() } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryViewModel.kt index aa5512e0..9dc9db8c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/ReplyDiaryViewModel.kt @@ -22,7 +22,7 @@ import javax.inject.Inject @HiltViewModel class ReplyDiaryViewModel @Inject constructor( private val diaryRepository: DiaryRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _replyDiaryState = MutableStateFlow(ReplyDiaryState.Idle) @@ -32,7 +32,7 @@ class ReplyDiaryViewModel @Inject constructor( private var lastMonth: Int = 0 private var lastDate: Int = 0 - private val _retryFlow = MutableSharedFlow() //연속 클릭을 제어하기 위해 선언. + private val _retryFlow = MutableSharedFlow() // 연속 클릭을 제어하기 위해 선언. init { setupRetryFlow() @@ -44,10 +44,9 @@ class ReplyDiaryViewModel @Inject constructor( .onEach { // Flow에서 발생한 이벤트를 받아서 getReplyDiaryInternal 호출. getReplyDiaryInternal(lastYear, lastMonth, lastDate) } - .launchIn(viewModelScope) //Flow를 viewModelScope에서 실행하고 구독을 유지, 즉 viewmodel이 살아있는 동안 flow가 실행됨 + .launchIn(viewModelScope) // Flow를 viewModelScope에서 실행하고 구독을 유지, 즉 viewmodel이 살아있는 동안 flow가 실행됨 } - fun getReplyDiary(year: Int, month: Int, date: Int) { lastYear = year lastMonth = month @@ -77,15 +76,15 @@ class ReplyDiaryViewModel @Inject constructor( content = data.content ?: "", nickname = data.nickname, month = data.month, - date = data.date - ) + date = data.date, + ), ) }, onFailure = { throwable -> updateState(ReplyDiaryState.Failure(ErrorMessages.FAILURE_TEMPORARY_MESSAGE)) val errorMessage = throwable.localizedMessage ?: UNKNOWN_ERROR Timber.tag("ReplyDiaryViewModel").e("API 요청 실패: %s", errorMessage) - } + }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyDiaryNavigator.kt similarity index 91% rename from app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyNavigator.kt rename to app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyDiaryNavigator.kt index 26695a7f..419dd1af 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replydiary/navigation/ReplyDiaryNavigator.kt @@ -3,7 +3,7 @@ package com.sopt.clody.presentation.ui.replydiary.navigation import androidx.navigation.NavHostController class ReplyDiaryNavigator( - val navController: NavHostController + val navController: NavHostController, ) { fun navigateHome(selectedYear: Int, selectedMonth: Int) { navController.navigate("home/$selectedYear/$selectedMonth") { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/component/QuickReplyAdButton.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/component/QuickReplyAdButton.kt index 73b065fd..3507cd0e 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/component/QuickReplyAdButton.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/component/QuickReplyAdButton.kt @@ -22,28 +22,28 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun QuickReplyAdButton( modifier: Modifier = Modifier, - onClick: () -> Unit = {} + onClick: () -> Unit = {}, ) { Box( modifier = modifier .clip(RoundedCornerShape(20.dp)) .background(ClodyTheme.colors.lightBlue) .clickable { onClick() } - .padding(vertical = 6.dp, horizontal = 12.dp) + .padding(vertical = 6.dp, horizontal = 12.dp), ) { Row( - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Icon( painter = painterResource(id = R.drawable.ic_replyloading_player), contentDescription = null, - tint = Color.Unspecified + tint = Color.Unspecified, ) Text( text = "광고 보고 바로 답장 받기", style = ClodyTheme.typography.body4Medium, color = ClodyTheme.colors.blue, - modifier = Modifier.padding(start = 5.dp) + modifier = Modifier.padding(start = 5.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavGraph.kt index 2c53ae04..243d1d6e 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavGraph.kt @@ -11,7 +11,7 @@ import java.time.LocalDate fun NavGraphBuilder.replyLoadingNavGraph( replyLoadingNavigator: ReplyLoadingNavigator, - replyDiaryNavigator: ReplyDiaryNavigator + replyDiaryNavigator: ReplyDiaryNavigator, ) { val currentDate = LocalDate.now() composable( @@ -21,8 +21,8 @@ fun NavGraphBuilder.replyLoadingNavGraph( navArgument("month") { type = NavType.IntType }, navArgument("day") { type = NavType.IntType }, navArgument("from") { defaultValue = "home" }, - navArgument("replyStatus") { defaultValue = "UNREADY" } - ) + navArgument("replyStatus") { defaultValue = "UNREADY" }, + ), ) { backStackEntry -> val year = backStackEntry.arguments?.getInt("year") ?: currentDate.year val month = backStackEntry.arguments?.getInt("month") ?: currentDate.monthValue @@ -37,8 +37,8 @@ fun NavGraphBuilder.replyLoadingNavGraph( navArgument("year") { type = NavType.IntType }, navArgument("month") { type = NavType.IntType }, navArgument("day") { type = NavType.IntType }, - navArgument("replyStatus") { defaultValue = "UNREADY" } - ) + navArgument("replyStatus") { defaultValue = "UNREADY" }, + ), ) { backStackEntry -> val year = backStackEntry.arguments?.getInt("year") ?: currentDate.year val month = backStackEntry.arguments?.getInt("month") ?: currentDate.monthValue diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavigator.kt index 12834793..1653ca08 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/navigation/ReplyLoadingNavigator.kt @@ -3,7 +3,7 @@ package com.sopt.clody.presentation.ui.replyloading.navigation import androidx.navigation.NavHostController class ReplyLoadingNavigator( - private val navController: NavHostController + private val navController: NavHostController, ) { fun navigateHome(selectedYear: Int, selectedMonth: Int) { navController.navigate("home/$selectedYear/$selectedMonth") { @@ -26,7 +26,6 @@ class ReplyLoadingNavigator( } fun navigateBack(selectedYear: Int, selectedMonth: Int, from: String) { - when (from) { "diary_list" -> { navigateWithPopUp("diary_list/$selectedYear/$selectedMonth") diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingScreen.kt index 452f629b..6da83e9f 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingScreen.kt @@ -59,7 +59,7 @@ fun ReplyLoadingRoute( day: Int, from: String, replyStatus: String, - viewModel: ReplyLoadingViewModel = hiltViewModel() + viewModel: ReplyLoadingViewModel = hiltViewModel(), ) { val replyLoadingState by viewModel.replyLoadingState.collectAsState() val isAdLoadingState by viewModel.isAdLoading.collectAsState() @@ -105,7 +105,7 @@ fun ReplyLoadingRoute( isAdCompleted = isAdCompleted, isFirstDiary = isFirstDiary, adErrorMessage = adErrorMessage, - onDismissToast = { viewModel.clearAdErrorMessage() } + onDismissToast = { viewModel.clearAdErrorMessage() }, ) } @@ -113,7 +113,7 @@ fun ReplyLoadingRoute( val failureState = replyLoadingState as ReplyLoadingState.Failure FailureScreen( message = failureState.error, - confirmAction = { viewModel.retryLastRequest() } + confirmAction = { viewModel.retryLastRequest() }, ) } @@ -132,7 +132,7 @@ fun ReplyLoadingScreen( isAdCompleted: Boolean, isFirstDiary: Boolean, adErrorMessage: String?, - onDismissToast: () -> Unit + onDismissToast: () -> Unit, ) { var remainingTime by remember { mutableStateOf(0L) } var isComplete by remember { mutableStateOf(false) } @@ -185,11 +185,11 @@ fun ReplyLoadingScreen( modifier = Modifier .statusBarsPadding() .padding(top = 26.dp) - .padding(start = 12.dp) + .padding(start = 12.dp), ) { Image( painter = painterResource(id = R.drawable.ic_nickname_back), - contentDescription = null + contentDescription = null, ) } }, @@ -214,20 +214,20 @@ fun ReplyLoadingScreen( .fillMaxSize() .background(ClodyTheme.colors.white) .padding(innerPadding), - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Spacer(modifier = Modifier.heightForScreenPercentage(0.15f)) Crossfade( targetState = animationResId, - animationSpec = tween(durationMillis = 300) + animationSpec = tween(durationMillis = 300), ) { targetResId -> LottieAnimation( modifier = Modifier .fillMaxWidth() .aspectRatio(16f / 9f), resId = targetResId, - iterations = LottieConstants.IterateForever + iterations = LottieConstants.IterateForever, ) } Spacer(modifier = Modifier.heightForScreenPercentage(0.015f)) @@ -236,7 +236,7 @@ fun ReplyLoadingScreen( Text( text = String.format("%02d:%02d:%02d", hours, minutes, seconds), style = ClodyTheme.typography.head2, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } Spacer(modifier = Modifier.heightForScreenPercentage(0.005f)) @@ -244,22 +244,22 @@ fun ReplyLoadingScreen( text = textToShow, style = ClodyTheme.typography.body2Medium, color = ClodyTheme.colors.gray04, - textAlign = TextAlign.Center + textAlign = TextAlign.Center, ) Spacer(modifier = Modifier.heightForScreenPercentage(0.036f)) if (!isWaitingForPatchResponse && !isAdCompleted && !isFirstDiary) { QuickReplyAdButton( - onClick = onShowAdClick + onClick = onShowAdClick, ) } } - } + }, ) if (isAdLoading) { LoadingScreen( - backgroundColor = Color.Transparent + backgroundColor = Color.Transparent, ) } @@ -268,7 +268,7 @@ fun ReplyLoadingScreen( modifier = Modifier .fillMaxSize() .padding(6.dp), - contentAlignment = Alignment.BottomCenter + contentAlignment = Alignment.BottomCenter, ) { ClodyToastMessage( message = adErrorMessage, @@ -276,7 +276,7 @@ fun ReplyLoadingScreen( backgroundColor = ClodyTheme.colors.gray04, contentColor = ClodyTheme.colors.white, durationMillis = 3000, - onDismiss = onDismissToast + onDismiss = onDismissToast, ) } } @@ -289,7 +289,7 @@ fun ReplyLoadingScreenPreview() { onCompleteClick = {}, onBackClick = {}, replyLoadingState = ReplyLoadingState.Success( - targetDateTime = LocalDateTime.now().plusSeconds(10) + targetDateTime = LocalDateTime.now().plusSeconds(10), ), onShowAdClick = {}, isAdLoading = false, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingViewModel.kt index 8cd0ad16..e885e820 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/replyloading/screen/ReplyLoadingViewModel.kt @@ -28,7 +28,7 @@ class ReplyLoadingViewModel @Inject constructor( private val diaryRepository: DiaryRepository, private val adRepository: AdRepository, private val networkUtil: NetworkUtil, - private val rewardAdShower: RewardAdShower + private val rewardAdShower: RewardAdShower, ) : ViewModel() { private val _replyLoadingState = MutableStateFlow(ReplyLoadingState.Idle) @@ -97,8 +97,12 @@ class ReplyLoadingViewModel @Inject constructor( onSuccess = { data -> val diaryWrittenDay = data.date.split("-") var targetDateTime = LocalDateTime.of( - diaryWrittenDay[0].toInt(), diaryWrittenDay[1].toInt(), diaryWrittenDay[2].toInt(), - data.HH, data.mm, data.ss + diaryWrittenDay[0].toInt(), + diaryWrittenDay[1].toInt(), + diaryWrittenDay[2].toInt(), + data.HH, + data.mm, + data.ss, ).plusMinutes(if (data.isFirst) INITIAL_REMINDER_MINUTES else REGULAR_REMINDER_HOURS * 60) if (_isAdCompleted.value || data.isFromAd) { @@ -113,7 +117,7 @@ class ReplyLoadingViewModel @Inject constructor( _replyLoadingState.value = ReplyLoadingState.Failure(FAILURE_TEMPORARY_MESSAGE) val errorMessage = throwable.localizedMessage ?: UNKNOWN_ERROR Timber.tag("ReplyLoadingViewModel").e("API 요청 실패: %s", errorMessage) - } + }, ) } @@ -172,7 +176,7 @@ class ReplyLoadingViewModel @Inject constructor( onAdDismissed = { _isAdPreloaded = false preloadAd() - } + }, ) } @@ -186,7 +190,6 @@ class ReplyLoadingViewModel @Inject constructor( _adErrorMessage.value = null } - companion object { private const val INITIAL_REMINDER_MINUTES = 1L private const val REGULAR_REMINDER_HOURS = 12L diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementLogoutOption.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementLogoutOption.kt index affe8d1c..61281c6e 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementLogoutOption.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementLogoutOption.kt @@ -21,23 +21,23 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun AccountManagementLogoutOption( userEmail: String, - updateLogoutDialog: (Boolean) -> Unit + updateLogoutDialog: (Boolean) -> Unit, ) { Row( modifier = Modifier - .padding(top = 12.dp, bottom = 24.dp, start = 22.dp, end = 24.dp) + .padding(top = 12.dp, bottom = 24.dp, start = 22.dp, end = 24.dp), ) { Image( painter = painterResource(id = R.drawable.img_account_management_kakao), modifier = Modifier .size(24.dp), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.width(10.dp)) Text( text = userEmail, color = ClodyTheme.colors.gray03, - style = ClodyTheme.typography.body1Medium + style = ClodyTheme.typography.body1Medium, ) Spacer(modifier = Modifier.weight(1f)) Text( @@ -45,11 +45,10 @@ fun AccountManagementLogoutOption( modifier = Modifier.clickable( onClick = { updateLogoutDialog(true) }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), color = ClodyTheme.colors.gray05, - style = ClodyTheme.typography.body4Medium + style = ClodyTheme.typography.body4Medium, ) - } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementNicknameOption.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementNicknameOption.kt index cd2ec0ae..c1bd0e37 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementNicknameOption.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementNicknameOption.kt @@ -20,26 +20,26 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun AccountManagementNicknameOption( userName: String, - updateNicknameChangeBottomSheet: (Boolean) -> Unit + updateNicknameChangeBottomSheet: (Boolean) -> Unit, ) { Row( modifier = Modifier - .padding(horizontal = 24.dp, vertical = 24.dp) + .padding(horizontal = 24.dp, vertical = 24.dp), ) { Image( painter = painterResource(id = R.drawable.ic_account_management_clover), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.width(10.dp)) Text( text = userName, color = ClodyTheme.colors.gray03, - style = ClodyTheme.typography.body1SemiBold + style = ClodyTheme.typography.body1SemiBold, ) Text( text = stringResource(R.string.account_management_nickname), color = ClodyTheme.colors.gray03, - style = ClodyTheme.typography.body1Medium + style = ClodyTheme.typography.body1Medium, ) Spacer(modifier = Modifier.weight(1f)) Text( @@ -47,10 +47,10 @@ fun AccountManagementNicknameOption( modifier = Modifier.clickable( onClick = { updateNicknameChangeBottomSheet(true) }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), color = ClodyTheme.colors.gray05, - style = ClodyTheme.typography.body4Medium + style = ClodyTheme.typography.body4Medium, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementRevokeOption.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementRevokeOption.kt index c352fd29..95bad3d2 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementRevokeOption.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/AccountManagementRevokeOption.kt @@ -16,15 +16,15 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun AccountManagementRevokeOption( - updateRevokeDialog: (Boolean) -> Unit + updateRevokeDialog: (Boolean) -> Unit, ) { Row( - modifier = Modifier.padding(24.dp) + modifier = Modifier.padding(24.dp), ) { Text( text = stringResource(R.string.account_management_revoke), color = ClodyTheme.colors.gray05, - style = ClodyTheme.typography.body4Medium + style = ClodyTheme.typography.body4Medium, ) Spacer(modifier = Modifier.weight(1f)) Text( @@ -32,10 +32,10 @@ fun AccountManagementRevokeOption( modifier = Modifier.clickable( onClick = { updateRevokeDialog(true) }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), color = ClodyTheme.colors.gray05, - style = ClodyTheme.typography.body4Medium + style = ClodyTheme.typography.body4Medium, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/LogoutDialog.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/LogoutDialog.kt index bdd12726..adbb038b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/LogoutDialog.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/LogoutDialog.kt @@ -35,27 +35,27 @@ fun LogoutDialog( ) { Dialog( onDismissRequest = onDismiss, - properties = DialogProperties(dismissOnClickOutside = false) + properties = DialogProperties(dismissOnClickOutside = false), ) { Box( modifier = Modifier .background(color = ClodyTheme.colors.white, shape = RoundedCornerShape(size = 12.dp)) .height(176.dp) - .fillMaxWidth() + .fillMaxWidth(), ) { Column( modifier = Modifier .fillMaxSize() .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { Spacer(modifier = Modifier.height(8.dp)) Text( text = titleMassage, color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body1SemiBold + style = ClodyTheme.typography.body1SemiBold, ) Spacer(modifier = Modifier.height(8.dp)) @@ -64,14 +64,14 @@ fun LogoutDialog( text = descriptionMassage, color = ClodyTheme.colors.gray04, textAlign = TextAlign.Center, - style = ClodyTheme.typography.body3Regular + style = ClodyTheme.typography.body3Regular, ) Spacer(modifier = Modifier.height(32.dp)) Row( modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Button( onClick = onDismiss, @@ -80,13 +80,15 @@ fun LogoutDialog( .height(40.dp) .background( color = ClodyTheme.colors.gray07, - shape = RoundedCornerShape(size = 8.dp) + shape = RoundedCornerShape(size = 8.dp), ), - colors = ButtonDefaults.buttonColors(ClodyTheme.colors.gray07) + colors = ButtonDefaults.buttonColors(ClodyTheme.colors.gray07), ) { - Text(text = dismissOption, + Text( + text = dismissOption, color = ClodyTheme.colors.gray04, - style = ClodyTheme.typography.body3SemiBold) + style = ClodyTheme.typography.body3SemiBold, + ) } Spacer(modifier = Modifier.width(8.dp)) @@ -98,13 +100,15 @@ fun LogoutDialog( .height(40.dp) .background( color = ClodyTheme.colors.darkYellow, - shape = RoundedCornerShape(size = 8.dp) + shape = RoundedCornerShape(size = 8.dp), ), - colors = ButtonDefaults.buttonColors(ClodyTheme.colors.darkYellow) + colors = ButtonDefaults.buttonColors(ClodyTheme.colors.darkYellow), ) { - Text(text = confirmOption, + Text( + text = confirmOption, color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body3SemiBold) + style = ClodyTheme.typography.body3SemiBold, + ) } } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeBottomSheet.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeBottomSheet.kt index 18f88cf3..1caf228f 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeBottomSheet.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeBottomSheet.kt @@ -39,7 +39,7 @@ fun NicknameChangeBottomSheet( userName: String, isValidNickname: Boolean, nicknameMessage: String, - onDismiss: () -> Unit + onDismiss: () -> Unit, ) { ClodyBottomSheet( content = { @@ -48,7 +48,7 @@ fun NicknameChangeBottomSheet( userName = userName, isValidNickname = isValidNickname, nicknameMessage = nicknameMessage, - onDismiss = onDismiss + onDismiss = onDismiss, ) }, onDismissRequest = onDismiss, @@ -61,7 +61,7 @@ fun NicknameChangeBottomSheetItem( userName: String, isValidNickname: Boolean, nicknameMessage: String, - onDismiss: () -> Unit + onDismiss: () -> Unit, ) { var nickname by remember { mutableStateOf(TextFieldValue("")) } var nicknameChangeState by remember { mutableStateOf(false) } @@ -75,7 +75,7 @@ fun NicknameChangeBottomSheetItem( .fillMaxWidth() .background(ClodyTheme.colors.white), verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Box( modifier = Modifier @@ -87,18 +87,18 @@ fun NicknameChangeBottomSheetItem( text = stringResource(R.string.account_management_nickname_change_title), modifier = Modifier.align(Alignment.Center), color = ClodyTheme.colors.gray01, - style = ClodyTheme.typography.body2SemiBold + style = ClodyTheme.typography.body2SemiBold, ) IconButton( onClick = onDismiss, - modifier = Modifier.align(Alignment.CenterEnd) + modifier = Modifier.align(Alignment.CenterEnd), ) { Image( painter = painterResource( - id = R.drawable.ic_nickname_change_dismiss + id = R.drawable.ic_nickname_change_dismiss, ), - contentDescription = null + contentDescription = null, ) } } @@ -123,14 +123,14 @@ fun NicknameChangeBottomSheetItem( }, modifier = Modifier .padding(horizontal = 24.dp), - hint = userName + hint = userName, ) Row( modifier = Modifier .fillMaxWidth() .padding(top = 6.dp) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Text( text = nicknameMessage, @@ -139,7 +139,7 @@ fun NicknameChangeBottomSheetItem( isValidNickname -> ClodyTheme.colors.gray04 else -> ClodyTheme.colors.red }, - style = ClodyTheme.typography.detail1Regular + style = ClodyTheme.typography.detail1Regular, ) Spacer(modifier = Modifier.weight(1f)) @@ -147,12 +147,12 @@ fun NicknameChangeBottomSheetItem( Text( text = "${nickname.text.length}", color = ClodyTheme.colors.gray04, - style = ClodyTheme.typography.detail1Medium + style = ClodyTheme.typography.detail1Medium, ) Text( text = " / $nicknameMaxLength", color = ClodyTheme.colors.gray06, - style = ClodyTheme.typography.detail1Medium + style = ClodyTheme.typography.detail1Medium, ) } @@ -167,7 +167,7 @@ fun NicknameChangeBottomSheetItem( enabled = nicknameChangeState && isValidNickname, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 18.dp) + .padding(horizontal = 18.dp), ) Spacer(modifier = Modifier.navigationBarsPadding()) Spacer(modifier = Modifier.height(60.dp)) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeTextField.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeTextField.kt index dc666741..9e36c7a0 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeTextField.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/NicknameChangeTextField.kt @@ -56,24 +56,24 @@ fun NickNameChangeTextField( }, singleLine = true, textStyle = TextStyle(color = ClodyTheme.colors.gray01), - cursorBrush = if(isValid) SolidColor(ClodyTheme.colors.gray01) else SolidColor(ClodyTheme.colors.red), + cursorBrush = if (isValid) SolidColor(ClodyTheme.colors.gray01) else SolidColor(ClodyTheme.colors.red), decorationBox = { innerTextField -> Column( Modifier .fillMaxWidth() .padding(horizontal = 0.dp, vertical = 0.dp), - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { Row( verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) { Box(modifier = Modifier.weight(1f)) { if (value.text.isEmpty()) { Text( text = hint, style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray05 + color = ClodyTheme.colors.gray05, ) } innerTextField() @@ -83,13 +83,13 @@ fun NickNameChangeTextField( .clickable( onClick = onRemove, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Image( painter = painterResource(id = R.drawable.ic_nickname_change_clean), - contentDescription = null + contentDescription = null, ) } } @@ -103,11 +103,11 @@ fun NickNameChangeTextField( isValid.not() -> ClodyTheme.colors.red isFocused -> ClodyTheme.colors.mainYellow else -> ClodyTheme.colors.gray08 - } - ) + }, + ), ) } - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingOption.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingOption.kt index 0835e5ae..29a37424 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingOption.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingOption.kt @@ -21,7 +21,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun SettingOption( option: String, - onClickOption: () -> Unit + onClickOption: () -> Unit, ) { Row( modifier = Modifier @@ -30,22 +30,22 @@ fun SettingOption( .clickable( interactionSource = remember { MutableInteractionSource() }, indication = null, - onClick = onClickOption), - verticalAlignment = Alignment.CenterVertically + onClick = onClickOption, + ), + verticalAlignment = Alignment.CenterVertically, ) { Spacer(modifier = Modifier.width(24.dp)) Text( text = option, color = ClodyTheme.colors.gray03, - style = ClodyTheme.typography.body1Medium + style = ClodyTheme.typography.body1Medium, ) Spacer(modifier = Modifier.weight(1f)) Image( painter = painterResource(id = R.drawable.ic_setting_next), modifier = Modifier .padding(8.dp), - contentDescription = null + contentDescription = null, ) - } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingSeparateLine.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingSeparateLine.kt index 641ced71..89da850c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingSeparateLine.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingSeparateLine.kt @@ -15,6 +15,6 @@ fun SettingSeparateLine() { modifier = Modifier .fillMaxWidth() .height(8.dp) - .background(ClodyTheme.colors.gray08) + .background(ClodyTheme.colors.gray08), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingTopAppBar.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingTopAppBar.kt index a3f27d58..beb24b51 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingTopAppBar.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingTopAppBar.kt @@ -16,7 +16,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun SettingTopAppBar( title: String, - onClickBack: () -> Unit + onClickBack: () -> Unit, ) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) @@ -28,7 +28,7 @@ fun SettingTopAppBar( IconButton(onClick = onClickBack) { Image( painter = painterResource(id = R.drawable.ic_setting_back), - contentDescription = null + contentDescription = null, ) } }, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingVersionInfo.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingVersionInfo.kt index f0fb667d..fcb068ea 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingVersionInfo.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/component/SettingVersionInfo.kt @@ -16,27 +16,27 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun SettingVersionInfo( - versionInfo: String + versionInfo: String, ) { Row( modifier = Modifier .fillMaxWidth() .padding(top = 20.dp) .padding(horizontal = 20.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Text( text = stringResource(R.string.setting_option_app_version), modifier = Modifier.padding(start = 4.dp), - style = ClodyTheme.typography.body1Medium + style = ClodyTheme.typography.body1Medium, ) Spacer(modifier = Modifier.weight(1f)) Text( text = versionInfo, color = ClodyTheme.colors.gray05, style = ClodyTheme.typography.body4Medium.copy( - letterSpacing = 2.sp - ) + letterSpacing = 2.sp, + ), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavGraph.kt index ddb851e6..471df2f5 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavGraph.kt @@ -10,7 +10,7 @@ import com.sopt.clody.presentation.ui.setting.screen.SettingRoute import com.sopt.clody.presentation.ui.setting.screen.WebViewRoute fun NavGraphBuilder.settingNavGraph( - navigator: SettingNavigator + navigator: SettingNavigator, ) { composable("setting") { SettingRoute(navigator) @@ -18,7 +18,7 @@ fun NavGraphBuilder.settingNavGraph( } fun NavGraphBuilder.accountManagementNavGraph( - navigator: SettingNavigator + navigator: SettingNavigator, ) { composable("account_management") { AccountManagementRoute(navigator) @@ -26,7 +26,7 @@ fun NavGraphBuilder.accountManagementNavGraph( } fun NavGraphBuilder.notificationSettingNavGraph( - navigator: SettingNavigator + navigator: SettingNavigator, ) { composable("notification_setting") { NotificationSettingRoute(navigator) @@ -34,11 +34,11 @@ fun NavGraphBuilder.notificationSettingNavGraph( } fun NavGraphBuilder.webViewNavGraph( - navigator: SettingNavigator + navigator: SettingNavigator, ) { composable( route = "web_view/{encodedUrl}", - arguments = listOf(navArgument("encodedUrl") { type = NavType.StringType }) + arguments = listOf(navArgument("encodedUrl") { type = NavType.StringType }), ) { backStackEntry -> val encodedUrl = backStackEntry.arguments?.getString("encodedUrl") encodedUrl?.let { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavigator.kt index 0eee8a29..ca2fc0e4 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/navigation/SettingNavigator.kt @@ -4,7 +4,7 @@ import androidx.navigation.NavHostController import java.net.URLEncoder class SettingNavigator( - val navController: NavHostController + val navController: NavHostController, ) { fun navigateAccountManagement() { navController.navigate("account_management") diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/DiaryAlarmSwitch.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/DiaryAlarmSwitch.kt index f3af8667..3c6705b5 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/DiaryAlarmSwitch.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/DiaryAlarmSwitch.kt @@ -27,18 +27,18 @@ fun DiaryAlarmSwitch( context: Context, title: String, notificationInfo: NotificationInfoResponseDto, - checkedState: MutableState + checkedState: MutableState, ) { Row( modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Text( text = title, style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray03 + color = ClodyTheme.colors.gray03, ) Spacer(modifier = Modifier.weight(1f)) Switch( @@ -51,7 +51,7 @@ fun DiaryAlarmSwitch( thumbContent = { Image( painter = painterResource(id = R.drawable.ic_notification_setting_switch_thumb), - contentDescription = null + contentDescription = null, ) }, colors = SwitchDefaults.colors( @@ -59,7 +59,7 @@ fun DiaryAlarmSwitch( checkedTrackColor = ClodyTheme.colors.mainYellow, uncheckedThumbColor = ClodyTheme.colors.white, uncheckedTrackColor = ClodyTheme.colors.gray06, - uncheckedBorderColor = ClodyTheme.colors.gray06 + uncheckedBorderColor = ClodyTheme.colors.gray06, ), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTime.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTime.kt index 2df42d03..bab0901b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTime.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTime.kt @@ -22,28 +22,28 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun NotificationSettingTime( selectedTime: String, - updateNotificationTimePicker: (Boolean) -> Unit + updateNotificationTimePicker: (Boolean) -> Unit, ) { Row( modifier = Modifier .fillMaxWidth() .wrapContentHeight() .padding(horizontal = 24.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Text( text = stringResource(R.string.notification_setting_notification_time), style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray03 + color = ClodyTheme.colors.gray03, ) Spacer(modifier = Modifier.weight(1f)) Row( modifier = Modifier.clickable( onClick = { updateNotificationTimePicker(true) }, indication = null, - interactionSource = remember {MutableInteractionSource()} - ), - verticalAlignment = Alignment.CenterVertically + interactionSource = remember { MutableInteractionSource() }, + ), + verticalAlignment = Alignment.CenterVertically, ) { Text( text = selectedTime, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTimePicker.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTimePicker.kt index 8ef3f4d8..f168b727 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTimePicker.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/NotificationSettingTimePicker.kt @@ -35,7 +35,7 @@ import com.sopt.clody.ui.theme.ClodyTheme fun NotificationSettingTimePicker( notificationSettingViewModel: NotificationSettingViewModel, onTimeSelected: (String) -> Unit, - onDismissRequest: () -> Unit + onDismissRequest: () -> Unit, ) { val amPmItems = remember { listOf("오전", "오후") } val hourItems = remember { (1..12).map { it.toString() } } @@ -50,7 +50,7 @@ fun NotificationSettingTimePicker( .fillMaxWidth() .wrapContentHeight(), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), - color = ClodyTheme.colors.white + color = ClodyTheme.colors.white, ) { Column( horizontalAlignment = Alignment.CenterHorizontally, @@ -58,26 +58,26 @@ fun NotificationSettingTimePicker( modifier = Modifier .wrapContentSize() .background(color = ClodyTheme.colors.white) - .padding(horizontal = 24.dp) + .padding(horizontal = 24.dp), ) { Box( modifier = Modifier .fillMaxWidth() - .padding(top = 16.dp, bottom = 30.dp) + .padding(top = 16.dp, bottom = 30.dp), ) { Text( stringResource(id = R.string.time_picker_title), style = ClodyTheme.typography.head4, color = ClodyTheme.colors.gray01, - modifier = Modifier.align(Alignment.Center) + modifier = Modifier.align(Alignment.Center), ) IconButton( onClick = onDismissRequest, modifier = Modifier .size(24.dp) - .align(Alignment.CenterEnd) + .align(Alignment.CenterEnd), ) { Image( painter = painterResource(id = R.drawable.ic_picker_dismiss), @@ -88,19 +88,19 @@ fun NotificationSettingTimePicker( Box( modifier = Modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Box( modifier = Modifier .fillMaxWidth() .align(Alignment.Center) .height(35.dp) - .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)) + .background(ClodyTheme.colors.gray08, shape = RoundedCornerShape(8.dp)), ) Row( modifier = Modifier .fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Spacer(Modifier.weight(1f)) ClodyPicker( @@ -141,7 +141,7 @@ fun NotificationSettingTimePicker( val selectedTime = notificationSettingViewModel.convertTo24HourFormat( amPmPickerState.selectedItem, hourPickerState.selectedItem, - minutePickerState.selectedItem + minutePickerState.selectedItem, ) onTimeSelected(selectedTime) }, @@ -149,7 +149,7 @@ fun NotificationSettingTimePicker( enabled = true, modifier = Modifier .fillMaxWidth() - .padding(top = 30.dp, bottom = 28.dp) + .padding(top = 30.dp, bottom = 28.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/ReplyAlarmSwitch.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/ReplyAlarmSwitch.kt index eddb5aab..c8f18fd1 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/ReplyAlarmSwitch.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/component/ReplyAlarmSwitch.kt @@ -27,18 +27,18 @@ fun ReplyAlarmSwitch( context: Context, title: String, notificationInfo: NotificationInfoResponseDto, - checkedState: MutableState + checkedState: MutableState, ) { Row( modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Text( text = title, style = ClodyTheme.typography.body1Medium, - color = ClodyTheme.colors.gray03 + color = ClodyTheme.colors.gray03, ) Spacer(modifier = Modifier.weight(1f)) Switch( @@ -51,7 +51,7 @@ fun ReplyAlarmSwitch( thumbContent = { Image( painter = painterResource(id = R.drawable.ic_notification_setting_switch_thumb), - contentDescription = null + contentDescription = null, ) }, colors = SwitchDefaults.colors( @@ -59,7 +59,7 @@ fun ReplyAlarmSwitch( checkedTrackColor = ClodyTheme.colors.mainYellow, uncheckedThumbColor = ClodyTheme.colors.white, uncheckedTrackColor = ClodyTheme.colors.gray06, - uncheckedBorderColor = ClodyTheme.colors.gray06 + uncheckedBorderColor = ClodyTheme.colors.gray06, ), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingScreen.kt index a984165a..bf70651b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingScreen.kt @@ -39,7 +39,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun NotificationSettingRoute( navigator: SettingNavigator, - notificationSettingViewModel: NotificationSettingViewModel = hiltViewModel() + notificationSettingViewModel: NotificationSettingViewModel = hiltViewModel(), ) { val context = LocalContext.current val notificationInfoState by notificationSettingViewModel.notificationInfoState.collectAsState() @@ -57,8 +57,8 @@ fun NotificationSettingRoute( LaunchedEffect(diaryAlarmChangeState, notificationTimeChangeState, replyAlarmChangeState) { val isSuccess = diaryAlarmChangeState is DiaryAlarmChangeState.Success || - notificationTimeChangeState is NotificationTimeChangeState.Success || - replyAlarmChangeState is ReplyAlarmChangeState.Success + notificationTimeChangeState is NotificationTimeChangeState.Success || + replyAlarmChangeState is ReplyAlarmChangeState.Success if (isSuccess) { notificationSettingViewModel.getNotificationInfo() @@ -76,7 +76,7 @@ fun NotificationSettingRoute( showFailureDialog = showFailureDialog, failureDialogMessage = failureDialogMessage, onClickBack = { navigator.navigateBack() }, - onNotificationInfoAvailable = { notificationInfo = it } + onNotificationInfoAvailable = { notificationInfo = it }, ) } @@ -92,13 +92,13 @@ fun NotificationSettingScreen( showFailureDialog: Boolean, failureDialogMessage: String, onClickBack: () -> Unit, - onNotificationInfoAvailable: (NotificationInfoResponseDto) -> Unit + onNotificationInfoAvailable: (NotificationInfoResponseDto) -> Unit, ) { Scaffold( topBar = { SettingTopAppBar( title = stringResource(R.string.notification_setting_title), - onClickBack = onClickBack + onClickBack = onClickBack, ) }, containerColor = ClodyTheme.colors.white, @@ -116,7 +116,7 @@ fun NotificationSettingScreen( val notificationTime = notificationSettingViewModel.convertTo12HourFormat(notificationInfo.time) Column( modifier = Modifier - .padding(innerPadding) + .padding(innerPadding), ) { Spacer(modifier = Modifier.height(20.dp)) DiaryAlarmSwitch( @@ -124,12 +124,12 @@ fun NotificationSettingScreen( context = context, title = stringResource(R.string.notification_setting_write_diary), notificationInfo = notificationInfo, - checkedState = remember { mutableStateOf(notificationInfo.isDiaryAlarm) } + checkedState = remember { mutableStateOf(notificationInfo.isDiaryAlarm) }, ) Spacer(modifier = Modifier.height(32.dp)) NotificationSettingTime( selectedTime = notificationTime, - updateNotificationTimePicker = updateNotificationTimePicker + updateNotificationTimePicker = updateNotificationTimePicker, ) Spacer(modifier = Modifier.height(32.dp)) ReplyAlarmSwitch( @@ -137,7 +137,7 @@ fun NotificationSettingScreen( context = context, title = stringResource(R.string.notification_setting_reply_diary), notificationInfo = notificationInfo, - checkedState = remember { mutableStateOf(notificationInfo.isReplyAlarm) } + checkedState = remember { mutableStateOf(notificationInfo.isReplyAlarm) }, ) } } @@ -145,7 +145,7 @@ fun NotificationSettingScreen( is NotificationInfoState.Failure -> { FailureScreen( message = notificationInfoState.errorMessage, - confirmAction = { notificationSettingViewModel.getNotificationInfo() } + confirmAction = { notificationSettingViewModel.getNotificationInfo() }, ) } } @@ -161,7 +161,7 @@ fun NotificationSettingScreen( } updateNotificationTimePicker(false) }, - onDismissRequest = { updateNotificationTimePicker(false) } + onDismissRequest = { updateNotificationTimePicker(false) }, ) } } @@ -171,7 +171,7 @@ fun NotificationSettingScreen( modifier = Modifier .fillMaxSize() .padding(20.dp), - contentAlignment = Alignment.BottomCenter + contentAlignment = Alignment.BottomCenter, ) { ClodyToastMessage( message = stringResource(R.string.notification_setting_change_success_toast), @@ -179,7 +179,7 @@ fun NotificationSettingScreen( backgroundColor = ClodyTheme.colors.gray04, contentColor = ClodyTheme.colors.white, durationMillis = 3000, - onDismiss = { notificationSettingViewModel.resetNotificationChangeState() } + onDismiss = { notificationSettingViewModel.resetNotificationChangeState() }, ) } } @@ -187,8 +187,7 @@ fun NotificationSettingScreen( if (showFailureDialog) { FailureDialog( message = failureDialogMessage, - onDismiss = { notificationSettingViewModel.dismissFailureDialog() } + onDismiss = { notificationSettingViewModel.dismissFailureDialog() }, ) } } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingViewModel.kt index 3d779d54..d1f27dd6 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/notificationsetting/screen/NotificationSettingViewModel.kt @@ -5,11 +5,11 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sopt.clody.data.remote.dto.request.SendNotificationRequestDto import com.sopt.clody.data.remote.dto.response.NotificationInfoResponseDto +import com.sopt.clody.data.remote.util.NetworkUtil import com.sopt.clody.domain.repository.NotificationRepository import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_NETWORK_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_TEMPORARY_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.UNKNOWN_ERROR -import com.sopt.clody.data.remote.util.NetworkUtil import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -19,7 +19,7 @@ import javax.inject.Inject @HiltViewModel class NotificationSettingViewModel @Inject constructor( private val notificationRepository: NotificationRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _notificationInfoState = MutableStateFlow(NotificationInfoState.Idle) @@ -28,7 +28,9 @@ class NotificationSettingViewModel @Inject constructor( private val _diaryAlarmChangeState = MutableStateFlow(DiaryAlarmChangeState.Idle) val diaryAlarmChangeState: StateFlow = _diaryAlarmChangeState - private val _notificationTimeChangeState = MutableStateFlow(NotificationTimeChangeState.Idle) + private val _notificationTimeChangeState = MutableStateFlow( + NotificationTimeChangeState.Idle, + ) val notificationTimeChangeState: StateFlow = _notificationTimeChangeState private val _replyAlarmChangeState = MutableStateFlow(ReplyAlarmChangeState.Idle) @@ -68,7 +70,7 @@ class NotificationSettingViewModel @Inject constructor( NotificationInfoState.Failure(UNKNOWN_ERROR) } } - } + }, ) } } @@ -90,7 +92,7 @@ class NotificationSettingViewModel @Inject constructor( isDiaryAlarm = diaryAlarm, isReplyAlarm = notificationInfo.isReplyAlarm, time = notificationInfo.time, - fcmToken = fcmToken + fcmToken = fcmToken, ) notificationRepository.sendNotification(requestDto).fold( onSuccess = { _diaryAlarmChangeState.value = DiaryAlarmChangeState.Success(it) }, @@ -102,7 +104,7 @@ class NotificationSettingViewModel @Inject constructor( } _showFailureDialog.value = true DiaryAlarmChangeState.Failure(_failureDialogMessage.value) - } + }, ) } } @@ -124,7 +126,7 @@ class NotificationSettingViewModel @Inject constructor( isDiaryAlarm = notificationInfo.isDiaryAlarm, isReplyAlarm = notificationInfo.isReplyAlarm, time = time, - fcmToken = fcmToken + fcmToken = fcmToken, ) notificationRepository.sendNotification(requestDto).fold( onSuccess = { _notificationTimeChangeState.value = NotificationTimeChangeState.Success(it) }, @@ -136,7 +138,7 @@ class NotificationSettingViewModel @Inject constructor( } _showFailureDialog.value = true NotificationInfoState.Failure(_failureDialogMessage.value) - } + }, ) } } @@ -158,7 +160,7 @@ class NotificationSettingViewModel @Inject constructor( isDiaryAlarm = notificationInfo.isDiaryAlarm, isReplyAlarm = replyAlarm, time = notificationInfo.time, - fcmToken = fcmToken + fcmToken = fcmToken, ) notificationRepository.sendNotification(requestDto).fold( onSuccess = { _replyAlarmChangeState.value = ReplyAlarmChangeState.Success(it) }, @@ -170,7 +172,7 @@ class NotificationSettingViewModel @Inject constructor( } _showFailureDialog.value = true ReplyAlarmChangeState.Failure(_failureDialogMessage.value) - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementScreen.kt index 7d9a6093..5f4a6adf 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementScreen.kt @@ -38,7 +38,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun AccountManagementRoute( navigator: SettingNavigator, - accountManagementViewModel: AccountManagementViewModel = hiltViewModel() + accountManagementViewModel: AccountManagementViewModel = hiltViewModel(), ) { val userInfoState by accountManagementViewModel.userInfoState.collectAsState() val userNicknameState by accountManagementViewModel.userNicknameState.collectAsState() @@ -92,7 +92,7 @@ fun AccountManagementRoute( updateRevokeDialog = { state -> showRevokeDialog = state }, showFailureDialog = showFailureDialog, failureDialogMessage = failureDialogMessage, - onBackClick = { navigator.navigateBack() } + onBackClick = { navigator.navigateBack() }, ) } @@ -111,7 +111,7 @@ fun AccountManagementScreen( updateRevokeDialog: (Boolean) -> Unit, showFailureDialog: Boolean, failureDialogMessage: String, - onBackClick: () -> Unit + onBackClick: () -> Unit, ) { Scaffold( topBar = { SettingTopAppBar(stringResource(R.string.account_management_title), onBackClick) }, @@ -129,24 +129,24 @@ fun AccountManagementScreen( Column( modifier = Modifier .fillMaxSize() - .padding(innerPadding) + .padding(innerPadding), ) { AccountManagementNicknameOption( userName = userInfo.name, - updateNicknameChangeBottomSheet = updateNicknameChangeBottomSheet + updateNicknameChangeBottomSheet = updateNicknameChangeBottomSheet, ) if (userInfo.platform == "kakao") { AccountManagementLogoutOption( userEmail = userInfo.email, - updateLogoutDialog = updateLogoutDialog + updateLogoutDialog = updateLogoutDialog, ) } SettingSeparateLine() AccountManagementRevokeOption( - updateRevokeDialog = updateRevokeDialog + updateRevokeDialog = updateRevokeDialog, ) } } @@ -154,7 +154,7 @@ fun AccountManagementScreen( is UserInfoState.Failure -> { FailureScreen( message = userInfoState.errorMessage, - confirmAction = { accountManagementViewModel.fetchUserInfo() } + confirmAction = { accountManagementViewModel.fetchUserInfo() }, ) } } @@ -166,7 +166,7 @@ fun AccountManagementScreen( userName = (userInfoState as UserInfoState.Success).data.name, isValidNickname = isValidNickname, nicknameMessage = nicknameMessage, - onDismiss = { updateNicknameChangeBottomSheet(false) } + onDismiss = { updateNicknameChangeBottomSheet(false) }, ) } @@ -175,7 +175,7 @@ fun AccountManagementScreen( modifier = Modifier .fillMaxSize() .padding(20.dp), - contentAlignment = Alignment.BottomCenter + contentAlignment = Alignment.BottomCenter, ) { ClodyToastMessage( message = stringResource(R.string.account_management_nickname_change_toast), @@ -198,7 +198,7 @@ fun AccountManagementScreen( AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.LOGOUT) accountManagementViewModel.logOutAccount() }, - onDismiss = { updateLogoutDialog(false) } + onDismiss = { updateLogoutDialog(false) }, ) } @@ -214,14 +214,14 @@ fun AccountManagementScreen( }, confirmButtonColor = ClodyTheme.colors.red, confirmButtonTextColor = ClodyTheme.colors.white, - onDismiss = { updateRevokeDialog(false) } + onDismiss = { updateRevokeDialog(false) }, ) } if (showFailureDialog) { FailureDialog( message = failureDialogMessage, - onDismiss = { accountManagementViewModel.dismissFailureDialog() } + onDismiss = { accountManagementViewModel.dismissFailureDialog() }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementViewModel.kt index c890b192..fc78e477 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/AccountManagementViewModel.kt @@ -5,11 +5,11 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sopt.clody.data.datastore.TokenDataStore import com.sopt.clody.data.remote.dto.request.ModifyNicknameRequestDto +import com.sopt.clody.data.remote.util.NetworkUtil import com.sopt.clody.domain.repository.AccountManagementRepository import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_NETWORK_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.FAILURE_TEMPORARY_MESSAGE import com.sopt.clody.presentation.utils.network.ErrorMessages.UNKNOWN_ERROR -import com.sopt.clody.data.remote.util.NetworkUtil import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow @@ -22,7 +22,7 @@ class AccountManagementViewModel @Inject constructor( private val accountManagementRepository: AccountManagementRepository, private val tokenDataStore: TokenDataStore, private val networkUtil: NetworkUtil, - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, ) : ViewModel() { private val _userInfoState = MutableStateFlow(UserInfoState.Idle) val userInfoState: StateFlow = _userInfoState @@ -67,7 +67,7 @@ class AccountManagementViewModel @Inject constructor( }, onFailure = { retryCount++ - if(retryCount >= maxRetryCount) { + if (retryCount >= maxRetryCount) { UserInfoState.Failure(FAILURE_TEMPORARY_MESSAGE) } else { val errorMessage = if (it.message?.contains("200") == false) { @@ -77,7 +77,7 @@ class AccountManagementViewModel @Inject constructor( } UserInfoState.Failure(errorMessage) } - } + }, ) } } @@ -100,7 +100,7 @@ class AccountManagementViewModel @Inject constructor( } _showFailureDialog.value = true UserNicknameState.Failure(_failureDialogMessage.value) - } + }, ) } } @@ -153,7 +153,7 @@ class AccountManagementViewModel @Inject constructor( } _showFailureDialog.value = true RevokeAccountState.Failure(_failureDialogMessage.value) - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingScreen.kt index b247f6fd..fff76bd5 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingScreen.kt @@ -29,7 +29,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun SettingRoute( navigator: SettingNavigator, - settingViewModel: SettingViewModel = hiltViewModel() + settingViewModel: SettingViewModel = hiltViewModel(), ) { val versionInfo by settingViewModel::versionInfo @@ -54,7 +54,7 @@ fun SettingScreen( onClickBack: () -> Unit, onClickAccountManagement: () -> Unit, onClickNotificationSetting: () -> Unit, - onClickInquiriesSuggestions: () -> Unit + onClickInquiriesSuggestions: () -> Unit, ) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val context = LocalContext.current @@ -67,20 +67,41 @@ fun SettingScreen( ) { innerPadding -> Column( modifier = Modifier - .padding(innerPadding) + .padding(innerPadding), ) { SettingOption(option = stringResource(R.string.setting_option_account_management), onClickAccountManagement) SettingSeparateLine() - SettingOption(option = stringResource(R.string.setting_option_notification_setting), onClickNotificationSetting) - SettingOption(option = stringResource(R.string.setting_option_announcement)) { onClickSettingOption(context, SettingOptionUrls.ANNOUNCEMENT_URL) } - SettingOption(option = stringResource(R.string.setting_option_inquiries_suggestions), onClickInquiriesSuggestions) + SettingOption( + option = stringResource(R.string.setting_option_notification_setting), + onClickNotificationSetting, + ) + SettingOption(option = stringResource(R.string.setting_option_announcement)) { + onClickSettingOption( + context, + SettingOptionUrls.ANNOUNCEMENT_URL, + ) + } + SettingOption( + option = stringResource(R.string.setting_option_inquiries_suggestions), + onClickInquiriesSuggestions, + ) SettingSeparateLine() - SettingOption(option = stringResource(R.string.setting_option_terms_of_service)) { onClickSettingOption(context, SettingOptionUrls.TERMS_OF_SERVICE_URL) } - SettingOption(option = stringResource(R.string.setting_option_privacy_policy)) { onClickSettingOption(context, SettingOptionUrls.PRIVACY_POLICY_URL) } + SettingOption(option = stringResource(R.string.setting_option_terms_of_service)) { + onClickSettingOption( + context, + SettingOptionUrls.TERMS_OF_SERVICE_URL, + ) + } + SettingOption(option = stringResource(R.string.setting_option_privacy_policy)) { + onClickSettingOption( + context, + SettingOptionUrls.PRIVACY_POLICY_URL, + ) + } SettingVersionInfo(versionInfo = versionInfo) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingViewModel.kt index 415152a4..3944f4e0 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/SettingViewModel.kt @@ -15,7 +15,7 @@ import javax.inject.Inject @HiltViewModel class SettingViewModel @Inject constructor( - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, ) : ViewModel() { var versionInfo by mutableStateOf(null) private set diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/WebViewScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/WebViewScreen.kt index 09cd690b..7cfed543 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/WebViewScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/setting/screen/WebViewScreen.kt @@ -21,11 +21,11 @@ import com.sopt.clody.presentation.ui.setting.navigation.SettingNavigator @Composable fun WebViewRoute( navigator: SettingNavigator, - encodedUrl: String + encodedUrl: String, ) { WebViewScreen( encodedUrl = encodedUrl, - onClickBack = { navigator.navigateBack() } + onClickBack = { navigator.navigateBack() }, ) } @@ -33,7 +33,7 @@ fun WebViewRoute( @Composable fun WebViewScreen( encodedUrl: String, - onClickBack: () -> Unit + onClickBack: () -> Unit, ) { var webView: WebView? by remember { mutableStateOf(null) } val canGoBack by remember { derivedStateOf { webView?.canGoBack() ?: false } } @@ -63,7 +63,7 @@ fun WebViewScreen( .fillMaxSize() .padding(innerPadding), ) - } + }, ) BackHandler(enabled = canGoBack) { @@ -74,4 +74,3 @@ fun WebViewScreen( } } } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashScreen.kt index 25ef6b95..5193e719 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashScreen.kt @@ -24,7 +24,7 @@ import java.time.LocalDate @Composable fun SplashRoute( navigator: AuthNavigator, - viewModel: SplashViewModel = hiltViewModel() + viewModel: SplashViewModel = hiltViewModel(), ) { val isUserLoggedIn by viewModel.isUserLoggedIn.collectAsStateWithLifecycle() @@ -36,7 +36,7 @@ fun SplashRoute( "home/${LocalDate.now().year}/${LocalDate.now().monthValue}" } else { "register_graph" - } + }, ) { popUpTo("splash") { inclusive = true } } @@ -53,12 +53,12 @@ fun SplashScreen() { modifier = Modifier .fillMaxSize() .background(backgroundColor), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Image( painter = painterResource(id = R.drawable.img_splash_logo), contentDescription = "App Logo", - modifier = Modifier.size(160.dp) + modifier = Modifier.size(160.dp), ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashViewModel.kt index 4bc0db74..bfb3b6db 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/splash/SplashViewModel.kt @@ -9,7 +9,7 @@ import javax.inject.Inject @HiltViewModel class SplashViewModel @Inject constructor( - private val tokenRepository: TokenRepository + private val tokenRepository: TokenRepository, ) : ViewModel() { private val _isUserLoggedIn = MutableStateFlow(null) diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryIconType.kt b/app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryCloverType.kt similarity index 88% rename from app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryIconType.kt rename to app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryCloverType.kt index 6386b310..dd162022 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryIconType.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/type/DiaryCloverType.kt @@ -9,14 +9,15 @@ enum class DiaryCloverType(val iconRes: Int) { UNGIVEN_CLOVER(R.drawable.ic_home_ungiven_clover), BOTTOM_CLOVER(R.drawable.ic_home_bottom_clover), MID_CLOVER(R.drawable.ic_home_mid_clover), - TOP_CLOVER(R.drawable.ic_home_top_clover); + TOP_CLOVER(R.drawable.ic_home_top_clover), + ; companion object { fun getCalendarCloverType(diaryData: MonthlyCalendarResponseDto.Diary, isToday: Boolean): DiaryCloverType { return when { isToday && diaryData.diaryCount == 0 -> TODAY_UNWRITTEN isToday && diaryData.diaryCount > 0 && - (diaryData.replyStatus == "UNREADY" || diaryData.replyStatus == "READY_NOT_READ") -> TODAY_WRITTEN + (diaryData.replyStatus == "UNREADY" || diaryData.replyStatus == "READY_NOT_READ") -> TODAY_WRITTEN diaryData.replyStatus == "READY_NOT_READ" && diaryData.diaryCount > 0 -> UNGIVEN_CLOVER diaryData.replyStatus == "UNREADY" && diaryData.diaryCount > 0 -> UNGIVEN_CLOVER diaryData.diaryCount == 0 -> UNGIVEN_CLOVER diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/bottomsheet/DeleteWriteDiaryBottomSheet.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/bottomsheet/DeleteWriteDiaryBottomSheet.kt index d7598c85..5446dbc3 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/bottomsheet/DeleteWriteDiaryBottomSheet.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/bottomsheet/DeleteWriteDiaryBottomSheet.kt @@ -13,13 +13,11 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -30,7 +28,7 @@ import com.sopt.clody.ui.theme.ClodyTheme @Composable fun DeleteWriteDiaryBottomSheet( onDismissRequest: () -> Unit, - onDeleteConfirm: () -> Unit + onDeleteConfirm: () -> Unit, ) { ClodyBottomSheet( onDismissRequest = onDismissRequest, @@ -40,7 +38,7 @@ fun DeleteWriteDiaryBottomSheet( .fillMaxWidth() .background(ClodyTheme.colors.white) .padding(vertical = 20.dp), - verticalArrangement = Arrangement.Top + verticalArrangement = Arrangement.Top, ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -52,37 +50,34 @@ fun DeleteWriteDiaryBottomSheet( onDismissRequest() }, indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ) .background(ClodyTheme.colors.white) - .padding(start = 24.dp) + .padding(start = 24.dp), ) { Image( painter = painterResource(id = R.drawable.ic_bottomsheet_trash), - contentDescription = null + contentDescription = null, ) Spacer(modifier = Modifier.width(8.dp)) Text( text = "삭제하기", style = ClodyTheme.typography.body4SemiBold, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } Spacer(modifier = Modifier.navigationBarsPadding()) Spacer(modifier = Modifier.height(60.dp)) } - } + }, ) - } - @Preview(showBackground = true) @Composable fun PreviewDeleteWriteDiaryBottomSheet() { DeleteWriteDiaryBottomSheet( onDismissRequest = {}, - onDeleteConfirm = {} + onDeleteConfirm = {}, ) } - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/text/DiaryTitleText.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/text/DiaryTitleText.kt index d915963c..a1376eae 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/text/DiaryTitleText.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/text/DiaryTitleText.kt @@ -11,7 +11,7 @@ fun DiaryTitleText(date: String, separator: String, day: String, modifier: Modif Text( text = "$date$separator$day", style = ClodyTheme.typography.head2, - color = ClodyTheme.colors.gray01 + color = ClodyTheme.colors.gray01, ) } @@ -20,5 +20,3 @@ fun DiaryTitleText(date: String, separator: String, day: String, modifier: Modif fun PreviewDiaryTitleText() { DiaryTitleText(date = "6월 26일", separator = " / ", day = "목요일") } - - diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/textfield/WriteDiaryTextField.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/textfield/WriteDiaryTextField.kt index f4f69cbe..1f469b4c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/textfield/WriteDiaryTextField.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/textfield/WriteDiaryTextField.kt @@ -48,28 +48,35 @@ fun WriteDiaryTextField( isRemovable: Boolean, maxLength: Int, showWarning: Boolean, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { - var isTextValid by remember { mutableStateOf(text.replace("\\s".toRegex(), "").matches(Regex("^[a-zA-Z가-힣0-9ㄱ-ㅎㅏ-ㅣ가-힣\\W]{2,50}$"))) } + var isTextValid by remember { + mutableStateOf( + text.replace("\\s".toRegex(), "").matches(Regex("^[a-zA-Z가-힣0-9ㄱ-ㅎㅏ-ㅣ가-힣\\W]{2,50}$")), + ) + } var isFocused by remember { mutableStateOf(false) } var isTextTooLong by remember { mutableStateOf(false) } val customTextSelectionColors = TextSelectionColors( handleColor = ClodyTheme.colors.mainYellow, - backgroundColor = ClodyTheme.colors.mainYellow.copy(alpha = 0.4f) + backgroundColor = ClodyTheme.colors.mainYellow.copy(alpha = 0.4f), ) CompositionLocalProvider(LocalTextSelectionColors provides customTextSelectionColors) { Column( modifier = modifier - .fillMaxWidth() + .fillMaxWidth(), ) { Box( modifier = Modifier .background( - if (isFocused || (showWarning && text.isEmpty())) ClodyTheme.colors.white - else ClodyTheme.colors.gray09, - shape = RoundedCornerShape(10.dp) + if (isFocused || (showWarning && text.isEmpty())) { + ClodyTheme.colors.white + } else { + ClodyTheme.colors.gray09 + }, + shape = RoundedCornerShape(10.dp), ) .border( if (isFocused || showWarning || isTextTooLong) { @@ -84,16 +91,16 @@ fun WriteDiaryTextField( showWarning && text.isEmpty() -> ClodyTheme.colors.red else -> Color.Transparent }, - RoundedCornerShape(10.dp) + RoundedCornerShape(10.dp), ) - .heightIn(min = 50.dp) // 최소 높이를 50dp로 설정 - .fillMaxWidth() // 너비를 부모의 너비로 채움 - .padding(vertical = 12.dp, horizontal = 8.dp) + .heightIn(min = 50.dp) // 최소 높이를 50dp로 설정 + .fillMaxWidth() // 너비를 부모의 너비로 채움 + .padding(vertical = 12.dp, horizontal = 8.dp), ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .fillMaxWidth() // Row의 너비를 Box의 너비로 채움 + .fillMaxWidth(), // Row의 너비를 Box의 너비로 채움 ) { Text( text = "$entryNumber.", @@ -101,7 +108,7 @@ fun WriteDiaryTextField( .padding(start = 16.dp, top = 5.dp) .align(Alignment.Top), style = ClodyTheme.typography.body2SemiBold, - color = if (text.isNotEmpty()) ClodyTheme.colors.gray01 else ClodyTheme.colors.gray06 + color = if (text.isNotEmpty()) ClodyTheme.colors.gray01 else ClodyTheme.colors.gray06, ) Spacer(modifier = Modifier.width(8.dp)) BasicTextField( @@ -117,7 +124,7 @@ fun WriteDiaryTextField( } }, textStyle = TextStyle( - color = if (text.isEmpty()) ClodyTheme.colors.gray06 else ClodyTheme.colors.gray01 + color = if (text.isEmpty()) ClodyTheme.colors.gray06 else ClodyTheme.colors.gray01, ), cursorBrush = SolidColor(ClodyTheme.colors.gray01), decorationBox = { innerTextField -> @@ -125,40 +132,39 @@ fun WriteDiaryTextField( Text( text = "일상 속 작은 감사함을 적어보세요", style = ClodyTheme.typography.body3Medium, - color = ClodyTheme.colors.gray06 + color = ClodyTheme.colors.gray06, ) } innerTextField() }, modifier = Modifier .weight(1f) - .onFocusChanged { isFocused = it.isFocused } + .onFocusChanged { isFocused = it.isFocused }, ) IconButton( onClick = onRemove, - modifier = Modifier.size(28.dp) + modifier = Modifier.size(28.dp), ) { Image( painter = painterResource(id = R.drawable.ic_writediary_kebab), - contentDescription = "Remove" + contentDescription = "Remove", ) } - } } Row( modifier = Modifier .fillMaxWidth() - .padding(start = 8.dp, top = 6.dp) + .padding(start = 8.dp, top = 6.dp), ) { if ((showWarning && !isTextValid && text.isNotEmpty()) || isTextTooLong) { Text( text = "2~50자 까지 입력할 수 있어요.", color = ClodyTheme.colors.red, style = ClodyTheme.typography.detail1Medium, - modifier = Modifier.weight(1f) + modifier = Modifier.weight(1f), ) } else { Spacer(modifier = Modifier.weight(1f)) @@ -181,7 +187,7 @@ fun WriteDiaryTextField( style = ClodyTheme.typography.detail1Medium, modifier = Modifier .align(Alignment.CenterVertically) - .padding(end = 8.dp) + .padding(end = 8.dp), ) } } @@ -198,6 +204,6 @@ fun PreviewWriteDiaryTextField() { onRemove = {}, isRemovable = true, maxLength = 50, - showWarning = true + showWarning = true, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/BubbleLayout.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/BubbleLayout.kt index 1d80af51..dc4891b9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/BubbleLayout.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/BubbleLayout.kt @@ -16,7 +16,7 @@ fun BubbleLayout( alignment: TooltipAlignment = TooltipAlignment.TopCenter, arrowHeight: Dp, arrowPositionX: Float, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { val arrowHeightPx = with(LocalDensity.current) { arrowHeight.toPx() @@ -57,7 +57,7 @@ fun BubbleLayout( color = arrowColor, ) path.close() - } + }, ) { content() } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/calculateTooltipPopupPosition.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/CalculateTooltipPopupPosition.kt similarity index 93% rename from app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/calculateTooltipPopupPosition.kt rename to app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/CalculateTooltipPopupPosition.kt index b81f1e78..92f2b875 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/calculateTooltipPopupPosition.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/CalculateTooltipPopupPosition.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.unit.IntOffset fun calculateTooltipPopupPosition( view: View, coordinates: LayoutCoordinates?, - isTop: Boolean = false + isTop: Boolean = false, ): TooltipPopupPosition { coordinates ?: return TooltipPopupPosition() @@ -24,7 +24,7 @@ fun calculateTooltipPopupPosition( return if (isTop) { val offset = IntOffset( y = -coordinates.size.height, - x = offsetX.toInt() + x = offsetX.toInt(), ) TooltipPopupPosition( offset = offset, @@ -34,7 +34,7 @@ fun calculateTooltipPopupPosition( } else { val offset = IntOffset( y = coordinates.size.height, - x = offsetX.toInt() + x = offsetX.toInt(), ) TooltipPopupPosition( offset = offset, diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/DisplayTooltipPopup.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/DisplayTooltipPopup.kt index 01ffbeca..ba3411b9 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/DisplayTooltipPopup.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/DisplayTooltipPopup.kt @@ -28,7 +28,7 @@ fun DisplayTooltipPopup( arrowHeight: Dp = 8.dp, horizontalPadding: Dp = 16.dp, onDismissRequest: (() -> Unit)? = null, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { val horizontalPaddingInPx = with(LocalDensity.current) { horizontalPadding.toPx() @@ -41,12 +41,12 @@ fun DisplayTooltipPopup( when (position.alignment) { TooltipAlignment.TopCenter -> { Alignment.BottomCenter to position.offset.copy( - y = position.offset.y - arrowPaddingPx + 80 + y = position.offset.y - arrowPaddingPx + 80, ) } TooltipAlignment.BottomCenter -> { Alignment.TopCenter to position.offset.copy( - y = position.offset.y + arrowPaddingPx - 80 + y = position.offset.y + arrowPaddingPx - 80, ) } else -> { diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/noRippleClickable.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/NoRippleClickable.kt similarity index 97% rename from app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/noRippleClickable.kt rename to app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/NoRippleClickable.kt index c8e0dd8d..d54f5b48 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/noRippleClickable.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/NoRippleClickable.kt @@ -11,7 +11,8 @@ import androidx.compose.ui.composed fun Modifier.noRippleClickable(onClick: () -> Unit): Modifier = composed { clickable( indication = null, - interactionSource = remember { MutableInteractionSource() }) { + interactionSource = remember { MutableInteractionSource() }, + ) { onClick() } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipIcon.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipIcon.kt index b7f708f6..b38a172c 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipIcon.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipIcon.kt @@ -37,7 +37,7 @@ fun TooltipIcon( private fun Tooltip( modifier: Modifier, tooltip: String, - iconSize: Dp = 28.dp + iconSize: Dp = 28.dp, ) { var isShowTooltip by remember { mutableStateOf(false) } @@ -48,7 +48,7 @@ private fun Tooltip( .size(iconSize) .clickable( indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ) { isShowTooltip = true }, painter = painterResource(id = R.drawable.ic_writediary_help), contentDescription = "TooltipPopup", @@ -61,7 +61,7 @@ private fun Tooltip( Box( modifier = Modifier .padding(start = 8.dp) - .padding(vertical = 2.dp) + .padding(vertical = 2.dp), ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -79,11 +79,11 @@ private fun Tooltip( modifier = Modifier .clickable( indication = null, - interactionSource = remember { MutableInteractionSource() } - ) { isShowTooltip = false } + interactionSource = remember { MutableInteractionSource() }, + ) { isShowTooltip = false }, ) } } - } + }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipPositionProvider.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipPositionProvider.kt index 04554cb4..ce4f84cc 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipPositionProvider.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltipPositionProvider.kt @@ -20,20 +20,20 @@ internal class TooltipPositionProvider( anchorBounds: IntRect, windowSize: IntSize, layoutDirection: LayoutDirection, - popupContentSize: IntSize + popupContentSize: IntSize, ): IntOffset { var popupPosition = IntOffset(0, 0) val parentAlignmentPoint = alignment.align( IntSize.Zero, IntSize(anchorBounds.width, anchorBounds.height), - layoutDirection + layoutDirection, ) val relativePopupPos = alignment.align( IntSize.Zero, IntSize(popupContentSize.width, popupContentSize.height), - layoutDirection + layoutDirection, ) popupPosition += IntOffset(anchorBounds.left, anchorBounds.top) @@ -42,7 +42,7 @@ internal class TooltipPositionProvider( val resolvedOffset = IntOffset( offset.x * (if (layoutDirection == LayoutDirection.Ltr) 1 else -1), - offset.y + offset.y, ) popupPosition += resolvedOffset diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltopPopUp.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltopPopUp.kt index 52bfdabf..448013a0 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltopPopUp.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/component/tooltip/TooltopPopUp.kt @@ -15,7 +15,7 @@ fun TooltipPopup( requesterView: @Composable (Modifier) -> Unit, tooltipContent: @Composable () -> Unit, isShowTooltip: Boolean, - onDismissRequest: () -> Unit + onDismissRequest: () -> Unit, ) { val view = LocalView.current.rootView var position by remember { mutableStateOf(TooltipPopupPosition()) } @@ -24,7 +24,7 @@ fun TooltipPopup( DisplayTooltipPopup( position = position, onDismissRequest = onDismissRequest, - content = tooltipContent + content = tooltipContent, ) } @@ -35,6 +35,6 @@ fun TooltipPopup( } .onGloballyPositioned { coordinates -> position = calculateTooltipPopupPosition(view, coordinates, isTop = true) - } + }, ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavGraph.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavGraph.kt index 9ca00815..26703461 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavGraph.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavGraph.kt @@ -7,7 +7,6 @@ import androidx.navigation.navArgument import com.sopt.clody.presentation.ui.writediary.screen.WriteDiaryRoute import java.time.LocalDate - fun NavGraphBuilder.writeDiaryNavGraph( writeDiaryNavigator: WriteDiaryNavigator, ) { @@ -16,8 +15,8 @@ fun NavGraphBuilder.writeDiaryNavGraph( arguments = listOf( navArgument("year") { type = NavType.IntType }, navArgument("month") { type = NavType.IntType }, - navArgument("day") { type = NavType.IntType } - ) + navArgument("day") { type = NavType.IntType }, + ), ) { backStackEntry -> val currentDate = LocalDate.now() val year = backStackEntry.arguments?.getInt("year") ?: currentDate.year diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavigator.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavigator.kt index f3814c9c..9450a6cc 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavigator.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/navigation/WriteDiaryNavigator.kt @@ -2,9 +2,8 @@ package com.sopt.clody.presentation.ui.writediary.navigation import androidx.navigation.NavHostController - class WriteDiaryNavigator( - val navController: NavHostController + val navController: NavHostController, ) { fun navigateReplyLoading(year: Int, month: Int, day: Int, replyStatus: String = "READY_NOT_READ") { navController.navigate("reply_loading/$year/$month/$day?from=write_diary&replyStatus=$replyStatus") diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryScreen.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryScreen.kt index 3a273749..31db1810 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryScreen.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryScreen.kt @@ -32,7 +32,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.sopt.clody.R @@ -58,7 +57,7 @@ fun WriteDiaryRoute( year: Int, month: Int, day: Int, - viewModel: WriteDiaryViewModel = hiltViewModel() + viewModel: WriteDiaryViewModel = hiltViewModel(), ) { val entries = viewModel.entries val showWarnings = viewModel.showWarnings @@ -97,17 +96,18 @@ fun WriteDiaryRoute( showDialog = showDialog, onClickBack = { AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.WRITING_DIARY_BACK) - navigator.navigateHome(year, month) }, + navigator.navigateHome(year, month) + }, onCompleteClick = { viewModel.writeDiary(year, month, day, entries) }, year = year, month = month, - day = day + day = day, ) if (showFailureDialog) { FailureDialog( message = failureMessage, - onDismiss = { viewModel.resetFailureDialog() } + onDismiss = { viewModel.resetFailureDialog() }, ) } } @@ -128,7 +128,7 @@ fun WriteDiaryScreen( onCompleteClick: () -> Unit, year: Int, month: Int, - day: Int + day: Int, ) { val focusManager = LocalFocusManager.current @@ -139,11 +139,11 @@ fun WriteDiaryScreen( modifier = Modifier .statusBarsPadding() .padding(top = 26.dp) - .padding(start = 12.dp) + .padding(start = 12.dp), ) { Image( painter = painterResource(id = R.drawable.ic_nickname_back), - contentDescription = null + contentDescription = null, ) } }, @@ -153,17 +153,17 @@ fun WriteDiaryScreen( .fillMaxWidth() .navigationBarsPadding() .background(Color.Transparent), - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { Column( - modifier = Modifier.align(Alignment.BottomCenter) + modifier = Modifier.align(Alignment.BottomCenter), ) { Box( modifier = Modifier .fillMaxWidth() .padding(end = 24.dp) .padding(bottom = 28.dp), - contentAlignment = Alignment.CenterEnd + contentAlignment = Alignment.CenterEnd, ) { IconButton( onClick = { @@ -176,9 +176,9 @@ fun WriteDiaryScreen( modifier = Modifier .background( color = if (entries.size < 5) ClodyTheme.colors.gray02 else ClodyTheme.colors.gray06, - shape = RoundedCornerShape(10.dp) + shape = RoundedCornerShape(10.dp), ) - .size(41.dp) + .size(41.dp), ) { Image( painter = painterResource(id = R.drawable.ic_writediary_add), @@ -204,7 +204,7 @@ fun WriteDiaryScreen( modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp) - .padding(bottom = 28.dp) + .padding(bottom = 28.dp), ) } @@ -213,7 +213,7 @@ fun WriteDiaryScreen( showEmptyFieldsMessage = showEmptyFieldsMessage, onShowLimitMessageChange = { viewModel.updateShowLimitMessage(it) }, onShowEmptyFieldsMessageChange = { viewModel.updateShowEmptyFieldsMessage(it) }, - modifier = Modifier.align(Alignment.Center) + modifier = Modifier.align(Alignment.Center), ) } }, @@ -226,20 +226,20 @@ fun WriteDiaryScreen( .padding(horizontal = 24.dp) .clickable( indication = null, - interactionSource = remember { MutableInteractionSource() } + interactionSource = remember { MutableInteractionSource() }, ) { focusManager.clearFocus() }, - horizontalAlignment = Alignment.CenterHorizontally + horizontalAlignment = Alignment.CenterHorizontally, ) { Spacer(modifier = Modifier.heightForScreenPercentage(0.017f)) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { DiaryTitleText( date = stringResource(R.string.write_diary_month_and_date, month, day), separator = " ", - day = getDayOfWeek(year, month, day) + day = getDayOfWeek(year, month, day), ) Spacer(modifier = Modifier.weight(1f)) TooltipIcon( @@ -249,11 +249,11 @@ fun WriteDiaryScreen( Spacer(modifier = Modifier.heightForScreenPercentage(0.02f)) LazyColumn( modifier = Modifier.fillMaxSize(), - verticalArrangement = Arrangement.spacedBy(12.dp) + verticalArrangement = Arrangement.spacedBy(12.dp), ) { itemsIndexed( items = entries, - key = { index, _ -> index } + key = { index, _ -> index }, ) { index, text -> WriteDiaryTextField( entryNumber = index + 1, @@ -268,7 +268,7 @@ fun WriteDiaryScreen( }, isRemovable = entries.size > 1, maxLength = 50, - showWarning = showWarnings[index] + showWarning = showWarnings[index], ) } } @@ -281,7 +281,7 @@ fun WriteDiaryScreen( if (entryToDelete != -1) { viewModel.removeEntry(entryToDelete) } - } + }, ) } @@ -289,18 +289,19 @@ fun WriteDiaryScreen( ClodyDialog( onDismiss = { AmplitudeUtils.trackEvent(eventName = AmplitudeConstraints.WRITING_DIARY_NO_COMPLETE) - viewModel.updateShowDialog(false) }, + viewModel.updateShowDialog(false) + }, titleMassage = stringResource(R.string.write_diary_dialog_title), descriptionMassage = stringResource(R.string.write_diary_dialog_description), confirmOption = stringResource(R.string.write_diary_dialog_confirm_option), dismissOption = stringResource(R.string.write_diary_dialog_dismiss_option), confirmAction = { onCompleteClick() }, confirmButtonColor = ClodyTheme.colors.mainYellow, - confirmButtonTextColor = ClodyTheme.colors.gray01 + confirmButtonTextColor = ClodyTheme.colors.gray01, ) } } - } + }, ) if (isLoading) { LoadingScreen() @@ -313,7 +314,7 @@ private fun ShowToastMessages( showEmptyFieldsMessage: Boolean, onShowLimitMessageChange: (Boolean) -> Unit, onShowEmptyFieldsMessageChange: (Boolean) -> Unit, - modifier: Modifier + modifier: Modifier, ) { if (showLimitMessage) { ClodyToastMessage( @@ -322,7 +323,7 @@ private fun ShowToastMessages( backgroundColor = ClodyTheme.colors.gray04, contentColor = ClodyTheme.colors.white, durationMillis = 3000, - onDismiss = { onShowLimitMessageChange(false) } + onDismiss = { onShowLimitMessageChange(false) }, ) } @@ -333,7 +334,7 @@ private fun ShowToastMessages( backgroundColor = ClodyTheme.colors.gray04, contentColor = ClodyTheme.colors.white, durationMillis = 3000, - onDismiss = { onShowEmptyFieldsMessageChange(false) } + onDismiss = { onShowEmptyFieldsMessageChange(false) }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryViewModel.kt b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryViewModel.kt index 09235c28..9fe15c3b 100644 --- a/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryViewModel.kt +++ b/app/src/main/java/com/sopt/clody/presentation/ui/writediary/screen/WriteDiaryViewModel.kt @@ -21,7 +21,7 @@ import javax.inject.Inject @HiltViewModel class WriteDiaryViewModel @Inject constructor( private val diaryRepository: DiaryRepository, - private val networkUtil: NetworkUtil + private val networkUtil: NetworkUtil, ) : ViewModel() { private val _writeDiaryState = MutableStateFlow(WriteDiaryState.Idle) @@ -80,7 +80,7 @@ class WriteDiaryViewModel @Inject constructor( } _showFailureDialog.value = true WriteDiaryState.Failure(_failureMessage.value) - } + }, ) } } diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeConstraints.kt b/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeConstraints.kt index 082fa2ea..45b04609 100644 --- a/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeConstraints.kt +++ b/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeConstraints.kt @@ -3,6 +3,7 @@ package com.sopt.clody.presentation.utils.amplitude object AmplitudeConstraints { // 온보딩 const val ONBOARDING_ALARM = "onboarding_alarm" + // 홈 const val HOME = "home" const val HOME_CALENDAR_CLOVER = "home_calendar_clover" @@ -11,26 +12,32 @@ object AmplitudeConstraints { const val HOME_LIST_DIARY = "home_list_diary" const val HOME_DELETE_DIARY = "home_delete_diary" const val HOME_NO_DELETE_DIARY = "home_no_delete_diary" + // 리스트 const val LIST = "list" const val LIST_REPLY = "list_reply" const val LIST_DELETE_DIARY = "list_delete_diary" const val LIST_NO_DELETE_DIARY = "list_no_delete_diary" + // 일기 작성 const val WRITING_DIARY_ADD_LIST = "writing_diary_add_list" const val WRITING_DIARY_DELETE_LIST = "writing_diary_delete_list" const val WRITING_DIARY_BACK = "writing_diary_back" const val WRITING_DIARY_COMPLETE = "writing_diary_complete" const val WRITING_DIARY_NO_COMPLETE = "writing_diary_no_complete" + // 답장 대기 const val WAITING_DIARY = "waiting_diary" const val WAITING_DIARY_REPLY = "waiting_diary_reply" + // 일기 답장 const val REPLY = "reply" + // 설정 const val SETTING = "setting" const val LOGOUT = "logout" const val REVOKE = "revoke" + // FCM const val ALARM = "alarm" } diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeUtils.kt b/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeUtils.kt index fabb78d4..17716877 100644 --- a/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeUtils.kt +++ b/app/src/main/java/com/sopt/clody/presentation/utils/amplitude/AmplitudeUtils.kt @@ -13,8 +13,8 @@ object AmplitudeUtils { amplitude = Amplitude( Configuration( apiKey = BuildConfig.AMPLITUDE_API_KEY, - context = context - ) + context = context, + ), ) } @@ -25,7 +25,7 @@ object AmplitudeUtils { fun trackEventWithProperty(eventName: String, propertyName: String, propertyValue: T) { amplitude.track( eventType = eventName, - eventProperties = mapOf(propertyName to propertyValue) + eventProperties = mapOf(propertyName to propertyValue), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/base/UiState.kt b/app/src/main/java/com/sopt/clody/presentation/utils/base/UiState.kt index c6cc4fee..a9a541e8 100644 --- a/app/src/main/java/com/sopt/clody/presentation/utils/base/UiState.kt +++ b/app/src/main/java/com/sopt/clody/presentation/utils/base/UiState.kt @@ -10,7 +10,7 @@ sealed interface UiState { isEmpty = this is Empty, isLoading = this is Loading, isSuccess = this is Success<*>, - isFailure = this is Failure + isFailure = this is Failure, ) } @@ -18,5 +18,5 @@ data class UiStateModel( val isEmpty: Boolean = false, val isLoading: Boolean = false, val isSuccess: Boolean = false, - val isFailure: Boolean = false + val isFailure: Boolean = false, ) diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/extension/getDayOfWeek.kt b/app/src/main/java/com/sopt/clody/presentation/utils/extension/GetDayOfWeek.kt similarity index 100% rename from app/src/main/java/com/sopt/clody/presentation/utils/extension/getDayOfWeek.kt rename to app/src/main/java/com/sopt/clody/presentation/utils/extension/GetDayOfWeek.kt diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/extension/ModifierExt.kt b/app/src/main/java/com/sopt/clody/presentation/utils/extension/ModifierExt.kt index 62547af3..2083a819 100644 --- a/app/src/main/java/com/sopt/clody/presentation/utils/extension/ModifierExt.kt +++ b/app/src/main/java/com/sopt/clody/presentation/utils/extension/ModifierExt.kt @@ -67,7 +67,7 @@ fun Modifier.clickableWithoutRipple( this.clickable( indication = null, interactionSource = remember { MutableInteractionSource() }, - enabled = enabled + enabled = enabled, ) { onClick() } @@ -84,6 +84,6 @@ fun Modifier.roundedBackgroundWithBorder( .border( width = borderWidth, color = borderColor, - shape = RoundedCornerShape(cornerRadius) + shape = RoundedCornerShape(cornerRadius), ) } diff --git a/app/src/main/java/com/sopt/clody/presentation/utils/network/NetworkErrorMessage.kt b/app/src/main/java/com/sopt/clody/presentation/utils/network/ErrorMessages.kt similarity index 100% rename from app/src/main/java/com/sopt/clody/presentation/utils/network/NetworkErrorMessage.kt rename to app/src/main/java/com/sopt/clody/presentation/utils/network/ErrorMessages.kt diff --git a/app/src/main/java/com/sopt/clody/ui/theme/Color.kt b/app/src/main/java/com/sopt/clody/ui/theme/Color.kt index 9cf94249..9361f7b9 100644 --- a/app/src/main/java/com/sopt/clody/ui/theme/Color.kt +++ b/app/src/main/java/com/sopt/clody/ui/theme/Color.kt @@ -58,7 +58,7 @@ val defaultClodyColors = ClodyColors( gray07 = Gray07, gray08 = Gray08, gray09 = Gray09, - white = WHITE + white = WHITE, ) @Immutable @@ -84,7 +84,7 @@ data class ClodyColors( val gray07: Color, val gray08: Color, val gray09: Color, - val white: Color + val white: Color, ) val LocalClodyColors = staticCompositionLocalOf { defaultClodyColors } diff --git a/app/src/main/java/com/sopt/clody/ui/theme/Theme.kt b/app/src/main/java/com/sopt/clody/ui/theme/Theme.kt index 38b2cc18..9d5045f6 100644 --- a/app/src/main/java/com/sopt/clody/ui/theme/Theme.kt +++ b/app/src/main/java/com/sopt/clody/ui/theme/Theme.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.ReadOnlyComposable @Composable fun CLODYTheme( - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { CompositionLocalProvider(content = content) } diff --git a/app/src/main/java/com/sopt/clody/ui/theme/Type.kt b/app/src/main/java/com/sopt/clody/ui/theme/Type.kt index f5405e20..daa8bfee 100644 --- a/app/src/main/java/com/sopt/clody/ui/theme/Type.kt +++ b/app/src/main/java/com/sopt/clody/ui/theme/Type.kt @@ -13,7 +13,7 @@ import com.sopt.clody.R val pretendardFontFamily = FontFamily( Font(R.font.pretendard_medium, FontWeight.Medium, FontStyle.Normal), Font(R.font.pretendard_regular, FontWeight.Normal, FontStyle.Normal), - Font(R.font.pretendard_semibold, FontWeight.SemiBold, FontStyle.Normal) + Font(R.font.pretendard_semibold, FontWeight.SemiBold, FontStyle.Normal), ) private val pretendardTextStyle = TextStyle( @@ -85,12 +85,12 @@ val defaultClodyTypography = ClodyTypography( body4Medium = pretendardTextStyle.copy( fontSize = 13.sp, fontWeight = FontWeight.Medium, - lineHeight = 19.5.sp + lineHeight = 19.5.sp, ), body4SemiBold = pretendardTextStyle.copy( fontSize = 13.sp, fontWeight = FontWeight.SemiBold, - lineHeight = 19.5.sp + lineHeight = 19.5.sp, ), detail1SemiBold = pretendardTextStyle.copy( fontSize = 12.sp, @@ -105,7 +105,7 @@ val defaultClodyTypography = ClodyTypography( detail1Regular = pretendardTextStyle.copy( fontSize = 12.sp, fontWeight = FontWeight.Normal, - lineHeight = 18.sp + lineHeight = 18.sp, ), detail2SemiBold = pretendardTextStyle.copy( fontSize = 10.sp, @@ -120,7 +120,7 @@ val defaultClodyTypography = ClodyTypography( letterMedium = pretendardTextStyle.copy( fontSize = 14.sp, fontWeight = FontWeight.Medium, - lineHeight = 26.6.sp + lineHeight = 26.6.sp, ), ) diff --git a/app/src/test/java/com/sopt/clody/ExampleUnitTest.kt b/app/src/test/java/com/sopt/clody/ExampleUnitTest.kt index 28aae4b7..522ad970 100644 --- a/app/src/test/java/com/sopt/clody/ExampleUnitTest.kt +++ b/app/src/test/java/com/sopt/clody/ExampleUnitTest.kt @@ -1,9 +1,8 @@ package com.sopt.clody +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* - /** * Example local unit test, which will execute on the development machine (host). * @@ -14,4 +13,4 @@ class ExampleUnitTest { fun addition_isCorrect() { assertEquals(4, 2 + 2) } -} \ No newline at end of file +} diff --git a/build.gradle.kts b/build.gradle.kts index 680f26a5..3b4f986a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,4 +9,5 @@ plugins { alias(libs.plugins.ktlint) apply false alias(libs.plugins.google.services) apply false alias(libs.plugins.firebase.crashlytics.plugin) apply false + alias(libs.plugins.firebase.app.distribution) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a6c2ec7..8c64485c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -37,6 +37,7 @@ firebase-messaging = "24.0.0" firebase-analytics = "22.2.0" firebase-crashlytics = "19.0.3" firebase-crashlytics-plugin = "3.0.2" +firebase-app-distribution = "5.1.0" amplitude = "1.+" @@ -121,6 +122,7 @@ kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", versi ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } firebase-crashlytics-plugin = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics-plugin" } +firebase-app-distribution = { id = "com.google.firebase.appdistribution", version.ref = "firebase-app-distribution" } [bundles] androidx = [