Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<application
android:name=".MemorySealApplication"
Expand Down
2 changes: 2 additions & 0 deletions feature/splash/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ dependencies {
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.test.ext)
androidTestImplementation(libs.androidx.test.espresso)

implementation(libs.accompanist.permissions)
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,42 @@
package com.idiotfrogs.splash

import android.Manifest
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.provider.Settings
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.isGranted
import com.google.accompanist.permissions.rememberPermissionState
import com.google.accompanist.permissions.shouldShowRationale
import com.idiotfrogs.navigation.LocalComposeMSNavigator
import com.idiotfrogs.navigation.Routes
import org.orbitmvi.orbit.compose.collectSideEffect

@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun SplashRoute(
viewModel: SplashViewModel = hiltViewModel()
) {
val navigator = LocalComposeMSNavigator.current
val context = LocalContext.current

// TIRAMISU 이상인 κ²½μš°μ—λŠ” μ•Œλ¦Ό κΆŒν•œ ν•„μš”
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val notificationPermission = rememberPermissionState(permission = Manifest.permission.POST_NOTIFICATIONS)
LaunchedEffect(Unit) {
when {
notificationPermission.status.isGranted -> return@LaunchedEffect // κΆŒν•œ 이미 ν—ˆμš©λ¨
notificationPermission.status.shouldShowRationale -> context.openSetting() // κΆŒν•œ κ±°λΆ€ μ‹œ μ„€μ • μ°½
else -> notificationPermission.launchPermissionRequest() // κΆŒν•œ μš”μ²­
}
}
}

viewModel.collectSideEffect { event ->
when (event) {
Expand All @@ -33,4 +59,11 @@ fun SplashRoute(
}

@Composable
fun SplashScreen() { /** todo: μΆ”ν›„ κ΅¬ν˜„ */ }
fun SplashScreen() { /** todo: μΆ”ν›„ κ΅¬ν˜„ */ }

private fun Context.openSetting() {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
data = Uri.fromParts("package", this@openSetting.packageName, null)
}
this.startActivity(intent)
}
4 changes: 4 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ stabilityAnalyzer = "0.7.2"

haze = "1.7.2"

accompanist = "0.37.3"

[libraries]
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
Expand Down Expand Up @@ -104,6 +106,8 @@ material = { group = "com.google.android.material", name = "material", version.r

haze = { group = "dev.chrisbanes.haze", name = "haze", version.ref = "haze" }

accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" }

[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
Expand Down
Loading