mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-11 08:47:33 +00:00
Adds an explainer to install UnifiedPush apps if they are not installed.
This commit is contained in:
@@ -371,6 +371,7 @@ object LocalPreferences {
|
||||
automaticallyShowUrlPreview,
|
||||
automaticallyHideNavigationBars,
|
||||
automaticallyShowProfilePictures,
|
||||
false,
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ data class Settings(
|
||||
val automaticallyShowUrlPreview: ConnectivityType = ConnectivityType.ALWAYS,
|
||||
val automaticallyHideNavigationBars: BooleanType = BooleanType.ALWAYS,
|
||||
val automaticallyShowProfilePictures: ConnectivityType = ConnectivityType.ALWAYS,
|
||||
val dontShowPushNotificationSelector: Boolean = false
|
||||
val dontShowPushNotificationSelector: Boolean = false,
|
||||
val dontAskForNotificationPermissions: Boolean = false
|
||||
)
|
||||
|
||||
enum class ThemeType(val screenCode: Int, val resourceId: Int) {
|
||||
|
||||
+13
-2
@@ -31,6 +31,7 @@ class SettingsState() {
|
||||
var automaticallyHideNavigationBars by mutableStateOf(BooleanType.ALWAYS)
|
||||
var automaticallyShowProfilePictures by mutableStateOf(ConnectivityType.ALWAYS)
|
||||
var dontShowPushNotificationSelector by mutableStateOf<Boolean>(false)
|
||||
var dontAskForNotificationPermissions by mutableStateOf<Boolean>(false)
|
||||
|
||||
var isOnMobileData: State<Boolean> = mutableStateOf(false)
|
||||
|
||||
@@ -87,6 +88,8 @@ class SharedPreferencesViewModel : ViewModel() {
|
||||
sharedPrefs.automaticallyShowUrlPreview = savedSettings.automaticallyShowUrlPreview
|
||||
sharedPrefs.automaticallyHideNavigationBars = savedSettings.automaticallyHideNavigationBars
|
||||
sharedPrefs.automaticallyShowProfilePictures = savedSettings.automaticallyShowProfilePictures
|
||||
sharedPrefs.dontShowPushNotificationSelector = savedSettings.dontShowPushNotificationSelector
|
||||
sharedPrefs.dontAskForNotificationPermissions = savedSettings.dontAskForNotificationPermissions
|
||||
|
||||
updateLanguageInTheUI()
|
||||
}
|
||||
@@ -154,12 +157,19 @@ class SharedPreferencesViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun dontShowPushNotificationSelector() {
|
||||
if (!sharedPrefs.dontShowPushNotificationSelector) {
|
||||
if (sharedPrefs.dontShowPushNotificationSelector == false) {
|
||||
sharedPrefs.dontShowPushNotificationSelector = true
|
||||
saveSharedSettings()
|
||||
}
|
||||
}
|
||||
|
||||
fun dontAskForNotificationPermissions() {
|
||||
if (sharedPrefs.dontAskForNotificationPermissions == false) {
|
||||
sharedPrefs.dontAskForNotificationPermissions = true
|
||||
saveSharedSettings()
|
||||
}
|
||||
}
|
||||
|
||||
fun updateConnectivityStatusState(isOnMobileDataState: State<Boolean>) {
|
||||
if (sharedPrefs.isOnMobileData != isOnMobileDataState) {
|
||||
sharedPrefs.isOnMobileData = isOnMobileDataState
|
||||
@@ -186,7 +196,8 @@ class SharedPreferencesViewModel : ViewModel() {
|
||||
sharedPrefs.automaticallyShowUrlPreview,
|
||||
sharedPrefs.automaticallyHideNavigationBars,
|
||||
sharedPrefs.automaticallyShowProfilePictures,
|
||||
sharedPrefs.dontShowPushNotificationSelector
|
||||
sharedPrefs.dontShowPushNotificationSelector,
|
||||
sharedPrefs.dontAskForNotificationPermissions
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
+17
-15
@@ -29,6 +29,7 @@ import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
import com.google.accompanist.permissions.PermissionState
|
||||
import com.google.accompanist.permissions.isGranted
|
||||
import com.google.accompanist.permissions.rememberPermissionState
|
||||
import com.patrykandpatrick.vico.compose.axis.axisLabelComponent
|
||||
@@ -79,8 +80,6 @@ fun NotificationScreen(
|
||||
|
||||
WatchAccountForNotifications(notifFeedViewModel, accountViewModel)
|
||||
|
||||
CheckifItNeedsToRequestNotificationPermission()
|
||||
|
||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||
DisposableEffect(lifeCycleOwner) {
|
||||
val observer = LifecycleEventObserver { _, event ->
|
||||
@@ -114,26 +113,29 @@ fun NotificationScreen(
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Turn this into an Account flag
|
||||
var hasAlreadyAskedNotificationPermissions = false
|
||||
|
||||
@OptIn(ExperimentalPermissionsApi::class)
|
||||
@Composable
|
||||
fun CheckifItNeedsToRequestNotificationPermission() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !hasAlreadyAskedNotificationPermissions) {
|
||||
val notificationPermissionState = rememberPermissionState(
|
||||
Manifest.permission.POST_NOTIFICATIONS
|
||||
)
|
||||
fun CheckifItNeedsToRequestNotificationPermission(
|
||||
sharedPreferencesViewModel: SharedPreferencesViewModel
|
||||
): PermissionState {
|
||||
val notificationPermissionState = rememberPermissionState(
|
||||
Manifest.permission.POST_NOTIFICATIONS
|
||||
)
|
||||
|
||||
if (!notificationPermissionState.status.isGranted) {
|
||||
hasAlreadyAskedNotificationPermissions = true
|
||||
if (!sharedPreferencesViewModel.sharedPrefs.dontAskForNotificationPermissions) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
if (!notificationPermissionState.status.isGranted) {
|
||||
sharedPreferencesViewModel.dontAskForNotificationPermissions()
|
||||
|
||||
// This will pause the APP, including the connection with relays.
|
||||
LaunchedEffect(notificationPermissionState) {
|
||||
notificationPermissionState.launchPermissionRequest()
|
||||
// This will pause the APP, including the connection with relays.
|
||||
LaunchedEffect(notificationPermissionState) {
|
||||
notificationPermissionState.launchPermissionRequest()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return notificationPermissionState
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
Reference in New Issue
Block a user