Migrate all channel Id to remove pending channel
This commit is contained in:
parent
0ea06fe62e
commit
075383470e
|
@ -37,6 +37,6 @@ object LocalNotification {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getNotificationChannelId(context: Context, title: String): String {
|
fun getNotificationChannelId(context: Context, title: String): String {
|
||||||
return "${context.getString(R.string.app_name)}.Push.$title"
|
return "${context.packageName}.Push.$title"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package org.unifiedpush.distributor.nextpush
|
||||||
|
|
||||||
|
import android.app.NotificationManager
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
|
import android.util.Log
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import org.unifiedpush.distributor.nextpush.utils.TAG
|
||||||
|
|
||||||
|
class Migrations(val context: Context) {
|
||||||
|
private val sharedPreferences = context.getSharedPreferences(Store.PREF_NAME, Context.MODE_PRIVATE)
|
||||||
|
|
||||||
|
fun run() {
|
||||||
|
val currentVersion = sharedPreferences.getInt(PREF_MIGRATIONS_LEVEL, 0)
|
||||||
|
if (currentVersion == LAST_VERSION) return
|
||||||
|
Log.d(TAG, "Migration from $currentVersion to $LAST_VERSION")
|
||||||
|
if (currentVersion < 20000) {
|
||||||
|
Migration020000.run(context)
|
||||||
|
}
|
||||||
|
sharedPreferences.edit().putInt(PREF_MIGRATIONS_LEVEL, LAST_VERSION).apply()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Migration {
|
||||||
|
fun run(context: Context)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Migration from 0.x.x to 2.0.0
|
||||||
|
*/
|
||||||
|
object Migration020000: Migration {
|
||||||
|
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 a notification arrives. We didn't remove channel Id when app were
|
||||||
|
* deleted. In the same time, we changed the channel ID: they were using
|
||||||
|
* the app name, and we move to packageId
|
||||||
|
*/
|
||||||
|
@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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
// 2.0.0
|
||||||
|
private const val LAST_VERSION = 20000
|
||||||
|
private const val PREF_MIGRATIONS_LEVEL = "migrations.level"
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.unifiedpush.distributor.nextpush.EventBus
|
import org.unifiedpush.distributor.nextpush.EventBus
|
||||||
|
import org.unifiedpush.distributor.nextpush.Migrations
|
||||||
import org.unifiedpush.distributor.nextpush.account.AccountFactory
|
import org.unifiedpush.distributor.nextpush.account.AccountFactory
|
||||||
import org.unifiedpush.distributor.nextpush.activities.MainActivity.Companion.goToMainActivity
|
import org.unifiedpush.distributor.nextpush.activities.MainActivity.Companion.goToMainActivity
|
||||||
import org.unifiedpush.distributor.nextpush.activities.ui.StartUi
|
import org.unifiedpush.distributor.nextpush.activities.ui.StartUi
|
||||||
|
@ -35,6 +36,7 @@ class StartActivity : ComponentActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
Migrations(this).run()
|
||||||
|
|
||||||
if (AccountFactory.getAccount(this)?.connected == true) {
|
if (AccountFactory.getAccount(this)?.connected == true) {
|
||||||
goToMainActivity(this)
|
goToMainActivity(this)
|
||||||
|
|
Loading…
Reference in New Issue