Skip to content

Commit 0eaf16b

Browse files
committed
Change email notifications Default value to On behind feature flag
1 parent dd2c716 commit 0eaf16b

File tree

14 files changed

+51
-5
lines changed

14 files changed

+51
-5
lines changed

app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory {
1010
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
1111
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true),
1212
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
13+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
1314
)
1415
}
1516
}

app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory {
1010
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false),
1111
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false),
1212
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false),
13+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = false),
1314
)
1415
}
1516
}

app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory {
1313
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
1414
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false),
1515
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
16+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
1617
)
1718
}
1819
}

app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory {
1313
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
1414
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false),
1515
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
16+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
1617
)
1718
}
1819
}

app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory {
1313
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true),
1414
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true),
1515
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true),
16+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true),
1617
)
1718
}
1819
}

app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory {
1313
FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false),
1414
FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false),
1515
FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false),
16+
FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = false),
1617
)
1718
}
1819
}

feature/navigation/drawer/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ dependencies {
2020
implementation(projects.legacy.message)
2121
implementation(projects.legacy.search)
2222
implementation(projects.legacy.ui.folder)
23+
implementation(projects.core.featureflags)
2324

2425
testImplementation(projects.core.ui.compose.testing)
2526
}

feature/navigation/drawer/src/debug/kotlin/app/k9mail/feature/navigation/drawer/ui/FakeData.kt

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package app.k9mail.feature.navigation.drawer.ui
22

33
import androidx.compose.ui.graphics.Color
44
import androidx.compose.ui.graphics.toArgb
5+
import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider
56
import app.k9mail.core.mail.folder.api.Folder
67
import app.k9mail.core.mail.folder.api.FolderType
78
import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount
@@ -11,6 +12,7 @@ import app.k9mail.feature.navigation.drawer.domain.entity.DisplayUnifiedFolder
1112
import app.k9mail.feature.navigation.drawer.domain.entity.DisplayUnifiedFolderType
1213
import app.k9mail.legacy.account.Account
1314
import app.k9mail.legacy.account.Identity
15+
import java.util.ArrayList
1416
import kotlinx.collections.immutable.PersistentList
1517
import kotlinx.collections.immutable.persistentListOf
1618
import kotlinx.collections.immutable.toPersistentList
@@ -26,6 +28,9 @@ internal object FakeData {
2628

2729
val ACCOUNT = Account(
2830
uuid = ACCOUNT_UUID,
31+
featureFlagProvider = InMemoryFeatureFlagProvider(
32+
featureFlagFactory = { emptyList() },
33+
),
2934
).apply {
3035
identities = ArrayList()
3136

legacy/account/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ dependencies {
1111
implementation(projects.legacy.notification)
1212
implementation(projects.mail.common)
1313
implementation(projects.backend.api)
14+
implementation(projects.core.featureflags)
1415
}

legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package app.k9mail.legacy.account
22

3+
import app.k9mail.core.featureflag.FeatureFlagProvider
4+
import app.k9mail.core.featureflag.toFeatureFlagKey
35
import app.k9mail.legacy.notification.NotificationSettings
46
import com.fsck.k9.backend.api.SyncConfig.ExpungePolicy
57
import com.fsck.k9.mail.Address
@@ -17,6 +19,7 @@ const val DEFAULT_VISIBLE_LIMIT = 25
1719
class Account(
1820
override val uuid: String,
1921
private val isSensitiveDebugLoggingEnabled: () -> Boolean = { false },
22+
private val featureFlagProvider: FeatureFlagProvider,
2023
) : BaseAccount {
2124
@get:Synchronized
2225
@set:Synchronized
@@ -80,15 +83,25 @@ class Account(
8083

8184
@get:Synchronized
8285
@set:Synchronized
83-
var isNotifyNewMail = false
86+
var isNotifyNewMail = featureFlagProvider.provide(
87+
"email_notification_default".toFeatureFlagKey(),
88+
).whenEnabledOrNot(
89+
onEnabled = { true },
90+
onDisabledOrUnavailable = { false },
91+
)
8492

8593
@get:Synchronized
8694
@set:Synchronized
8795
var folderNotifyNewMailMode = FolderMode.ALL
8896

8997
@get:Synchronized
9098
@set:Synchronized
91-
var isNotifySelfNewMail = false
99+
var isNotifySelfNewMail = featureFlagProvider.provide(
100+
"email_notification_default".toFeatureFlagKey(),
101+
).whenEnabledOrNot(
102+
onEnabled = { true },
103+
onDisabledOrUnavailable = { false },
104+
)
92105

93106
@get:Synchronized
94107
@set:Synchronized

legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.fsck.k9
22

3+
import app.k9mail.core.featureflag.FeatureFlagProvider
4+
import app.k9mail.core.featureflag.toFeatureFlagKey
35
import app.k9mail.legacy.account.Account
46
import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_ASCENDING
57
import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_TYPE
@@ -24,9 +26,11 @@ import com.fsck.k9.preferences.Storage
2426
import com.fsck.k9.preferences.StorageEditor
2527
import timber.log.Timber
2628

29+
@Suppress("MaxLineLength")
2730
class AccountPreferenceSerializer(
2831
private val resourceProvider: CoreResourceProvider,
2932
private val serverSettingsSerializer: ServerSettingsSerializer,
33+
private val featureFlagProvider: FeatureFlagProvider,
3034
) {
3135

3236
@Synchronized
@@ -52,7 +56,14 @@ class AccountPreferenceSerializer(
5256
if (displayCount < 0) {
5357
displayCount = K9.DEFAULT_VISIBLE_LIMIT
5458
}
55-
isNotifyNewMail = storage.getBoolean("$accountUuid.notifyNewMail", false)
59+
60+
val isNotifyNewMailDefaultValue = featureFlagProvider.provide(
61+
"email_notification_default".toFeatureFlagKey(),
62+
).whenEnabledOrNot(
63+
onEnabled = { true },
64+
onDisabledOrUnavailable = { false },
65+
)
66+
isNotifyNewMail = storage.getBoolean("$accountUuid.notifyNewMail", isNotifyNewMailDefaultValue)
5667

5768
folderNotifyNewMailMode = getEnumStringPref<FolderMode>(
5869
storage,

legacy/core/src/main/java/com/fsck/k9/KoinModule.kt

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ val mainModule = module {
2121
storagePersister = get(),
2222
localStoreProvider = get(),
2323
accountPreferenceSerializer = get(),
24+
featureFlagProvider = get(),
2425
)
2526
}
2627
single { get<Context>().resources }

legacy/core/src/main/java/com/fsck/k9/Preferences.kt

+9-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.fsck.k9
22

33
import androidx.annotation.GuardedBy
44
import androidx.annotation.RestrictTo
5+
import app.k9mail.core.featureflag.FeatureFlagProvider
56
import app.k9mail.legacy.account.Account
67
import app.k9mail.legacy.account.AccountManager
78
import app.k9mail.legacy.account.AccountRemovedListener
@@ -27,11 +28,13 @@ import kotlinx.coroutines.flow.callbackFlow
2728
import kotlinx.coroutines.flow.flowOn
2829
import timber.log.Timber
2930

31+
@Suppress("MaxLineLength")
3032
class Preferences internal constructor(
3133
private val storagePersister: StoragePersister,
3234
private val localStoreProvider: LocalStoreProvider,
3335
private val accountPreferenceSerializer: AccountPreferenceSerializer,
3436
private val backgroundDispatcher: CoroutineDispatcher = Dispatchers.IO,
37+
private val featureFlagProvider: FeatureFlagProvider,
3538
) : AccountManager {
3639
private val accountLock = Any()
3740
private val storageLock = Any()
@@ -82,7 +85,11 @@ class Preferences internal constructor(
8285
if (!accountUuids.isNullOrEmpty()) {
8386
accountUuids.split(",").forEach { uuid ->
8487
val existingAccount = accountsMap?.get(uuid)
85-
val account = existingAccount ?: Account(uuid, K9::isSensitiveDebugLoggingEnabled)
88+
val account = existingAccount ?: Account(
89+
uuid,
90+
K9::isSensitiveDebugLoggingEnabled,
91+
featureFlagProvider,
92+
)
8693
accountPreferenceSerializer.loadAccount(account, storage)
8794

8895
accounts[uuid] = account
@@ -176,7 +183,7 @@ class Preferences internal constructor(
176183
}
177184

178185
fun newAccount(accountUuid: String): Account {
179-
val account = Account(accountUuid, K9::isSensitiveDebugLoggingEnabled)
186+
val account = Account(accountUuid, K9::isSensitiveDebugLoggingEnabled, featureFlagProvider)
180187
accountPreferenceSerializer.loadDefaults(account)
181188

182189
synchronized(accountLock) {

legacy/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ val coreNotificationModule = module {
3939
AccountPreferenceSerializer(
4040
resourceProvider = get(),
4141
serverSettingsSerializer = get(),
42+
featureFlagProvider = get(),
4243
)
4344
}
4445
single {

0 commit comments

Comments
 (0)