前回の続きで下記のようにDataStoreへの移行をproduceMigrationsで定義します。
internal const val DATA_STORE_NAME = "preferences_data_store"
internal const val PREFERENCES_NAME = “preferences”

internal val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
    name = DATA_STORE_NAME,
    produceMigrations = { context ->
        listOf(
            SharedPreferencesMigration(
                context = context,
                sharedPreferencesName = PREFERENCES_NAME
            )
        )
    }
)

このときSharedPreferencesに一つのキーのみで使っている場合は良いですが複数のキーを使っている場合に移行が難しくなります。そのような場合はkeysToMigrateを使います。keysToMigrateについてWeb検索してもあまりヒットしないですね。。

下記のように書きます。

internal const val DATA_STORE_NAME = "preferences_data_store"
internal const val PREFERENCES_NAME = “preferences”
internal const val KEY_NAME = “key”

internal val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
    name = DATA_STORE_NAME,
    produceMigrations = { context ->
        listOf(
            SharedPreferencesMigration(
                context = context,
                sharedPreferencesName = PREFERENCES_NAME,
                keysToMigrate = setOf(KEY_NAME)
            )
        )
    }
)

これでSharedPreferencesのキー毎にマイグレーションが可能です。