Remove unnecessary interface

This commit is contained in:
bemusementpark 2024-07-10 12:34:46 +09:30
parent 6b2979da68
commit 5855bcd17f
5 changed files with 159 additions and 334 deletions

View File

@ -15,8 +15,8 @@ import org.session.libsession.avatars.ProfileContactPhoto
import org.session.libsession.avatars.ResourceContactPhoto import org.session.libsession.avatars.ResourceContactPhoto
import org.session.libsession.messaging.contacts.Contact import org.session.libsession.messaging.contacts.Contact
import org.session.libsession.utilities.Address import org.session.libsession.utilities.Address
import org.session.libsession.utilities.AppTextSecurePreferences
import org.session.libsession.utilities.GroupUtil import org.session.libsession.utilities.GroupUtil
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.recipients.Recipient import org.session.libsession.utilities.recipients.Recipient
import org.thoughtcrime.securesms.dependencies.DatabaseComponent import org.thoughtcrime.securesms.dependencies.DatabaseComponent
import org.thoughtcrime.securesms.mms.GlideApp import org.thoughtcrime.securesms.mms.GlideApp
@ -27,7 +27,7 @@ class ProfilePictureView @JvmOverloads constructor(
) : RelativeLayout(context, attrs) { ) : RelativeLayout(context, attrs) {
private val binding = ViewProfilePictureBinding.inflate(LayoutInflater.from(context), this) private val binding = ViewProfilePictureBinding.inflate(LayoutInflater.from(context), this)
private val glide: GlideRequests = GlideApp.with(this) private val glide: GlideRequests = GlideApp.with(this)
private val prefs = AppTextSecurePreferences(context) private val prefs = TextSecurePreferences(context)
private val userPublicKey = prefs.getLocalNumber() private val userPublicKey = prefs.getLocalNumber()
var publicKey: String? = null var publicKey: String? = null
var displayName: String? = null var displayName: String? = null

View File

@ -5,7 +5,6 @@ import dagger.Module
import dagger.hilt.EntryPoint import dagger.hilt.EntryPoint
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import org.session.libsession.utilities.AppTextSecurePreferences
import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.repository.ConversationRepository import org.thoughtcrime.securesms.repository.ConversationRepository
import org.thoughtcrime.securesms.repository.DefaultConversationRepository import org.thoughtcrime.securesms.repository.DefaultConversationRepository
@ -14,9 +13,6 @@ import org.thoughtcrime.securesms.repository.DefaultConversationRepository
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
abstract class AppModule { abstract class AppModule {
@Binds
abstract fun bindTextSecurePreferences(preferences: AppTextSecurePreferences): TextSecurePreferences
@Binds @Binds
abstract fun bindConversationRepository(repository: DefaultConversationRepository): ConversationRepository abstract fun bindConversationRepository(repository: DefaultConversationRepository): ConversationRepository
} }

View File

@ -10,12 +10,10 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.session.libsession.utilities.AppTextSecurePreferences
import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsignal.crypto.MnemonicCodec import org.session.libsignal.crypto.MnemonicCodec
import org.session.libsignal.utilities.hexEncodedPrivateKey import org.session.libsignal.utilities.hexEncodedPrivateKey
@ -27,7 +25,7 @@ import javax.inject.Inject
class RecoveryPasswordViewModel @Inject constructor( class RecoveryPasswordViewModel @Inject constructor(
private val application: Application private val application: Application
): AndroidViewModel(application) { ): AndroidViewModel(application) {
val prefs = AppTextSecurePreferences(application) val prefs = TextSecurePreferences(application)
val seed = MutableStateFlow<String?>(null) val seed = MutableStateFlow<String?>(null)
val mnemonic = seed.filterNotNull() val mnemonic = seed.filterNotNull()

View File

@ -14,7 +14,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import org.session.libsession.utilities.AppTextSecurePreferences import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.ui.color.ClassicDark import org.thoughtcrime.securesms.ui.color.ClassicDark
import org.thoughtcrime.securesms.ui.color.ClassicLight import org.thoughtcrime.securesms.ui.color.ClassicLight
import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.color.Colors
@ -73,7 +73,7 @@ private fun Colors.toMaterialColors() = androidx.compose.material.Colors(
isLight = isLight isLight = isLight
) )
@Composable private fun Context.colors() = AppTextSecurePreferences(this).colors() @Composable private fun Context.colors() = TextSecurePreferences(this).colors()
val pillShape = RoundedCornerShape(percent = 50) val pillShape = RoundedCornerShape(percent = 50)
val buttonShape = pillShape val buttonShape = pillShape

View File

@ -13,20 +13,6 @@ import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asSharedFlow
import org.session.libsession.R import org.session.libsession.R
import org.session.libsession.utilities.TextSecurePreferences.Companion.AUTOPLAY_AUDIO_MESSAGES
import org.session.libsession.utilities.TextSecurePreferences.Companion.CALL_NOTIFICATIONS_ENABLED
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT
import org.session.libsession.utilities.TextSecurePreferences.Companion.FOLLOW_SYSTEM_SETTINGS
import org.session.libsession.utilities.TextSecurePreferences.Companion.HIDE_PASSWORD
import org.session.libsession.utilities.TextSecurePreferences.Companion.LAST_VACUUM_TIME
import org.session.libsession.utilities.TextSecurePreferences.Companion.LEGACY_PREF_KEY_SELECTED_UI_MODE
import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_DARK
import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT
import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_ACCENT_COLOR
import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_STYLE
import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_NOTIFICATION
import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_WARNING
import org.session.libsignal.utilities.Log import org.session.libsignal.utilities.Log
import java.io.IOException import java.io.IOException
import java.util.Arrays import java.util.Arrays
@ -34,159 +20,10 @@ import java.util.Date
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
interface TextSecurePreferences { @Singleton
class TextSecurePreferences @Inject constructor(
fun getLastConfigurationSyncTime(): Long @ApplicationContext private val context: Context
fun setLastConfigurationSyncTime(value: Long) ) {
fun getConfigurationMessageSynced(): Boolean
fun setConfigurationMessageSynced(value: Boolean)
fun isPushEnabled(): Boolean
fun setPushEnabled(value: Boolean)
fun getPushToken(): String?
fun setPushToken(value: String)
fun getPushRegisterTime(): Long
fun setPushRegisterTime(value: Long)
fun isScreenLockEnabled(): Boolean
fun setScreenLockEnabled(value: Boolean)
fun getScreenLockTimeout(): Long
fun setScreenLockTimeout(value: Long)
fun setBackupPassphrase(passphrase: String?)
fun getBackupPassphrase(): String?
fun setEncryptedBackupPassphrase(encryptedPassphrase: String?)
fun getEncryptedBackupPassphrase(): String?
fun setBackupEnabled(value: Boolean)
fun isBackupEnabled(): Boolean
fun setNextBackupTime(time: Long)
fun getNextBackupTime(): Long
fun setBackupSaveDir(dirUri: String?)
fun getBackupSaveDir(): String?
fun getNeedsSqlCipherMigration(): Boolean
fun setAttachmentEncryptedSecret(secret: String)
fun setAttachmentUnencryptedSecret(secret: String?)
fun getAttachmentEncryptedSecret(): String?
fun getAttachmentUnencryptedSecret(): String?
fun setDatabaseEncryptedSecret(secret: String)
fun setDatabaseUnencryptedSecret(secret: String?)
fun getDatabaseUnencryptedSecret(): String?
fun getDatabaseEncryptedSecret(): String?
fun isIncognitoKeyboardEnabled(): Boolean
fun isReadReceiptsEnabled(): Boolean
fun setReadReceiptsEnabled(enabled: Boolean)
fun isTypingIndicatorsEnabled(): Boolean
fun setTypingIndicatorsEnabled(enabled: Boolean)
fun isLinkPreviewsEnabled(): Boolean
fun setLinkPreviewsEnabled(enabled: Boolean)
fun hasSeenGIFMetaDataWarning(): Boolean
fun setHasSeenGIFMetaDataWarning()
fun isGifSearchInGridLayout(): Boolean
fun setIsGifSearchInGridLayout(isGrid: Boolean)
fun getProfileKey(): String?
fun setProfileKey(key: String?)
fun setProfileName(name: String?)
fun getProfileName(): String?
fun setProfileAvatarId(id: Int)
fun getProfileAvatarId(): Int
fun setProfilePictureURL(url: String?)
fun getProfilePictureURL(): String?
fun getNotificationPriority(): Int
fun getMessageBodyTextSize(): Int
fun setDirectCaptureCameraId(value: Int)
fun getDirectCaptureCameraId(): Int
fun getNotificationPrivacy(): NotificationPrivacyPreference
fun getRepeatAlertsCount(): Int
fun getLocalRegistrationId(): Int
fun setLocalRegistrationId(registrationId: Int)
fun isInThreadNotifications(): Boolean
fun isUniversalUnidentifiedAccess(): Boolean
fun getUpdateApkRefreshTime(): Long
fun setUpdateApkRefreshTime(value: Long)
fun setUpdateApkDownloadId(value: Long)
fun getUpdateApkDownloadId(): Long
fun setUpdateApkDigest(value: String?)
fun getUpdateApkDigest(): String?
fun getLocalNumber(): String?
fun getHasLegacyConfig(): Boolean
fun setHasLegacyConfig(newValue: Boolean)
fun setLocalNumber(localNumber: String)
fun removeLocalNumber()
fun isEnterSendsEnabled(): Boolean
fun isPasswordDisabled(): Boolean
fun setPasswordDisabled(disabled: Boolean)
fun isScreenSecurityEnabled(): Boolean
fun getLastVersionCode(): Int
fun setLastVersionCode(versionCode: Int)
fun isPassphraseTimeoutEnabled(): Boolean
fun getPassphraseTimeoutInterval(): Int
fun getLanguage(): String?
fun isNotificationsEnabled(): Boolean
fun getNotificationRingtone(): Uri
fun removeNotificationRingtone()
fun setNotificationRingtone(ringtone: String?)
fun setNotificationVibrateEnabled(enabled: Boolean)
fun isNotificationVibrateEnabled(): Boolean
fun getNotificationLedColor(): Int
fun isThreadLengthTrimmingEnabled(): Boolean
fun isSystemEmojiPreferred(): Boolean
fun getMobileMediaDownloadAllowed(): Set<String>?
fun getWifiMediaDownloadAllowed(): Set<String>?
fun getRoamingMediaDownloadAllowed(): Set<String>?
fun getMediaDownloadAllowed(key: String, @ArrayRes defaultValuesRes: Int): Set<String>?
fun getLogEncryptedSecret(): String?
fun setLogEncryptedSecret(base64Secret: String?)
fun getLogUnencryptedSecret(): String?
fun setLogUnencryptedSecret(base64Secret: String?)
fun getNotificationChannelVersion(): Int
fun setNotificationChannelVersion(version: Int)
fun getNotificationMessagesChannelVersion(): Int
fun setNotificationMessagesChannelVersion(version: Int)
fun getBooleanPreference(key: String?, defaultValue: Boolean): Boolean
fun setBooleanPreference(key: String?, value: Boolean)
fun getStringPreference(key: String, defaultValue: String?): String?
fun setStringPreference(key: String?, value: String?)
fun getIntegerPreference(key: String, defaultValue: Int): Int
fun setIntegerPreference(key: String, value: Int)
fun setIntegerPreferenceBlocking(key: String, value: Int): Boolean
fun getLongPreference(key: String, defaultValue: Long): Long
fun setLongPreference(key: String, value: Long)
fun removePreference(key: String)
fun getStringSetPreference(key: String, defaultValues: Set<String>): Set<String>?
fun getHasViewedSeed(): Boolean
fun setHasViewedSeed(hasViewedSeed: Boolean)
fun setRestorationTime(time: Long)
fun getRestorationTime(): Long
fun getLastProfilePictureUpload(): Long
fun setLastProfilePictureUpload(newValue: Long)
fun getLastSnodePoolRefreshDate(): Long
fun setLastSnodePoolRefreshDate(date: Date)
fun shouldUpdateProfile(profileUpdateTime: Long): Boolean
fun setLastProfileUpdateTime(profileUpdateTime: Long)
fun getLastOpenTimeDate(): Long
fun setLastOpenDate()
fun hasSeenLinkPreviewSuggestionDialog(): Boolean
fun setHasSeenLinkPreviewSuggestionDialog()
fun hasHiddenMessageRequests(): Boolean
fun setHasHiddenMessageRequests()
fun setShownCallWarning(): Boolean
fun setShownCallNotification(): Boolean
fun isCallNotificationsEnabled(): Boolean
fun getLastVacuum(): Long
fun setLastVacuumNow()
fun getFingerprintKeyGenerated(): Boolean
fun setFingerprintKeyGenerated()
fun getSelectedAccentColor(): String?
@StyleRes fun getAccentColorStyle(): Int?
fun setAccentColorStyle(@StyleRes newColorStyle: Int?)
fun getThemeStyle(): String
fun getFollowSystemSettings(): Boolean
fun setThemeStyle(themeStyle: String)
fun setFollowSystemSettings(followSystemSettings: Boolean)
fun autoplayAudioMessages(): Boolean
fun hasForcedNewConfig(): Boolean
fun hasPreference(key: String): Boolean
fun clearAll()
fun getHidePassword(): Boolean
fun setHidePassword(value: Boolean)
companion object { companion object {
val TAG = TextSecurePreferences::class.simpleName val TAG = TextSecurePreferences::class.simpleName
@ -825,246 +662,240 @@ interface TextSecurePreferences {
getDefaultSharedPreferences(context).edit().clear().commit() getDefaultSharedPreferences(context).edit().clear().commit()
} }
} }
}
@Singleton fun getLastConfigurationSyncTime(): Long {
class AppTextSecurePreferences @Inject constructor(
@ApplicationContext private val context: Context
): TextSecurePreferences {
override fun getLastConfigurationSyncTime(): Long {
return getLongPreference(TextSecurePreferences.LAST_CONFIGURATION_SYNC_TIME, 0) return getLongPreference(TextSecurePreferences.LAST_CONFIGURATION_SYNC_TIME, 0)
} }
override fun setLastConfigurationSyncTime(value: Long) { fun setLastConfigurationSyncTime(value: Long) {
setLongPreference(TextSecurePreferences.LAST_CONFIGURATION_SYNC_TIME, value) setLongPreference(TextSecurePreferences.LAST_CONFIGURATION_SYNC_TIME, value)
} }
override fun getConfigurationMessageSynced(): Boolean { fun getConfigurationMessageSynced(): Boolean {
return getBooleanPreference(TextSecurePreferences.CONFIGURATION_SYNCED, false) return getBooleanPreference(TextSecurePreferences.CONFIGURATION_SYNCED, false)
} }
override fun setConfigurationMessageSynced(value: Boolean) { fun setConfigurationMessageSynced(value: Boolean) {
setBooleanPreference(TextSecurePreferences.CONFIGURATION_SYNCED, value) setBooleanPreference(TextSecurePreferences.CONFIGURATION_SYNCED, value)
TextSecurePreferences._events.tryEmit(TextSecurePreferences.CONFIGURATION_SYNCED) TextSecurePreferences._events.tryEmit(TextSecurePreferences.CONFIGURATION_SYNCED)
} }
override fun isPushEnabled(): Boolean { fun isPushEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.IS_PUSH_ENABLED, false) return getBooleanPreference(TextSecurePreferences.IS_PUSH_ENABLED, false)
} }
override fun setPushEnabled(value: Boolean) { fun setPushEnabled(value: Boolean) {
setBooleanPreference(TextSecurePreferences.IS_PUSH_ENABLED, value) setBooleanPreference(TextSecurePreferences.IS_PUSH_ENABLED, value)
} }
override fun getPushToken(): String? { fun getPushToken(): String? {
return getStringPreference(TextSecurePreferences.PUSH_TOKEN, "") return getStringPreference(TextSecurePreferences.PUSH_TOKEN, "")
} }
override fun setPushToken(value: String) { fun setPushToken(value: String) {
setStringPreference(TextSecurePreferences.PUSH_TOKEN, value) setStringPreference(TextSecurePreferences.PUSH_TOKEN, value)
} }
override fun getPushRegisterTime(): Long { fun getPushRegisterTime(): Long {
return getLongPreference(TextSecurePreferences.PUSH_REGISTER_TIME, 0) return getLongPreference(TextSecurePreferences.PUSH_REGISTER_TIME, 0)
} }
override fun setPushRegisterTime(value: Long) { fun setPushRegisterTime(value: Long) {
setLongPreference(TextSecurePreferences.PUSH_REGISTER_TIME, value) setLongPreference(TextSecurePreferences.PUSH_REGISTER_TIME, value)
} }
override fun isScreenLockEnabled(): Boolean { fun isScreenLockEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.SCREEN_LOCK, false) return getBooleanPreference(TextSecurePreferences.SCREEN_LOCK, false)
} }
override fun setScreenLockEnabled(value: Boolean) { fun setScreenLockEnabled(value: Boolean) {
setBooleanPreference(TextSecurePreferences.SCREEN_LOCK, value) setBooleanPreference(TextSecurePreferences.SCREEN_LOCK, value)
} }
override fun getScreenLockTimeout(): Long { fun getScreenLockTimeout(): Long {
return getLongPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT, 0) return getLongPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT, 0)
} }
override fun setScreenLockTimeout(value: Long) { fun setScreenLockTimeout(value: Long) {
setLongPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT, value) setLongPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT, value)
} }
override fun setBackupPassphrase(passphrase: String?) { fun setBackupPassphrase(passphrase: String?) {
setStringPreference(TextSecurePreferences.BACKUP_PASSPHRASE, passphrase) setStringPreference(TextSecurePreferences.BACKUP_PASSPHRASE, passphrase)
} }
override fun getBackupPassphrase(): String? { fun getBackupPassphrase(): String? {
return getStringPreference(TextSecurePreferences.BACKUP_PASSPHRASE, null) return getStringPreference(TextSecurePreferences.BACKUP_PASSPHRASE, null)
} }
override fun setEncryptedBackupPassphrase(encryptedPassphrase: String?) { fun setEncryptedBackupPassphrase(encryptedPassphrase: String?) {
setStringPreference(TextSecurePreferences.ENCRYPTED_BACKUP_PASSPHRASE, encryptedPassphrase) setStringPreference(TextSecurePreferences.ENCRYPTED_BACKUP_PASSPHRASE, encryptedPassphrase)
} }
override fun getEncryptedBackupPassphrase(): String? { fun getEncryptedBackupPassphrase(): String? {
return getStringPreference(TextSecurePreferences.ENCRYPTED_BACKUP_PASSPHRASE, null) return getStringPreference(TextSecurePreferences.ENCRYPTED_BACKUP_PASSPHRASE, null)
} }
override fun setBackupEnabled(value: Boolean) { fun setBackupEnabled(value: Boolean) {
setBooleanPreference(TextSecurePreferences.BACKUP_ENABLED, value) setBooleanPreference(TextSecurePreferences.BACKUP_ENABLED, value)
} }
override fun isBackupEnabled(): Boolean { fun isBackupEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.BACKUP_ENABLED, false) return getBooleanPreference(TextSecurePreferences.BACKUP_ENABLED, false)
} }
override fun setNextBackupTime(time: Long) { fun setNextBackupTime(time: Long) {
setLongPreference(TextSecurePreferences.BACKUP_TIME, time) setLongPreference(TextSecurePreferences.BACKUP_TIME, time)
} }
override fun getNextBackupTime(): Long { fun getNextBackupTime(): Long {
return getLongPreference(TextSecurePreferences.BACKUP_TIME, -1) return getLongPreference(TextSecurePreferences.BACKUP_TIME, -1)
} }
override fun setBackupSaveDir(dirUri: String?) { fun setBackupSaveDir(dirUri: String?) {
setStringPreference(TextSecurePreferences.BACKUP_SAVE_DIR, dirUri) setStringPreference(TextSecurePreferences.BACKUP_SAVE_DIR, dirUri)
} }
override fun getBackupSaveDir(): String? { fun getBackupSaveDir(): String? {
return getStringPreference(TextSecurePreferences.BACKUP_SAVE_DIR, null) return getStringPreference(TextSecurePreferences.BACKUP_SAVE_DIR, null)
} }
override fun getNeedsSqlCipherMigration(): Boolean { fun getNeedsSqlCipherMigration(): Boolean {
return getBooleanPreference(TextSecurePreferences.NEEDS_SQLCIPHER_MIGRATION, false) return getBooleanPreference(TextSecurePreferences.NEEDS_SQLCIPHER_MIGRATION, false)
} }
override fun setAttachmentEncryptedSecret(secret: String) { fun setAttachmentEncryptedSecret(secret: String) {
setStringPreference(TextSecurePreferences.ATTACHMENT_ENCRYPTED_SECRET, secret) setStringPreference(TextSecurePreferences.ATTACHMENT_ENCRYPTED_SECRET, secret)
} }
override fun setAttachmentUnencryptedSecret(secret: String?) { fun setAttachmentUnencryptedSecret(secret: String?) {
setStringPreference(TextSecurePreferences.ATTACHMENT_UNENCRYPTED_SECRET, secret) setStringPreference(TextSecurePreferences.ATTACHMENT_UNENCRYPTED_SECRET, secret)
} }
override fun getAttachmentEncryptedSecret(): String? { fun getAttachmentEncryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.ATTACHMENT_ENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.ATTACHMENT_ENCRYPTED_SECRET, null)
} }
override fun getAttachmentUnencryptedSecret(): String? { fun getAttachmentUnencryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.ATTACHMENT_UNENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.ATTACHMENT_UNENCRYPTED_SECRET, null)
} }
override fun setDatabaseEncryptedSecret(secret: String) { fun setDatabaseEncryptedSecret(secret: String) {
setStringPreference(TextSecurePreferences.DATABASE_ENCRYPTED_SECRET, secret) setStringPreference(TextSecurePreferences.DATABASE_ENCRYPTED_SECRET, secret)
} }
override fun setDatabaseUnencryptedSecret(secret: String?) { fun setDatabaseUnencryptedSecret(secret: String?) {
setStringPreference(TextSecurePreferences.DATABASE_UNENCRYPTED_SECRET, secret) setStringPreference(TextSecurePreferences.DATABASE_UNENCRYPTED_SECRET, secret)
} }
override fun getDatabaseUnencryptedSecret(): String? { fun getDatabaseUnencryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.DATABASE_UNENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.DATABASE_UNENCRYPTED_SECRET, null)
} }
override fun getDatabaseEncryptedSecret(): String? { fun getDatabaseEncryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.DATABASE_ENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.DATABASE_ENCRYPTED_SECRET, null)
} }
override fun isIncognitoKeyboardEnabled(): Boolean { fun isIncognitoKeyboardEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.INCOGNITO_KEYBORAD_PREF, true) return getBooleanPreference(TextSecurePreferences.INCOGNITO_KEYBORAD_PREF, true)
} }
override fun isReadReceiptsEnabled(): Boolean { fun isReadReceiptsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.READ_RECEIPTS_PREF, false) return getBooleanPreference(TextSecurePreferences.READ_RECEIPTS_PREF, false)
} }
override fun setReadReceiptsEnabled(enabled: Boolean) { fun setReadReceiptsEnabled(enabled: Boolean) {
setBooleanPreference(TextSecurePreferences.READ_RECEIPTS_PREF, enabled) setBooleanPreference(TextSecurePreferences.READ_RECEIPTS_PREF, enabled)
} }
override fun isTypingIndicatorsEnabled(): Boolean { fun isTypingIndicatorsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.TYPING_INDICATORS, false) return getBooleanPreference(TextSecurePreferences.TYPING_INDICATORS, false)
} }
override fun setTypingIndicatorsEnabled(enabled: Boolean) { fun setTypingIndicatorsEnabled(enabled: Boolean) {
setBooleanPreference(TextSecurePreferences.TYPING_INDICATORS, enabled) setBooleanPreference(TextSecurePreferences.TYPING_INDICATORS, enabled)
} }
override fun isLinkPreviewsEnabled(): Boolean { fun isLinkPreviewsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.LINK_PREVIEWS, false) return getBooleanPreference(TextSecurePreferences.LINK_PREVIEWS, false)
} }
override fun setLinkPreviewsEnabled(enabled: Boolean) { fun setLinkPreviewsEnabled(enabled: Boolean) {
setBooleanPreference(TextSecurePreferences.LINK_PREVIEWS, enabled) setBooleanPreference(TextSecurePreferences.LINK_PREVIEWS, enabled)
} }
override fun hasSeenGIFMetaDataWarning(): Boolean { fun hasSeenGIFMetaDataWarning(): Boolean {
return getBooleanPreference(TextSecurePreferences.GIF_METADATA_WARNING, false) return getBooleanPreference(TextSecurePreferences.GIF_METADATA_WARNING, false)
} }
override fun setHasSeenGIFMetaDataWarning() { fun setHasSeenGIFMetaDataWarning() {
setBooleanPreference(TextSecurePreferences.GIF_METADATA_WARNING, true) setBooleanPreference(TextSecurePreferences.GIF_METADATA_WARNING, true)
} }
override fun isGifSearchInGridLayout(): Boolean { fun isGifSearchInGridLayout(): Boolean {
return getBooleanPreference(TextSecurePreferences.GIF_GRID_LAYOUT, false) return getBooleanPreference(TextSecurePreferences.GIF_GRID_LAYOUT, false)
} }
override fun setIsGifSearchInGridLayout(isGrid: Boolean) { fun setIsGifSearchInGridLayout(isGrid: Boolean) {
setBooleanPreference(TextSecurePreferences.GIF_GRID_LAYOUT, isGrid) setBooleanPreference(TextSecurePreferences.GIF_GRID_LAYOUT, isGrid)
} }
override fun getProfileKey(): String? { fun getProfileKey(): String? {
return getStringPreference(TextSecurePreferences.PROFILE_KEY_PREF, null) return getStringPreference(TextSecurePreferences.PROFILE_KEY_PREF, null)
} }
override fun setProfileKey(key: String?) { fun setProfileKey(key: String?) {
setStringPreference(TextSecurePreferences.PROFILE_KEY_PREF, key) setStringPreference(TextSecurePreferences.PROFILE_KEY_PREF, key)
} }
override fun setProfileName(name: String?) { fun setProfileName(name: String?) {
setStringPreference(TextSecurePreferences.PROFILE_NAME_PREF, name) setStringPreference(TextSecurePreferences.PROFILE_NAME_PREF, name)
TextSecurePreferences._events.tryEmit(TextSecurePreferences.PROFILE_NAME_PREF) TextSecurePreferences._events.tryEmit(TextSecurePreferences.PROFILE_NAME_PREF)
} }
override fun getProfileName(): String? { fun getProfileName(): String? {
return getStringPreference(TextSecurePreferences.PROFILE_NAME_PREF, null) return getStringPreference(TextSecurePreferences.PROFILE_NAME_PREF, null)
} }
override fun setProfileAvatarId(id: Int) { fun setProfileAvatarId(id: Int) {
setIntegerPreference(TextSecurePreferences.PROFILE_AVATAR_ID_PREF, id) setIntegerPreference(TextSecurePreferences.PROFILE_AVATAR_ID_PREF, id)
} }
override fun getProfileAvatarId(): Int { fun getProfileAvatarId(): Int {
return getIntegerPreference(TextSecurePreferences.PROFILE_AVATAR_ID_PREF, 0) return getIntegerPreference(TextSecurePreferences.PROFILE_AVATAR_ID_PREF, 0)
} }
override fun setProfilePictureURL(url: String?) { fun setProfilePictureURL(url: String?) {
setStringPreference(TextSecurePreferences.PROFILE_AVATAR_URL_PREF, url) setStringPreference(TextSecurePreferences.PROFILE_AVATAR_URL_PREF, url)
} }
override fun getProfilePictureURL(): String? { fun getProfilePictureURL(): String? {
return getStringPreference(TextSecurePreferences.PROFILE_AVATAR_URL_PREF, null) return getStringPreference(TextSecurePreferences.PROFILE_AVATAR_URL_PREF, null)
} }
override fun getNotificationPriority(): Int { fun getNotificationPriority(): Int {
return getStringPreference( return getStringPreference(
TextSecurePreferences.NOTIFICATION_PRIORITY_PREF, NotificationCompat.PRIORITY_HIGH.toString())!!.toInt() TextSecurePreferences.NOTIFICATION_PRIORITY_PREF, NotificationCompat.PRIORITY_HIGH.toString())!!.toInt()
} }
override fun getMessageBodyTextSize(): Int { fun getMessageBodyTextSize(): Int {
return getStringPreference(TextSecurePreferences.MESSAGE_BODY_TEXT_SIZE_PREF, "16")!!.toInt() return getStringPreference(TextSecurePreferences.MESSAGE_BODY_TEXT_SIZE_PREF, "16")!!.toInt()
} }
override fun setDirectCaptureCameraId(value: Int) { fun setDirectCaptureCameraId(value: Int) {
setIntegerPreference(TextSecurePreferences.DIRECT_CAPTURE_CAMERA_ID, value) setIntegerPreference(TextSecurePreferences.DIRECT_CAPTURE_CAMERA_ID, value)
} }
override fun getDirectCaptureCameraId(): Int { fun getDirectCaptureCameraId(): Int {
return getIntegerPreference(TextSecurePreferences.DIRECT_CAPTURE_CAMERA_ID, Camera.CameraInfo.CAMERA_FACING_BACK) return getIntegerPreference(TextSecurePreferences.DIRECT_CAPTURE_CAMERA_ID, Camera.CameraInfo.CAMERA_FACING_BACK)
} }
override fun getNotificationPrivacy(): NotificationPrivacyPreference { fun getNotificationPrivacy(): NotificationPrivacyPreference {
return NotificationPrivacyPreference(getStringPreference( return NotificationPrivacyPreference(getStringPreference(
TextSecurePreferences.NOTIFICATION_PRIVACY_PREF, "all")) TextSecurePreferences.NOTIFICATION_PRIVACY_PREF, "all"))
} }
override fun getRepeatAlertsCount(): Int { fun getRepeatAlertsCount(): Int {
return try { return try {
getStringPreference(TextSecurePreferences.REPEAT_ALERTS_PREF, "0")!!.toInt() getStringPreference(TextSecurePreferences.REPEAT_ALERTS_PREF, "0")!!.toInt()
} catch (e: NumberFormatException) { } catch (e: NumberFormatException) {
@ -1073,111 +904,111 @@ class AppTextSecurePreferences @Inject constructor(
} }
} }
override fun getLocalRegistrationId(): Int { fun getLocalRegistrationId(): Int {
return getIntegerPreference(TextSecurePreferences.LOCAL_REGISTRATION_ID_PREF, 0) return getIntegerPreference(TextSecurePreferences.LOCAL_REGISTRATION_ID_PREF, 0)
} }
override fun setLocalRegistrationId(registrationId: Int) { fun setLocalRegistrationId(registrationId: Int) {
setIntegerPreference(TextSecurePreferences.LOCAL_REGISTRATION_ID_PREF, registrationId) setIntegerPreference(TextSecurePreferences.LOCAL_REGISTRATION_ID_PREF, registrationId)
} }
override fun isInThreadNotifications(): Boolean { fun isInThreadNotifications(): Boolean {
return getBooleanPreference(TextSecurePreferences.IN_THREAD_NOTIFICATION_PREF, true) return getBooleanPreference(TextSecurePreferences.IN_THREAD_NOTIFICATION_PREF, true)
} }
override fun isUniversalUnidentifiedAccess(): Boolean { fun isUniversalUnidentifiedAccess(): Boolean {
return getBooleanPreference(TextSecurePreferences.UNIVERSAL_UNIDENTIFIED_ACCESS, false) return getBooleanPreference(TextSecurePreferences.UNIVERSAL_UNIDENTIFIED_ACCESS, false)
} }
override fun getUpdateApkRefreshTime(): Long { fun getUpdateApkRefreshTime(): Long {
return getLongPreference(TextSecurePreferences.UPDATE_APK_REFRESH_TIME_PREF, 0L) return getLongPreference(TextSecurePreferences.UPDATE_APK_REFRESH_TIME_PREF, 0L)
} }
override fun setUpdateApkRefreshTime(value: Long) { fun setUpdateApkRefreshTime(value: Long) {
setLongPreference(TextSecurePreferences.UPDATE_APK_REFRESH_TIME_PREF, value) setLongPreference(TextSecurePreferences.UPDATE_APK_REFRESH_TIME_PREF, value)
} }
override fun setUpdateApkDownloadId(value: Long) { fun setUpdateApkDownloadId(value: Long) {
setLongPreference(TextSecurePreferences.UPDATE_APK_DOWNLOAD_ID, value) setLongPreference(TextSecurePreferences.UPDATE_APK_DOWNLOAD_ID, value)
} }
override fun getUpdateApkDownloadId(): Long { fun getUpdateApkDownloadId(): Long {
return getLongPreference(TextSecurePreferences.UPDATE_APK_DOWNLOAD_ID, -1) return getLongPreference(TextSecurePreferences.UPDATE_APK_DOWNLOAD_ID, -1)
} }
override fun setUpdateApkDigest(value: String?) { fun setUpdateApkDigest(value: String?) {
setStringPreference(TextSecurePreferences.UPDATE_APK_DIGEST, value) setStringPreference(TextSecurePreferences.UPDATE_APK_DIGEST, value)
} }
override fun getUpdateApkDigest(): String? { fun getUpdateApkDigest(): String? {
return getStringPreference(TextSecurePreferences.UPDATE_APK_DIGEST, null) return getStringPreference(TextSecurePreferences.UPDATE_APK_DIGEST, null)
} }
override fun getLocalNumber(): String? { fun getLocalNumber(): String? {
return getStringPreference(TextSecurePreferences.LOCAL_NUMBER_PREF, null) return getStringPreference(TextSecurePreferences.LOCAL_NUMBER_PREF, null)
} }
override fun getHasLegacyConfig(): Boolean { fun getHasLegacyConfig(): Boolean {
return getBooleanPreference(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG, false) return getBooleanPreference(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG, false)
} }
override fun setHasLegacyConfig(newValue: Boolean) { fun setHasLegacyConfig(newValue: Boolean) {
setBooleanPreference(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG, newValue) setBooleanPreference(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG, newValue)
TextSecurePreferences._events.tryEmit(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG) TextSecurePreferences._events.tryEmit(TextSecurePreferences.HAS_RECEIVED_LEGACY_CONFIG)
} }
override fun setLocalNumber(localNumber: String) { fun setLocalNumber(localNumber: String) {
setStringPreference(TextSecurePreferences.LOCAL_NUMBER_PREF, localNumber.toLowerCase()) setStringPreference(TextSecurePreferences.LOCAL_NUMBER_PREF, localNumber.toLowerCase())
} }
override fun removeLocalNumber() { fun removeLocalNumber() {
removePreference(TextSecurePreferences.LOCAL_NUMBER_PREF) removePreference(TextSecurePreferences.LOCAL_NUMBER_PREF)
} }
override fun isEnterSendsEnabled(): Boolean { fun isEnterSendsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.ENTER_SENDS_PREF, false) return getBooleanPreference(TextSecurePreferences.ENTER_SENDS_PREF, false)
} }
override fun isPasswordDisabled(): Boolean { fun isPasswordDisabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.DISABLE_PASSPHRASE_PREF, true) return getBooleanPreference(TextSecurePreferences.DISABLE_PASSPHRASE_PREF, true)
} }
override fun setPasswordDisabled(disabled: Boolean) { fun setPasswordDisabled(disabled: Boolean) {
setBooleanPreference(TextSecurePreferences.DISABLE_PASSPHRASE_PREF, disabled) setBooleanPreference(TextSecurePreferences.DISABLE_PASSPHRASE_PREF, disabled)
} }
override fun isScreenSecurityEnabled(): Boolean { fun isScreenSecurityEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.SCREEN_SECURITY_PREF, true) return getBooleanPreference(TextSecurePreferences.SCREEN_SECURITY_PREF, true)
} }
override fun getLastVersionCode(): Int { fun getLastVersionCode(): Int {
return getIntegerPreference(TextSecurePreferences.LAST_VERSION_CODE_PREF, 0) return getIntegerPreference(TextSecurePreferences.LAST_VERSION_CODE_PREF, 0)
} }
@Throws(IOException::class) @Throws(IOException::class)
override fun setLastVersionCode(versionCode: Int) { fun setLastVersionCode(versionCode: Int) {
if (!setIntegerPreferenceBlocking(TextSecurePreferences.LAST_VERSION_CODE_PREF, versionCode)) { if (!setIntegerPreferenceBlocking(TextSecurePreferences.LAST_VERSION_CODE_PREF, versionCode)) {
throw IOException("couldn't write version code to sharedpreferences") throw IOException("couldn't write version code to sharedpreferences")
} }
} }
override fun isPassphraseTimeoutEnabled(): Boolean { fun isPassphraseTimeoutEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_PREF, false) return getBooleanPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_PREF, false)
} }
override fun getPassphraseTimeoutInterval(): Int { fun getPassphraseTimeoutInterval(): Int {
return getIntegerPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_INTERVAL_PREF, 5 * 60) return getIntegerPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_INTERVAL_PREF, 5 * 60)
} }
override fun getLanguage(): String? { fun getLanguage(): String? {
return getStringPreference(TextSecurePreferences.LANGUAGE_PREF, "zz") return getStringPreference(TextSecurePreferences.LANGUAGE_PREF, "zz")
} }
override fun isNotificationsEnabled(): Boolean { fun isNotificationsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.NOTIFICATION_PREF, true) return getBooleanPreference(TextSecurePreferences.NOTIFICATION_PREF, true)
} }
override fun getNotificationRingtone(): Uri { fun getNotificationRingtone(): Uri {
var result = getStringPreference(TextSecurePreferences.RINGTONE_PREF, Settings.System.DEFAULT_NOTIFICATION_URI.toString()) var result = getStringPreference(TextSecurePreferences.RINGTONE_PREF, Settings.System.DEFAULT_NOTIFICATION_URI.toString())
if (result != null && result.startsWith("file:")) { if (result != null && result.startsWith("file:")) {
result = Settings.System.DEFAULT_NOTIFICATION_URI.toString() result = Settings.System.DEFAULT_NOTIFICATION_URI.toString()
@ -1185,130 +1016,130 @@ class AppTextSecurePreferences @Inject constructor(
return Uri.parse(result) return Uri.parse(result)
} }
override fun removeNotificationRingtone() { fun removeNotificationRingtone() {
removePreference(TextSecurePreferences.RINGTONE_PREF) removePreference(TextSecurePreferences.RINGTONE_PREF)
} }
override fun setNotificationRingtone(ringtone: String?) { fun setNotificationRingtone(ringtone: String?) {
setStringPreference(TextSecurePreferences.RINGTONE_PREF, ringtone) setStringPreference(TextSecurePreferences.RINGTONE_PREF, ringtone)
} }
override fun setNotificationVibrateEnabled(enabled: Boolean) { fun setNotificationVibrateEnabled(enabled: Boolean) {
setBooleanPreference(TextSecurePreferences.VIBRATE_PREF, enabled) setBooleanPreference(TextSecurePreferences.VIBRATE_PREF, enabled)
} }
override fun isNotificationVibrateEnabled(): Boolean { fun isNotificationVibrateEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.VIBRATE_PREF, true) return getBooleanPreference(TextSecurePreferences.VIBRATE_PREF, true)
} }
override fun getNotificationLedColor(): Int { fun getNotificationLedColor(): Int {
return getIntegerPreference(TextSecurePreferences.LED_COLOR_PREF_PRIMARY, context.getColor(R.color.accent_green)) return getIntegerPreference(TextSecurePreferences.LED_COLOR_PREF_PRIMARY, context.getColor(R.color.accent_green))
} }
override fun isThreadLengthTrimmingEnabled(): Boolean { fun isThreadLengthTrimmingEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.THREAD_TRIM_ENABLED, true) return getBooleanPreference(TextSecurePreferences.THREAD_TRIM_ENABLED, true)
} }
override fun isSystemEmojiPreferred(): Boolean { fun isSystemEmojiPreferred(): Boolean {
return getBooleanPreference(TextSecurePreferences.SYSTEM_EMOJI_PREF, false) return getBooleanPreference(TextSecurePreferences.SYSTEM_EMOJI_PREF, false)
} }
override fun getMobileMediaDownloadAllowed(): Set<String>? { fun getMobileMediaDownloadAllowed(): Set<String>? {
return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_MOBILE_PREF, R.array.pref_media_download_mobile_data_default) return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_MOBILE_PREF, R.array.pref_media_download_mobile_data_default)
} }
override fun getWifiMediaDownloadAllowed(): Set<String>? { fun getWifiMediaDownloadAllowed(): Set<String>? {
return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_WIFI_PREF, R.array.pref_media_download_wifi_default) return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_WIFI_PREF, R.array.pref_media_download_wifi_default)
} }
override fun getRoamingMediaDownloadAllowed(): Set<String>? { fun getRoamingMediaDownloadAllowed(): Set<String>? {
return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_ROAMING_PREF, R.array.pref_media_download_roaming_default) return getMediaDownloadAllowed(TextSecurePreferences.MEDIA_DOWNLOAD_ROAMING_PREF, R.array.pref_media_download_roaming_default)
} }
override fun getMediaDownloadAllowed(key: String, @ArrayRes defaultValuesRes: Int): Set<String>? { fun getMediaDownloadAllowed(key: String, @ArrayRes defaultValuesRes: Int): Set<String>? {
return getStringSetPreference(key, HashSet(listOf(*context.resources.getStringArray(defaultValuesRes)))) return getStringSetPreference(key, HashSet(listOf(*context.resources.getStringArray(defaultValuesRes))))
} }
override fun getLogEncryptedSecret(): String? { fun getLogEncryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.LOG_ENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.LOG_ENCRYPTED_SECRET, null)
} }
override fun setLogEncryptedSecret(base64Secret: String?) { fun setLogEncryptedSecret(base64Secret: String?) {
setStringPreference(TextSecurePreferences.LOG_ENCRYPTED_SECRET, base64Secret) setStringPreference(TextSecurePreferences.LOG_ENCRYPTED_SECRET, base64Secret)
} }
override fun getLogUnencryptedSecret(): String? { fun getLogUnencryptedSecret(): String? {
return getStringPreference(TextSecurePreferences.LOG_UNENCRYPTED_SECRET, null) return getStringPreference(TextSecurePreferences.LOG_UNENCRYPTED_SECRET, null)
} }
override fun setLogUnencryptedSecret(base64Secret: String?) { fun setLogUnencryptedSecret(base64Secret: String?) {
setStringPreference(TextSecurePreferences.LOG_UNENCRYPTED_SECRET, base64Secret) setStringPreference(TextSecurePreferences.LOG_UNENCRYPTED_SECRET, base64Secret)
} }
override fun getNotificationChannelVersion(): Int { fun getNotificationChannelVersion(): Int {
return getIntegerPreference(TextSecurePreferences.NOTIFICATION_CHANNEL_VERSION, 1) return getIntegerPreference(TextSecurePreferences.NOTIFICATION_CHANNEL_VERSION, 1)
} }
override fun setNotificationChannelVersion(version: Int) { fun setNotificationChannelVersion(version: Int) {
setIntegerPreference(TextSecurePreferences.NOTIFICATION_CHANNEL_VERSION, version) setIntegerPreference(TextSecurePreferences.NOTIFICATION_CHANNEL_VERSION, version)
} }
override fun getNotificationMessagesChannelVersion(): Int { fun getNotificationMessagesChannelVersion(): Int {
return getIntegerPreference(TextSecurePreferences.NOTIFICATION_MESSAGES_CHANNEL_VERSION, 1) return getIntegerPreference(TextSecurePreferences.NOTIFICATION_MESSAGES_CHANNEL_VERSION, 1)
} }
override fun setNotificationMessagesChannelVersion(version: Int) { fun setNotificationMessagesChannelVersion(version: Int) {
setIntegerPreference(TextSecurePreferences.NOTIFICATION_MESSAGES_CHANNEL_VERSION, version) setIntegerPreference(TextSecurePreferences.NOTIFICATION_MESSAGES_CHANNEL_VERSION, version)
} }
override fun hasForcedNewConfig(): Boolean = fun hasForcedNewConfig(): Boolean =
getBooleanPreference(TextSecurePreferences.HAS_FORCED_NEW_CONFIG, false) getBooleanPreference(TextSecurePreferences.HAS_FORCED_NEW_CONFIG, false)
override fun getBooleanPreference(key: String?, defaultValue: Boolean): Boolean { fun getBooleanPreference(key: String?, defaultValue: Boolean): Boolean {
return getDefaultSharedPreferences(context).getBoolean(key, defaultValue) return getDefaultSharedPreferences(context).getBoolean(key, defaultValue)
} }
override fun setBooleanPreference(key: String?, value: Boolean) { fun setBooleanPreference(key: String?, value: Boolean) {
getDefaultSharedPreferences(context).edit().putBoolean(key, value).apply() getDefaultSharedPreferences(context).edit().putBoolean(key, value).apply()
} }
override fun getStringPreference(key: String, defaultValue: String?): String? { fun getStringPreference(key: String, defaultValue: String?): String? {
return getDefaultSharedPreferences(context).getString(key, defaultValue) return getDefaultSharedPreferences(context).getString(key, defaultValue)
} }
override fun setStringPreference(key: String?, value: String?) { fun setStringPreference(key: String?, value: String?) {
getDefaultSharedPreferences(context).edit().putString(key, value).apply() getDefaultSharedPreferences(context).edit().putString(key, value).apply()
} }
override fun getIntegerPreference(key: String, defaultValue: Int): Int { fun getIntegerPreference(key: String, defaultValue: Int): Int {
return getDefaultSharedPreferences(context).getInt(key, defaultValue) return getDefaultSharedPreferences(context).getInt(key, defaultValue)
} }
override fun setIntegerPreference(key: String, value: Int) { fun setIntegerPreference(key: String, value: Int) {
getDefaultSharedPreferences(context).edit().putInt(key, value).apply() getDefaultSharedPreferences(context).edit().putInt(key, value).apply()
} }
override fun setIntegerPreferenceBlocking(key: String, value: Int): Boolean { fun setIntegerPreferenceBlocking(key: String, value: Int): Boolean {
return getDefaultSharedPreferences(context).edit().putInt(key, value).commit() return getDefaultSharedPreferences(context).edit().putInt(key, value).commit()
} }
override fun getLongPreference(key: String, defaultValue: Long): Long { fun getLongPreference(key: String, defaultValue: Long): Long {
return getDefaultSharedPreferences(context).getLong(key, defaultValue) return getDefaultSharedPreferences(context).getLong(key, defaultValue)
} }
override fun setLongPreference(key: String, value: Long) { fun setLongPreference(key: String, value: Long) {
getDefaultSharedPreferences(context).edit().putLong(key, value).apply() getDefaultSharedPreferences(context).edit().putLong(key, value).apply()
} }
override fun hasPreference(key: String): Boolean { fun hasPreference(key: String): Boolean {
return getDefaultSharedPreferences(context).contains(key) return getDefaultSharedPreferences(context).contains(key)
} }
override fun removePreference(key: String) { fun removePreference(key: String) {
getDefaultSharedPreferences(context).edit().remove(key).apply() getDefaultSharedPreferences(context).edit().remove(key).apply()
} }
override fun getStringSetPreference(key: String, defaultValues: Set<String>): Set<String>? { fun getStringSetPreference(key: String, defaultValues: Set<String>): Set<String>? {
val prefs = getDefaultSharedPreferences(context) val prefs = getDefaultSharedPreferences(context)
return if (prefs.contains(key)) { return if (prefs.contains(key)) {
prefs.getStringSet(key, emptySet()) prefs.getStringSet(key, emptySet())
@ -1317,75 +1148,75 @@ class AppTextSecurePreferences @Inject constructor(
} }
} }
override fun getHasViewedSeed(): Boolean { fun getHasViewedSeed(): Boolean {
return getBooleanPreference("has_viewed_seed", false) return getBooleanPreference("has_viewed_seed", false)
} }
override fun setHasViewedSeed(hasViewedSeed: Boolean) { fun setHasViewedSeed(hasViewedSeed: Boolean) {
setBooleanPreference("has_viewed_seed", hasViewedSeed) setBooleanPreference("has_viewed_seed", hasViewedSeed)
} }
override fun setRestorationTime(time: Long) { fun setRestorationTime(time: Long) {
setLongPreference("restoration_time", time) setLongPreference("restoration_time", time)
} }
override fun getRestorationTime(): Long { fun getRestorationTime(): Long {
return getLongPreference("restoration_time", 0) return getLongPreference("restoration_time", 0)
} }
override fun getLastProfilePictureUpload(): Long { fun getLastProfilePictureUpload(): Long {
return getLongPreference("last_profile_picture_upload", 0) return getLongPreference("last_profile_picture_upload", 0)
} }
override fun setLastProfilePictureUpload(newValue: Long) { fun setLastProfilePictureUpload(newValue: Long) {
setLongPreference("last_profile_picture_upload", newValue) setLongPreference("last_profile_picture_upload", newValue)
} }
override fun getLastSnodePoolRefreshDate(): Long { fun getLastSnodePoolRefreshDate(): Long {
return getLongPreference("last_snode_pool_refresh_date", 0) return getLongPreference("last_snode_pool_refresh_date", 0)
} }
override fun setLastSnodePoolRefreshDate(date: Date) { fun setLastSnodePoolRefreshDate(date: Date) {
setLongPreference("last_snode_pool_refresh_date", date.time) setLongPreference("last_snode_pool_refresh_date", date.time)
} }
override fun shouldUpdateProfile(profileUpdateTime: Long): Boolean { fun shouldUpdateProfile(profileUpdateTime: Long): Boolean {
return profileUpdateTime > getLongPreference(TextSecurePreferences.LAST_PROFILE_UPDATE_TIME, 0) return profileUpdateTime > getLongPreference(TextSecurePreferences.LAST_PROFILE_UPDATE_TIME, 0)
} }
override fun setLastProfileUpdateTime(profileUpdateTime: Long) { fun setLastProfileUpdateTime(profileUpdateTime: Long) {
setLongPreference(TextSecurePreferences.LAST_PROFILE_UPDATE_TIME, profileUpdateTime) setLongPreference(TextSecurePreferences.LAST_PROFILE_UPDATE_TIME, profileUpdateTime)
} }
override fun getLastOpenTimeDate(): Long { fun getLastOpenTimeDate(): Long {
return getLongPreference(TextSecurePreferences.LAST_OPEN_DATE, 0) return getLongPreference(TextSecurePreferences.LAST_OPEN_DATE, 0)
} }
override fun setLastOpenDate() { fun setLastOpenDate() {
setLongPreference(TextSecurePreferences.LAST_OPEN_DATE, System.currentTimeMillis()) setLongPreference(TextSecurePreferences.LAST_OPEN_DATE, System.currentTimeMillis())
} }
override fun hasSeenLinkPreviewSuggestionDialog(): Boolean { fun hasSeenLinkPreviewSuggestionDialog(): Boolean {
return getBooleanPreference("has_seen_link_preview_suggestion_dialog", false) return getBooleanPreference("has_seen_link_preview_suggestion_dialog", false)
} }
override fun setHasSeenLinkPreviewSuggestionDialog() { fun setHasSeenLinkPreviewSuggestionDialog() {
setBooleanPreference("has_seen_link_preview_suggestion_dialog", true) setBooleanPreference("has_seen_link_preview_suggestion_dialog", true)
} }
override fun isCallNotificationsEnabled(): Boolean { fun isCallNotificationsEnabled(): Boolean {
return getBooleanPreference(CALL_NOTIFICATIONS_ENABLED, false) return getBooleanPreference(CALL_NOTIFICATIONS_ENABLED, false)
} }
override fun getLastVacuum(): Long { fun getLastVacuum(): Long {
return getLongPreference(LAST_VACUUM_TIME, 0) return getLongPreference(LAST_VACUUM_TIME, 0)
} }
override fun setLastVacuumNow() { fun setLastVacuumNow() {
setLongPreference(LAST_VACUUM_TIME, System.currentTimeMillis()) setLongPreference(LAST_VACUUM_TIME, System.currentTimeMillis())
} }
override fun setShownCallNotification(): Boolean { fun setShownCallNotification(): Boolean {
val previousValue = getBooleanPreference(SHOWN_CALL_NOTIFICATION, false) val previousValue = getBooleanPreference(SHOWN_CALL_NOTIFICATION, false)
if (previousValue) return false if (previousValue) return false
val setValue = true val setValue = true
@ -1398,7 +1229,7 @@ class AppTextSecurePreferences @Inject constructor(
* Set the SHOWN_CALL_WARNING preference to `true` * Set the SHOWN_CALL_WARNING preference to `true`
* Return `true` if the value did update (it was previously unset) * Return `true` if the value did update (it was previously unset)
*/ */
override fun setShownCallWarning() : Boolean { fun setShownCallWarning() : Boolean {
val previousValue = getBooleanPreference(SHOWN_CALL_WARNING, false) val previousValue = getBooleanPreference(SHOWN_CALL_WARNING, false)
if (previousValue) { if (previousValue) {
return false return false
@ -1408,27 +1239,27 @@ class AppTextSecurePreferences @Inject constructor(
return previousValue != setValue return previousValue != setValue
} }
override fun hasHiddenMessageRequests(): Boolean { fun hasHiddenMessageRequests(): Boolean {
return getBooleanPreference(TextSecurePreferences.HAS_HIDDEN_MESSAGE_REQUESTS, false) return getBooleanPreference(TextSecurePreferences.HAS_HIDDEN_MESSAGE_REQUESTS, false)
} }
override fun setHasHiddenMessageRequests() { fun setHasHiddenMessageRequests() {
setBooleanPreference(TextSecurePreferences.HAS_HIDDEN_MESSAGE_REQUESTS, true) setBooleanPreference(TextSecurePreferences.HAS_HIDDEN_MESSAGE_REQUESTS, true)
} }
override fun getFingerprintKeyGenerated(): Boolean { fun getFingerprintKeyGenerated(): Boolean {
return getBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, false) return getBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, false)
} }
override fun setFingerprintKeyGenerated() { fun setFingerprintKeyGenerated() {
setBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, true) setBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, true)
} }
override fun getSelectedAccentColor(): String? = fun getSelectedAccentColor(): String? =
getStringPreference(SELECTED_ACCENT_COLOR, null) getStringPreference(SELECTED_ACCENT_COLOR, null)
@StyleRes @StyleRes
override fun getAccentColorStyle(): Int? { fun getAccentColorStyle(): Int? {
return when (getSelectedAccentColor()) { return when (getSelectedAccentColor()) {
TextSecurePreferences.GREEN_ACCENT -> R.style.PrimaryGreen TextSecurePreferences.GREEN_ACCENT -> R.style.PrimaryGreen
TextSecurePreferences.BLUE_ACCENT -> R.style.PrimaryBlue TextSecurePreferences.BLUE_ACCENT -> R.style.PrimaryBlue
@ -1441,7 +1272,7 @@ class AppTextSecurePreferences @Inject constructor(
} }
} }
override fun setAccentColorStyle(@StyleRes newColorStyle: Int?) { fun setAccentColorStyle(@StyleRes newColorStyle: Int?) {
setStringPreference( setStringPreference(
TextSecurePreferences.SELECTED_ACCENT_COLOR, when (newColorStyle) { TextSecurePreferences.SELECTED_ACCENT_COLOR, when (newColorStyle) {
R.style.PrimaryGreen -> TextSecurePreferences.GREEN_ACCENT R.style.PrimaryGreen -> TextSecurePreferences.GREEN_ACCENT
@ -1456,7 +1287,7 @@ class AppTextSecurePreferences @Inject constructor(
) )
} }
override fun getThemeStyle(): String { fun getThemeStyle(): String {
val hasLegacy = getStringPreference(LEGACY_PREF_KEY_SELECTED_UI_MODE, null) val hasLegacy = getStringPreference(LEGACY_PREF_KEY_SELECTED_UI_MODE, null)
if (!hasLegacy.isNullOrEmpty()) { if (!hasLegacy.isNullOrEmpty()) {
migrateLegacyUiPref() migrateLegacyUiPref()
@ -1465,12 +1296,12 @@ class AppTextSecurePreferences @Inject constructor(
return getStringPreference(SELECTED_STYLE, CLASSIC_DARK)!! return getStringPreference(SELECTED_STYLE, CLASSIC_DARK)!!
} }
override fun setThemeStyle(themeStyle: String) { fun setThemeStyle(themeStyle: String) {
val safeTheme = if (themeStyle !in listOf(CLASSIC_DARK, CLASSIC_LIGHT, OCEAN_DARK, OCEAN_LIGHT)) CLASSIC_DARK else themeStyle val safeTheme = if (themeStyle !in listOf(CLASSIC_DARK, CLASSIC_LIGHT, OCEAN_DARK, OCEAN_LIGHT)) CLASSIC_DARK else themeStyle
setStringPreference(SELECTED_STYLE, safeTheme) setStringPreference(SELECTED_STYLE, safeTheme)
} }
override fun getFollowSystemSettings(): Boolean { fun getFollowSystemSettings(): Boolean {
val hasLegacy = getStringPreference(LEGACY_PREF_KEY_SELECTED_UI_MODE, null) val hasLegacy = getStringPreference(LEGACY_PREF_KEY_SELECTED_UI_MODE, null)
if (!hasLegacy.isNullOrEmpty()) { if (!hasLegacy.isNullOrEmpty()) {
migrateLegacyUiPref() migrateLegacyUiPref()
@ -1502,21 +1333,21 @@ class AppTextSecurePreferences @Inject constructor(
removePreference(LEGACY_PREF_KEY_SELECTED_UI_MODE) removePreference(LEGACY_PREF_KEY_SELECTED_UI_MODE)
} }
override fun setFollowSystemSettings(followSystemSettings: Boolean) { fun setFollowSystemSettings(followSystemSettings: Boolean) {
setBooleanPreference(FOLLOW_SYSTEM_SETTINGS, followSystemSettings) setBooleanPreference(FOLLOW_SYSTEM_SETTINGS, followSystemSettings)
} }
override fun autoplayAudioMessages(): Boolean { fun autoplayAudioMessages(): Boolean {
return getBooleanPreference(AUTOPLAY_AUDIO_MESSAGES, false) return getBooleanPreference(AUTOPLAY_AUDIO_MESSAGES, false)
} }
override fun clearAll() { fun clearAll() {
getDefaultSharedPreferences(context).edit().clear().commit() getDefaultSharedPreferences(context).edit().clear().commit()
} }
override fun getHidePassword() = getBooleanPreference(HIDE_PASSWORD, false) fun getHidePassword() = getBooleanPreference(HIDE_PASSWORD, false)
override fun setHidePassword(value: Boolean) { fun setHidePassword(value: Boolean) {
setBooleanPreference(HIDE_PASSWORD, value) setBooleanPreference(HIDE_PASSWORD, value)
} }
} }