diff --git a/app/src/main/java/org/unifiedpush/distributor/sunup/Migrations.kt b/app/src/main/java/org/unifiedpush/distributor/sunup/Migrations.kt new file mode 100644 index 0000000..ae59ad7 --- /dev/null +++ b/app/src/main/java/org/unifiedpush/distributor/sunup/Migrations.kt @@ -0,0 +1,42 @@ +package org.unifiedpush.distributor.sunup + +import android.app.NotificationManager +import android.content.Context +import android.os.Build +import androidx.annotation.RequiresApi +import org.unifiedpush.distributor.MigrationFactory + +class Migrations(context: Context) : MigrationFactory(context, AppStore.PREF_NAME) { + + override val migrations = listOf( + Migration000201 + ) + + /** + * Migration from 0.x.x to 0.2.1 + */ + object Migration000201 : Migration { + override val version = 201 + override fun run(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + removeOldOsNotificationChannel(context) + } + } + + /** + * Migration to remove old notifications channel, they will be recreated + * once needed. We used app_name as a prefix, but this can be buggy with + * debug env. + */ + @RequiresApi(Build.VERSION_CODES.O) + fun removeOldOsNotificationChannel(context: Context) { + val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val oldPrefix = context.getString(R.string.app_name) + notificationManager.notificationChannels.forEach { + if (it.id.startsWith(oldPrefix)) { + notificationManager.deleteNotificationChannel(it.id) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/MainActivity.kt b/app/src/main/java/org/unifiedpush/distributor/sunup/activities/MainActivity.kt index 2fcc1c4..92694d9 100644 --- a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/MainActivity.kt +++ b/app/src/main/java/org/unifiedpush/distributor/sunup/activities/MainActivity.kt @@ -10,6 +10,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch import org.unifiedpush.distributor.sunup.EventBus +import org.unifiedpush.distributor.sunup.Migrations import org.unifiedpush.distributor.sunup.activities.ui.MainUi import org.unifiedpush.distributor.sunup.activities.ui.theme.AppTheme import org.unifiedpush.distributor.sunup.services.RestartWorker @@ -22,6 +23,7 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) RestartWorker.startPeriodic(this) + Migrations(this).run() setContent { val viewModel = diff --git a/app/src/main/java/org/unifiedpush/distributor/sunup/utils/Notifications.kt b/app/src/main/java/org/unifiedpush/distributor/sunup/utils/Notifications.kt index 2fb3246..af1b4cf 100644 --- a/app/src/main/java/org/unifiedpush/distributor/sunup/utils/Notifications.kt +++ b/app/src/main/java/org/unifiedpush/distributor/sunup/utils/Notifications.kt @@ -31,7 +31,7 @@ class MainNotificationData( private val Context.warningChannelData: AppNotification.ChannelData get() = AppNotification.ChannelData( - "${this.getString(R.string.app_name)}.Warning", + "Warning", this.getString(LibR.string.warning), NotificationManager.IMPORTANCE_HIGH, this.resources.getString(LibR.string.warning_notif_description).format(this.getString(R.string.app_name)) @@ -71,7 +71,7 @@ class ForegroundNotification(context: Context) : AppNotification( true ), ChannelData( - "${context.getString(R.string.app_name)}.Listener", + "Foreground", context.getString(LibR.string.foreground_service), NotificationManager.IMPORTANCE_LOW, context.getString(LibR.string.foreground_notif_description)