diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt index 14e7d038..f40d2261 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt @@ -412,12 +412,7 @@ class Amber : } val wasActive = client.isActive() - - @Suppress("KotlinConstantConditions") - // TODO: You can filter inside each update filter for only - // localhost relays and keep these alive even on the offline - // mode - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { // these update the relay list in the filters and send them to the // relay, reconnecting if needed if (isAppInForeground) { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/BuildFlavorChecker.kt b/app/src/main/java/com/greenart7c3/nostrsigner/BuildFlavorChecker.kt new file mode 100644 index 00000000..66bbc329 --- /dev/null +++ b/app/src/main/java/com/greenart7c3/nostrsigner/BuildFlavorChecker.kt @@ -0,0 +1,9 @@ +package com.greenart7c3.nostrsigner + +object BuildFlavorChecker { + @Suppress("SimplifyBooleanWithConstants") + fun isOfflineFlavor(): Boolean { + @Suppress("KotlinConstantConditions") + return BuildConfig.FLAVOR == "offline" + } +} diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt index 69ee4067..2ca9537e 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/MainActivity.kt @@ -268,8 +268,7 @@ class MainActivity : AppCompatActivity() { override fun onResume() { Amber.instance.setMainActivity(this) mainViewModel.showBunkerRequests() - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { val connectivityManager = (getSystemService(ConnectivityManager::class.java) as ConnectivityManager) connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)?.let { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/BootReceiver.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/BootReceiver.kt index 22e30b24..b0c5e338 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/BootReceiver.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/BootReceiver.kt @@ -6,14 +6,13 @@ import android.content.Intent import android.os.Build import android.util.Log import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import kotlinx.coroutines.delay import kotlinx.coroutines.launch class BootReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") return + if (BuildFlavorChecker.isOfflineFlavor()) return Log.d(Amber.TAG, "Received intent: ${intent.action}") when (intent.action) { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/ConnectivityService.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/ConnectivityService.kt index 253d0f76..f2405ee4 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/ConnectivityService.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/ConnectivityService.kt @@ -8,7 +8,7 @@ import android.net.NetworkCapabilities import android.os.IBinder import android.util.Log import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.database.LogEntity import java.util.Timer @@ -30,8 +30,7 @@ class ConnectivityService : Service() { override fun onAvailable(network: Network) { super.onAvailable(network) - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") return + if (BuildFlavorChecker.isOfflineFlavor()) return if (Amber.instance.settings.killSwitch.value) return if (lastNetwork != null && lastNetwork != network) { @@ -52,8 +51,7 @@ class ConnectivityService : Service() { ) { super.onCapabilitiesChanged(network, networkCapabilities) - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") return + if (BuildFlavorChecker.isOfflineFlavor()) return if (Amber.instance.settings.killSwitch.value) return scope.launch(Dispatchers.IO) { @@ -70,8 +68,7 @@ class ConnectivityService : Service() { override fun onLost(network: Network) { super.onLost(network) - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") return + if (BuildFlavorChecker.isOfflineFlavor()) return lastNetwork = null @@ -96,16 +93,14 @@ class ConnectivityService : Service() { while (Amber.instance.isStartingAppState.value) { delay(1000) } - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline" && !Amber.instance.settings.killSwitch.value) { + if (!BuildFlavorChecker.isOfflineFlavor() && !Amber.instance.settings.killSwitch.value) { Amber.instance.client.connect() Amber.instance.applicationIOScope.launch { Amber.instance.checkForNewRelaysAndUpdateAllFilters() } } - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { val connectivityManager = (getSystemService(ConnectivityManager::class.java) as ConnectivityManager) connectivityManager.registerDefaultNetworkCallback(networkCallback) @@ -117,10 +112,6 @@ class ConnectivityService : Service() { timer.schedule( object : TimerTask() { override fun run() { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") { - return - } if (Amber.instance.settings.killSwitch.value) return scope.launch { @@ -137,11 +128,17 @@ class ConnectivityService : Service() { time = System.currentTimeMillis(), ), ) - Amber.instance.notificationSubscription.updateFilter() + if (!BuildFlavorChecker.isOfflineFlavor()) { + Amber.instance.notificationSubscription.updateFilter() + } } } } + if (BuildFlavorChecker.isOfflineFlavor()) { + return + } + scope.launch { if (!Amber.instance.client.isActive()) { Amber.instance.client.connect() @@ -160,8 +157,7 @@ class ConnectivityService : Service() { override fun onDestroy() { isStarted = false timer.cancel() - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { try { Log.d(Amber.TAG, "unregisterNetworkCallback") val connectivityManager = diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/crashreports/DisplayCrashMessages.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/crashreports/DisplayCrashMessages.kt index f1fdb0c8..4d98bdb6 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/crashreports/DisplayCrashMessages.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/crashreports/DisplayCrashMessages.kt @@ -47,7 +47,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.net.toUri import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account import com.vitorpamplona.quartz.nip01Core.relay.client.NostrClient @@ -77,8 +77,7 @@ fun DisplayCrashMessages( } stackTrace.value?.let { stack -> - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") { + if (BuildFlavorChecker.isOfflineFlavor()) { CrashReportAlertDialog( text = stringResource(R.string.copy_crash_report_to_clipboard), onDismiss = { stackTrace.value = null }, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt index e62a193c..ea84eb4e 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/DefaultProfileRelaysScreen.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account @@ -104,8 +104,7 @@ fun DefaultProfileRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { @@ -143,8 +142,7 @@ fun DefaultProfileRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { @@ -173,8 +171,7 @@ fun DefaultProfileRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt index 33d3c144..ac617c25 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/MainScreen.kt @@ -55,7 +55,7 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.navArgument import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account @@ -109,8 +109,7 @@ private fun askNotificationPermission( @SuppressLint("BatteryLife") fun requestIgnoreBatteryOptimizations(context: Context) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR == "offline") return + if (BuildFlavorChecker.isOfflineFlavor()) return if (Amber.instance.client.relayStatusFlow().value.connected.isEmpty()) return val packageName = context.packageName val pm = context.getSystemService(PowerManager::class.java) @@ -161,8 +160,7 @@ fun MainScreen( var showDialog by remember { mutableStateOf(false) } - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { LaunchedEffect(Unit) { launch(Dispatchers.IO) { askNotificationPermission( diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/SettingsScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/SettingsScreen.kt index 7b2cb7db..0a8765cd 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/SettingsScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/SettingsScreen.kt @@ -51,6 +51,7 @@ import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.greenart7c3.nostrsigner.Amber import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account @@ -171,8 +172,7 @@ fun SettingsScreen( ) } - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Box( Modifier .padding(vertical = 8.dp), diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/AccountBackupDialog.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/AccountBackupDialog.kt index f3fe8f18..081ee3d4 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/AccountBackupDialog.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/AccountBackupDialog.kt @@ -75,7 +75,7 @@ import androidx.compose.ui.window.DialogProperties import androidx.navigation.NavHostController import coil3.compose.SubcomposeAsyncImage import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account @@ -241,8 +241,7 @@ fun AccountBackupScreen( ) { localAccount?.let { localAccount -> val profileUrl = localAccount.picture.value - @Suppress("KotlinConstantConditions") - if (profileUrl.isNotBlank() && BuildConfig.FLAVOR != "offline") { + if (profileUrl.isNotBlank() && !BuildFlavorChecker.isOfflineFlavor()) { SubcomposeAsyncImage( profileUrl, "profile picture", diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt index 3b7d3a28..3741dfd2 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt @@ -46,7 +46,7 @@ import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.compose.collectAsLazyPagingItems import com.greenart7c3.nostrsigner.Amber -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.LocalPreferences import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.checkNotInMainThread @@ -122,8 +122,7 @@ fun DefaultRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() delay(2000) Amber.instance.client.reconnect() @@ -171,8 +170,7 @@ fun DefaultRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { @@ -209,8 +207,7 @@ fun DefaultRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { @@ -239,8 +236,7 @@ fun DefaultRelaysScreen( ) LocalPreferences.saveSettingsToEncryptedStorage(Amber.instance.settings) scope.launch(Dispatchers.IO) { - @Suppress("KotlinConstantConditions") - if (BuildConfig.FLAVOR != "offline") { + if (!BuildFlavorChecker.isOfflineFlavor()) { Amber.instance.checkForNewRelaysAndUpdateAllFilters() isLoading.value = false } else { diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberFloatingButton.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberFloatingButton.kt index 4ee1d3c3..8b84808a 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberFloatingButton.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberFloatingButton.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp import androidx.navigation.NavBackStackEntry import androidx.navigation.NavHostController -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.ui.navigation.Route @@ -26,8 +26,7 @@ fun AmberFloatingButton( navController: NavHostController, navBackStackEntry: NavBackStackEntry?, ) { - @Suppress("KotlinConstantConditions") - if (navBackStackEntry?.destination?.route == Route.Applications.route && BuildConfig.FLAVOR != "offline") { + if (navBackStackEntry?.destination?.route == Route.Applications.route && !BuildFlavorChecker.isOfflineFlavor()) { NewBunkerFloatingButton( onClick = { navController.navigate(Route.NewApplication.route) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberNavigationBar.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberNavigationBar.kt index 80ff191b..2c9c1acf 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberNavigationBar.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/AmberNavigationBar.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.models.Account import com.greenart7c3.nostrsigner.ui.CenterCircularProgressIndicator import com.greenart7c3.nostrsigner.ui.navigation.Route @@ -54,8 +54,7 @@ fun AmberNavigationBar( }, icon = { if (it.route == Route.Accounts.route) { - @Suppress("KotlinConstantConditions") - if (!profileUrl.isNullOrBlank() && BuildConfig.FLAVOR != "offline") { + if (!profileUrl.isNullOrBlank() && !BuildFlavorChecker.isOfflineFlavor()) { SubcomposeAsyncImage( profileUrl, it.route, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt index 8759d041..df4a5cd1 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/LoginWithPubKey.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_MEDIUM_LOWER_BOUND import coil3.compose.AsyncImage -import com.greenart7c3.nostrsigner.BuildConfig +import com.greenart7c3.nostrsigner.BuildFlavorChecker import com.greenart7c3.nostrsigner.R import com.greenart7c3.nostrsigner.models.Account import com.greenart7c3.nostrsigner.models.Permission @@ -58,8 +58,7 @@ fun ProfilePicture(account: Account) { verticalArrangement = Arrangement.Center, ) { val profileUrl by account.picture.collectAsStateWithLifecycle() - @Suppress("KotlinConstantConditions") - if (profileUrl.isNotBlank() && BuildConfig.FLAVOR != "offline") { + if (profileUrl.isNotBlank() && !BuildFlavorChecker.isOfflineFlavor()) { AsyncImage( profileUrl, Route.Accounts.route,