diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt index 38bda98c..f1b5c0f1 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt @@ -531,7 +531,9 @@ fun ChannelScreen( if (ageGateUnlocked == false) { ChannelScreenAgeGate( onAccept = { - viewModel.ageGateUnlocked = true + scope.launch { + viewModel.unlockAgeGate() + } }, onDeny = { onToggleDrawer() diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt index 2f2f35f5..d2b6333d 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt @@ -49,6 +49,7 @@ import chat.revolt.callbacks.UiCallback import chat.revolt.callbacks.UiCallbacks import chat.revolt.persistence.KVStorage import chat.revolt.screens.chat.ChatRouterDestination +import chat.revolt.settings.providers.AgeGateUnlockedStorageProvider import dagger.hilt.android.lifecycle.HiltViewModel import io.ktor.http.ContentType import kotlinx.coroutines.Dispatchers @@ -113,6 +114,11 @@ class ChannelScreenViewModel @Inject constructor( this.denyMessageFieldReasonResource = R.string.typing_blank this.editingMessage = null this.ageGateUnlocked = channel?.nsfw != true + viewModelScope.launch { + if (ageGateUnlocked != true) { + ageGateUnlocked = AgeGateUnlockedStorageProvider.getAgeGateUnlocked() + } + } viewModelScope.launch { draftContent = kvStorage.get("draftContent/$id") ?: "" @@ -129,6 +135,11 @@ class ChannelScreenViewModel @Inject constructor( this.loadMessages(50) } + suspend fun unlockAgeGate() { + AgeGateUnlockedStorageProvider.setAgeGateUnlocked(true) + ageGateUnlocked = true + } + private suspend fun ensureSelfHasMember() { channel?.server?.let { serverId -> RevoltAPI.selfId?.let { selfId -> diff --git a/app/src/main/java/chat/revolt/settings/providers/AgeGateUnlockedStorageProvider.kt b/app/src/main/java/chat/revolt/settings/providers/AgeGateUnlockedStorageProvider.kt new file mode 100644 index 00000000..4357b047 --- /dev/null +++ b/app/src/main/java/chat/revolt/settings/providers/AgeGateUnlockedStorageProvider.kt @@ -0,0 +1,16 @@ +package chat.revolt.settings.providers + +import chat.revolt.RevoltApplication +import chat.revolt.persistence.KVStorage + +object AgeGateUnlockedStorageProvider { + private val kv = KVStorage(RevoltApplication.instance) + + suspend fun setAgeGateUnlocked(unlocked: Boolean) { + kv.set("ageGateUnlocked", unlocked) + } + + suspend fun getAgeGateUnlocked(): Boolean { + return kv.getBoolean("ageGateUnlocked") ?: false + } +} \ No newline at end of file