From 8c1e261747ec7fa319dbbd773ad2d761dd099585 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Thu, 19 Sep 2024 11:31:32 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[feature/fix-build-issues]=20KSP=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EB=82=AE=EC=B6=94=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8601b488..63ac2c58 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -42,7 +42,7 @@ androidx-test = "1.6.2" androidx-test-rules = "1.6.1" gradleplugin = "8.6.1" -kspplugin = "2.0.20-1.0.25" +kspplugin = "2.0.20-1.0.24" dagger-hilt = "2.52" dagger-hilt-navigation-compose = "1.2.0" From ea7f3279aa4ef19e3c293cf5305d42f8d26aa458 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Thu, 19 Sep 2024 11:44:54 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[feature/fix-build-issues]=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9D=BC=EB=B6=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/notification/SchemeActivity.kt | 133 +++++++++++------- 1 file changed, 79 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt index da1295bc..3cd92b50 100644 --- a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt +++ b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt @@ -36,7 +36,6 @@ import org.sopt.official.common.navigator.DeepLinkType import org.sopt.official.common.util.extractQueryParameter import org.sopt.official.common.util.isExpiredDate import org.sopt.official.common.util.serializableExtra -import org.sopt.official.feature.home.HomeActivity import org.sopt.official.feature.notification.detail.NotificationDetailActivity import org.sopt.official.network.persistence.SoptDataStore import timber.log.Timber @@ -45,70 +44,96 @@ import javax.inject.Inject @AndroidEntryPoint class SchemeActivity : AppCompatActivity() { - @Inject - lateinit var dataStore: SoptDataStore - private val args by serializableExtra(Argument("", "")) - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - handleDeepLink() - } + @Inject + lateinit var dataStore: SoptDataStore + private val args by serializableExtra( + Argument( + "", + "" + ) + ) - private fun handleDeepLink() { - val link = args?.link - val linkIntent = when (link.isNullOrBlank()) { - true -> NotificationDetailActivity.getIntent(this, args?.notificationId.orEmpty()) - false -> checkLinkExpiration(link) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + handleDeepLink() } - when (!isTaskRoot) { - true -> startActivity(linkIntent) - false -> TaskStackBuilder.create(this).apply { - if (!isIntentToHome(linkIntent)) { - addNextIntentWithParentStack( - DeepLinkType.getHomeIntent(UserStatus.of(dataStore.userStatus)) - ) + private fun handleDeepLink() { + val link = args?.link + val linkIntent = if (link.isNullOrBlank()) { + NotificationDetailActivity.getIntent( + this, + args?.notificationId.orEmpty() + ) + } else { + checkLinkExpiration(link) + } + + when (!isTaskRoot) { + true -> startActivity(linkIntent) + false -> TaskStackBuilder.create(this).apply { + if (!isIntentToHome()) { + addNextIntentWithParentStack( + DeepLinkType.getHomeIntent(UserStatus.of(dataStore.userStatus)) + ) + } + addNextIntent(linkIntent) + }.startActivities() } - addNextIntent(linkIntent) - }.startActivities() + finish() } - finish() - } - private fun checkLinkExpiration(link: String): Intent { - return try { - val expiredAt = link.extractQueryParameter("expiredAt") - when (expiredAt.isExpiredDate()) { - true -> DeepLinkType.getHomeIntent( - UserStatus.of(dataStore.userStatus), DeepLinkType.EXPIRED - ) + private fun checkLinkExpiration(link: String): Intent { + return try { + val expiredAt = link.extractQueryParameter("expiredAt") + when (expiredAt.isExpiredDate()) { + true -> DeepLinkType.getHomeIntent( + UserStatus.of(dataStore.userStatus), + DeepLinkType.EXPIRED + ) + + else -> when (link.contains("http://") || link.contains("https://")) { + true -> Intent( + Intent.ACTION_VIEW, + Uri.parse(link) + ) - else -> when (link.contains("http://") || link.contains("https://")) { - true -> Intent(Intent.ACTION_VIEW, Uri.parse(link)) - false -> DeepLinkType.of(link).getIntent( - this, UserStatus.of(dataStore.userStatus), link - ) + false -> DeepLinkType.of(link).getIntent( + this, + UserStatus.of(dataStore.userStatus), + link + ) + } + } + } catch (exception: Exception) { + Timber.e(exception) + DeepLinkType.getHomeIntent( + UserStatus.of(dataStore.userStatus), + DeepLinkType.UNKNOWN + ) } - } - } catch (exception: Exception) { - Timber.e(exception) - DeepLinkType.getHomeIntent( - UserStatus.of(dataStore.userStatus), DeepLinkType.UNKNOWN - ) } - } - private fun Intent.isIntentToHome(): Boolean = - intent.component?.className == HomeActivity::class.java.name + private fun isIntentToHome(): Boolean { + return intent.action == Intent.ACTION_MAIN && intent.categories?.contains(Intent.CATEGORY_LAUNCHER) == true } - } - data class Argument( - val notificationId: String, val link: String - ) : Serializable + data class Argument( + val notificationId: String, + val link: String + ) : Serializable - companion object { - @JvmStatic - fun getIntent(context: Context, args: Argument) = Intent(context, SchemeActivity::class.java).putExtra("args", args) - } + companion object { + @JvmStatic + fun getIntent( + context: Context, + args: Argument + ) = Intent( + context, + SchemeActivity::class.java + ).putExtra( + "args", + args + ) + } } From f7d4eb841b4c26a1a3e9e1e71bbf8657c8cbd18d Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Fri, 20 Sep 2024 15:06:10 +0900 Subject: [PATCH 3/8] [fix-build-issue] Apply ksp2 false --- gradle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle.properties b/gradle.properties index 51bbe082..16d2db80 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,3 +9,4 @@ org.gradle.jvmargs=-Xmx4092m -Dfile.encoding\=UTF-8 android.useAndroidX=true kotlin.incremental.usePreciseJavaTracking=true android.enableJetifier=false +ksp.useKSP2=false From 655a641970f75452672204c7d7ad04427a7fb897 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Sun, 22 Sep 2024 18:56:23 +0900 Subject: [PATCH 4/8] [feature/fix-build-issues] Downgrade kotlin versions --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 63ac2c58..0f850faf 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ targetSdk = "34" appVersion = "2.3.2" versionCode = "20302" -kotlin = "2.0.20" +kotlin = "2.0.10" kotlinx-serialization-json = "1.7.2" kotlinx-serialization-converter = "1.0.0" kotlinx-coroutines = "1.9.0" @@ -42,7 +42,7 @@ androidx-test = "1.6.2" androidx-test-rules = "1.6.1" gradleplugin = "8.6.1" -kspplugin = "2.0.20-1.0.24" +kspplugin = "2.0.10-1.0.24" dagger-hilt = "2.52" dagger-hilt-navigation-compose = "1.2.0" From c7002071e8a7854609517c1ebb5bec2a897737f3 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Tue, 24 Sep 2024 02:31:45 +0900 Subject: [PATCH 5/8] Little fix --- .../feature/notification/SchemeActivity.kt | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt index 3cd92b50..fa4812cc 100644 --- a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt +++ b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt @@ -46,12 +46,7 @@ import javax.inject.Inject class SchemeActivity : AppCompatActivity() { @Inject lateinit var dataStore: SoptDataStore - private val args by serializableExtra( - Argument( - "", - "" - ) - ) + private val args by serializableExtra(Argument("", "")) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -115,7 +110,7 @@ class SchemeActivity : AppCompatActivity() { } private fun isIntentToHome(): Boolean { - return intent.action == Intent.ACTION_MAIN && intent.categories?.contains(Intent.CATEGORY_LAUNCHER) == true + return intent.action == Intent.ACTION_MAIN && (intent.categories?.contains(Intent.CATEGORY_LAUNCHER) == true) } data class Argument( @@ -125,15 +120,7 @@ class SchemeActivity : AppCompatActivity() { companion object { @JvmStatic - fun getIntent( - context: Context, - args: Argument - ) = Intent( - context, - SchemeActivity::class.java - ).putExtra( - "args", - args - ) + fun getIntent(context: Context, args: Argument) = Intent(context, SchemeActivity::class.java) + .putExtra("args", args) } } From 00da9d9586ae49e660c602650e33d5480b3ce566 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Tue, 24 Sep 2024 10:54:03 +0900 Subject: [PATCH 6/8] [feature/fix-build-issues] Fix github acton script --- .github/workflows/develop_PR_builder.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/develop_PR_builder.yml b/.github/workflows/develop_PR_builder.yml index 245c1b3e..8489bf11 100644 --- a/.github/workflows/develop_PR_builder.yml +++ b/.github/workflows/develop_PR_builder.yml @@ -67,8 +67,5 @@ jobs: - name: Access Firebase Service run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json - # - name: Lint Check - # run: ./gradlew ktlintCheck --exclude '**/*.kts' src - - name: Build debug APK - run: ./gradlew assembleDebug --stacktrace + run: ./gradlew :app:assembleDebug --stacktrace From 95680a8e531962435d65cf7ecc9c1e51f79ceb6f Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Tue, 24 Sep 2024 11:15:58 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[feature/fix-build-issues]=20=EC=95=A1?= =?UTF-8?q?=EC=85=98=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20+=20=EB=B2=84=EC=A0=84=20bump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/develop_PR_builder.yml | 2 +- .github/workflows/develop_merge_builder.yml | 7 ++----- gradle/libs.versions.toml | 18 +++++++++--------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/develop_PR_builder.yml b/.github/workflows/develop_PR_builder.yml index 8489bf11..05b15a5c 100644 --- a/.github/workflows/develop_PR_builder.yml +++ b/.github/workflows/develop_PR_builder.yml @@ -30,7 +30,7 @@ jobs: - name: set up JDK 17 uses: actions/setup-java@v4 with: - distribution: 'temurin' + distribution: 'zulu' java-version: 17 - name: Change gradlew permissions diff --git a/.github/workflows/develop_merge_builder.yml b/.github/workflows/develop_merge_builder.yml index 3b9c8032..c10f48c2 100644 --- a/.github/workflows/develop_merge_builder.yml +++ b/.github/workflows/develop_merge_builder.yml @@ -30,7 +30,7 @@ jobs: - name: set up JDK 17 uses: actions/setup-java@v4 with: - distribution: 'temurin' + distribution: 'zulu' java-version: 17 - name: Change gradlew permissions @@ -67,8 +67,5 @@ jobs: - name: Access Firebase Service run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json - # - name: Lint Check - # run: ./gradlew ktlintCheck --exclude '**/*.kts' src - - name: Build debug APK - run: ./gradlew assembleDebug --stacktrace + run: ./gradlew :app:assembleDebug --stacktrace diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0f850faf..627a96a0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ targetSdk = "34" appVersion = "2.3.2" versionCode = "20302" -kotlin = "2.0.10" +kotlin = "2.0.20" kotlinx-serialization-json = "1.7.2" kotlinx-serialization-converter = "1.0.0" kotlinx-coroutines = "1.9.0" @@ -16,13 +16,13 @@ corektx = "1.13.1" appcompat = "1.7.0" activity = "1.9.2" fragmentKtx = "1.8.3" -lifecycle = "2.8.5" +lifecycle = "2.8.6" swipe-refresh-layout = "1.1.0" -navigation = "2.8.0" -startup = "1.1.1" +navigation = "2.8.1" +startup = "1.2.0" customtab = "1.8.0" exifinterface = "1.3.7" -compose-bom = "2024.09.01" +compose-bom = "2024.09.02" androidx-paging = "3.3.2" desugarJdk = "2.1.2" @@ -42,7 +42,7 @@ androidx-test = "1.6.2" androidx-test-rules = "1.6.1" gradleplugin = "8.6.1" -kspplugin = "2.0.10-1.0.24" +kspplugin = "2.0.20-1.0.25" dagger-hilt = "2.52" dagger-hilt-navigation-compose = "1.2.0" @@ -66,9 +66,9 @@ process-pheonix = "3.0.0" amplitude = "1.18.0" spotless = "6.25.0" constraintlayout = "2.1.4" -benchmark-macro-junit4 = "1.3.0" -androidx-baselineprofile = "1.3.0" -profileinstaller = "1.3.1" +benchmark-macro-junit4 = "1.3.1" +androidx-baselineprofile = "1.3.1" +profileinstaller = "1.4.0" [libraries] agp = { module = "com.android.tools.build:gradle", version.ref = "gradleplugin" } From f95ae33a3009d7c6996c3a57348ab40b4a57e985 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Tue, 24 Sep 2024 11:30:28 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[feature/fix-build-issues]=20AndroidEntryPo?= =?UTF-8?q?int=20=EB=96=BC=EA=B8=B0=20+=20Gradle=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../official/feature/notification/SchemeActivity.kt | 13 +++++++------ .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../official/network/persistence/SoptDataStore.kt | 13 +++++++++++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt index fa4812cc..5109c45d 100644 --- a/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt +++ b/app/src/main/java/org/sopt/official/feature/notification/SchemeActivity.kt @@ -30,22 +30,23 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.EntryPointAccessors import org.sopt.official.auth.model.UserStatus import org.sopt.official.common.navigator.DeepLinkType import org.sopt.official.common.util.extractQueryParameter import org.sopt.official.common.util.isExpiredDate import org.sopt.official.common.util.serializableExtra import org.sopt.official.feature.notification.detail.NotificationDetailActivity -import org.sopt.official.network.persistence.SoptDataStore +import org.sopt.official.network.persistence.SoptDataStoreEntryPoint import timber.log.Timber import java.io.Serializable -import javax.inject.Inject -@AndroidEntryPoint class SchemeActivity : AppCompatActivity() { - @Inject - lateinit var dataStore: SoptDataStore + private val dataStore by lazy { + EntryPointAccessors + .fromApplication(applicationContext) + .soptDataStore() + } private val args by serializableExtra(Argument("", "")) override fun onCreate(savedInstanceState: Bundle?) { diff --git a/build-logic/gradle/wrapper/gradle-wrapper.properties b/build-logic/gradle/wrapper/gradle-wrapper.properties index f9d497ca..7632234d 100644 --- a/build-logic/gradle/wrapper/gradle-wrapper.properties +++ b/build-logic/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Jan 13 12:46:38 KST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/core/network/src/main/java/org/sopt/official/network/persistence/SoptDataStore.kt b/core/network/src/main/java/org/sopt/official/network/persistence/SoptDataStore.kt index 499c79d1..298ce07b 100644 --- a/core/network/src/main/java/org/sopt/official/network/persistence/SoptDataStore.kt +++ b/core/network/src/main/java/org/sopt/official/network/persistence/SoptDataStore.kt @@ -26,11 +26,14 @@ package org.sopt.official.network.persistence import android.content.Context import androidx.core.content.edit +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject -import javax.inject.Singleton +import dagger.hilt.components.SingletonComponent import org.sopt.official.common.di.LocalStore import org.sopt.official.common.file.createSharedPreference +import javax.inject.Inject +import javax.inject.Singleton @Singleton class SoptDataStore @Inject constructor( @@ -77,3 +80,9 @@ class SoptDataStore @Inject constructor( private const val UNAUTHENTICATED = "UNAUTHENTICATED" } } + +@EntryPoint +@InstallIn(SingletonComponent::class) +interface SoptDataStoreEntryPoint { + fun soptDataStore(): SoptDataStore +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0aaefbca..df97d72b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME