From 5d8e0e370d1a493354bd94bf9e8ffd6d93c8000c Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 13 May 2025 11:24:45 -0400 Subject: [PATCH] Fix pnp settings not properly syncing or dynamically updating. --- .../pnp/PhoneNumberPrivacySettingsViewModel.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt index 2b0a5ff785..ddc62e478f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt @@ -3,6 +3,11 @@ package org.thoughtcrime.securesms.components.settings.app.privacy.pnp import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobs.ProfileUploadJob @@ -13,6 +18,7 @@ import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues.PhoneNumberS import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.storage.StorageSyncHelper +import kotlin.time.Duration.Companion.seconds class PhoneNumberPrivacySettingsViewModel : ViewModel() { @@ -25,6 +31,15 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { val state: State = _state + init { + viewModelScope.launch(Dispatchers.IO) { + while (isActive) { + refresh() + delay(5.seconds) + } + } + } + fun setNobodyCanSeeMyNumber() { setPhoneNumberSharingEnabled(false) } @@ -52,6 +67,7 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { private fun setDiscoverableByPhoneNumber(discoverable: Boolean) { SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = if (discoverable) PhoneNumberDiscoverabilityMode.DISCOVERABLE else PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() AppDependencies.jobManager.startChain(RefreshAttributesJob()).then(RefreshOwnProfileJob()).enqueue() refresh()