diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt
index 59567680..19da835f 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/general/components/settings/CheckForUpdatesSetting.kt
@@ -4,14 +4,19 @@ import android.Manifest
import android.annotation.SuppressLint
import androidx.activity.ComponentActivity
import androidx.compose.foundation.lazy.LazyItemScope
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Security
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberPermissionState
import ua.acclorite.book_story.R
+import ua.acclorite.book_story.presentation.components.custom_dialog.CustomDialogWithContent
import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.data.MainState
import ua.acclorite.book_story.presentation.screens.settings.components.SwitchWithTitle
@@ -33,6 +38,28 @@ fun LazyItemScope.CheckForUpdatesSetting(
val notificationsPermissionState = rememberPermissionState(
permission = Manifest.permission.POST_NOTIFICATIONS
)
+ val showConfirmation = remember { mutableStateOf(false) }
+
+ if (showConfirmation.value) {
+ println(showConfirmation.value)
+ CustomDialogWithContent(
+ title = stringResource(id = R.string.enable_check_for_updates),
+ description = stringResource(id = R.string.enable_check_for_updates_description),
+ actionText = stringResource(id = R.string.enable),
+ imageVectorIcon = Icons.Default.Security,
+ isActionEnabled = true,
+ onDismiss = { showConfirmation.value = false },
+ onAction = {
+ onMainEvent(
+ MainEvent.OnChangeCheckForUpdates(
+ true
+ )
+ )
+ showConfirmation.value = false
+ },
+ withDivider = false
+ )
+ }
SwitchWithTitle(
selected = state.value.checkForUpdates!!,
@@ -46,11 +73,10 @@ fun LazyItemScope.CheckForUpdatesSetting(
activity = activity,
notificationsPermissionState = notificationsPermissionState,
onChangeCheckForUpdates = {
- onMainEvent(
- MainEvent.OnChangeCheckForUpdates(
- it
- )
- )
+ when (it) {
+ true -> showConfirmation.value = true
+ false -> onMainEvent(MainEvent.OnChangeCheckForUpdates(false))
+ }
}
)
)
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/StartScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/StartScreen.kt
index 0c6e43ca..f9a5f775 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/StartScreen.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/StartScreen.kt
@@ -45,11 +45,7 @@ fun StartScreenRoot() {
LaunchedEffect(Unit) {
startViewModel.checkPermissions(
storagePermissionState = storagePermissionState,
- notificationPermissionState = notificationsPermissionState,
- isCheckForUpdatesEnabled = mainState.value.checkForUpdates!!,
- onEnableCheckForUpdates = {
- mainViewModel.onEvent(MainEvent.OnChangeCheckForUpdates(true))
- }
+ notificationPermissionState = notificationsPermissionState
)
}
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartSettings.kt
index d3ebae96..40b8f799 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartSettings.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/StartSettings.kt
@@ -160,10 +160,7 @@ fun StartSettings(
onEvent(
StartEvent.OnNotificationsPermissionRequest(
activity,
- notificationsPermissionState,
- onEnableUpdates = {
- onMainEvent(MainEvent.OnChangeCheckForUpdates(true))
- }
+ notificationsPermissionState
)
)
}
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionItem.kt
index 73f08c29..b6a6a4a5 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionItem.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/components/permissions/StartPermissionItem.kt
@@ -74,7 +74,10 @@ fun StartPermissionItem(
onClick = onGrantClick,
contentPadding = ButtonDefaults.TextButtonContentPadding
) {
- Text(text = stringResource(id = R.string.grant))
+ Text(
+ text = stringResource(id = R.string.grant),
+ style = MaterialTheme.typography.labelLarge
+ )
}
} else {
TextButton(onClick = onGrantClick) {
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartEvent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartEvent.kt
index 2a5352e9..ea23f226 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartEvent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartEvent.kt
@@ -19,8 +19,7 @@ sealed class StartEvent {
data class OnNotificationsPermissionRequest(
val activity: ComponentActivity,
- val notificationsPermissionState: PermissionState,
- val onEnableUpdates: () -> Unit
+ val notificationsPermissionState: PermissionState
) : StartEvent()
data class OnGoToBrowse(val onNavigate: OnNavigate, val onCompletedStartGuide: () -> Unit) :
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt
index b0fa91fc..684d3695 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/start/data/StartViewModel.kt
@@ -20,16 +20,13 @@ import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.yield
-import ua.acclorite.book_story.domain.use_case.CheckForUpdates
import ua.acclorite.book_story.presentation.data.Screen
import ua.acclorite.book_story.presentation.data.launchActivity
import javax.inject.Inject
@OptIn(ExperimentalPermissionsApi::class)
@HiltViewModel
-class StartViewModel @Inject constructor(
- private val checkForUpdates: CheckForUpdates,
-) : ViewModel() {
+class StartViewModel @Inject constructor() : ViewModel() {
private val _state = MutableStateFlow(StartState())
val state = _state.asStateFlow()
@@ -198,7 +195,6 @@ class StartViewModel @Inject constructor(
notificationsPermissionGranted = true
)
}
- event.onEnableUpdates()
return
}
@@ -234,11 +230,6 @@ class StartViewModel @Inject constructor(
)
}
- event.onEnableUpdates()
- checkForUpdates.execute(
- postNotification = true
- )
-
break
}
}
@@ -267,9 +258,7 @@ class StartViewModel @Inject constructor(
fun checkPermissions(
storagePermissionState: PermissionState,
- notificationPermissionState: PermissionState,
- isCheckForUpdatesEnabled: Boolean,
- onEnableCheckForUpdates: () -> Unit
+ notificationPermissionState: PermissionState
) {
viewModelScope.launch(Dispatchers.IO) {
val legacyStoragePermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.R
@@ -286,13 +275,6 @@ class StartViewModel @Inject constructor(
true
}
- if (notificationPermissionGranted && !isCheckForUpdatesEnabled) {
- onEnableCheckForUpdates()
- checkForUpdates.execute(
- postNotification = true
- )
- }
-
_state.update {
it.copy(
storagePermissionGranted = storagePermissionGranted,
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index fadaaf35..1cfbd565 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -36,6 +36,7 @@
Перемістити книгу?
Видалити історію читання?
Підтвердити оновлення?
+ Увімнкути перевірку на оновлення?
@@ -77,6 +78,11 @@
Натиснувши на кнопку «Завантажити», ви перейдете в ваш браузер
та завантажете останнє оновлення автоматично.
+
+ Увімкнувши «Перевіряти на оновлення» застосунок буде отримувати інформацію про останній реліз
+ з «api.github.com» кожен раз, коли застосунок запускається.
+ Хочете продовжити та увімкнути «Перевіряти на оновлення»?
+
@@ -153,6 +159,7 @@
Ні
Завантажити
Готово
+ Увімкнути
файли
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8c880051..0dd57139 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -52,6 +52,7 @@
Move book?
Delete reading history?
Confirm update?
+ Enable check for updates?
@@ -93,6 +94,12 @@
By clicking the «Download» button you will be transferred
to your browser and download the latest update automatically.
+
+ By enabling «Check for updates»
+ the app will retrieve latest release information from «api.github.com» each time
+ when app starts.
+ Do you want to proceed and enable «Check for updates»?
+
@@ -168,6 +175,7 @@
No
Download
Done
+ Enable
files