# RxSharedPreferencesMigration

Artifact: [androidx.datastore:datastore-rxjava3](https://developer.android.com/jetpack/androidx/releases/datastore) [View Source](https://cs.android.com/search?q=file:androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt+class:androidx.datastore.rxjava3.RxSharedPreferencesMigration) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/datastore#1.0.0)

*** ** * ** ***

Kotlin \|[Java](https://developer.android.com/reference/androidx/datastore/rxjava3/RxSharedPreferencesMigration "View this page in Java")


```
interface RxSharedPreferencesMigration<T : Any?>
```

<br />

*** ** * ** ***

Client implemented migration interface.

## Summary

| ### Public functions |
|---|---|
| `http://reactivex.io/RxJava/3.x/javadoc/io/reactivex/rxjava3/core/Single.html<T>` | `https://developer.android.com/reference/kotlin/androidx/datastore/rxjava3/RxSharedPreferencesMigration#migrate(androidx.datastore.migrations.SharedPreferencesView,kotlin.Any)(sharedPreferencesView: https://developer.android.com/reference/kotlin/androidx/datastore/migrations/SharedPreferencesView, currentData: T)` Maps SharedPreferences into T. |
| `open http://reactivex.io/RxJava/3.x/javadoc/io/reactivex/rxjava3/core/Single.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>` | `https://developer.android.com/reference/kotlin/androidx/datastore/rxjava3/RxSharedPreferencesMigration#shouldMigrate(kotlin.Any)(currentData: T)` Whether or not the migration should be run. |

## Public functions

### migrate

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/datastore#1.0.0)

```
fun migrate(sharedPreferencesView: SharedPreferencesView, currentData: T): Single<T>
```

Maps SharedPreferences into T. Implementations should be idempotent since this may be called multiple times. See `https://developer.android.com/reference/kotlin/androidx/datastore/core/DataMigration#migrate(kotlin.Any)` for more information. The method accepts a SharedPreferencesView which is the view of the SharedPreferences to migrate from (limited to `https://developer.android.com/reference/kotlin/androidx/datastore/rxjava3/RxSharedPreferencesMigrationBuilder#keysToMigrate()`) and a T which represent the current data. The function must return the migrated data.

If SharedPreferences is empty or does not contain any keys which you specified, this callback will not run.

| Parameters |
|---|---|
| `sharedPreferencesView: https://developer.android.com/reference/kotlin/androidx/datastore/migrations/SharedPreferencesView` | the current state of the SharedPreferences |
| `currentData: T` | the most recently persisted data |

| Returns |
|---|---|
| `http://reactivex.io/RxJava/3.x/javadoc/io/reactivex/rxjava3/core/Single.html<T>` | a Single of the updated data |

### shouldMigrate

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/datastore#1.0.0)

```
open fun shouldMigrate(currentData: T): Single<Boolean>
```

Whether or not the migration should be run. This can be used to skip a read from the SharedPreferences.

| Parameters |
|---|---|
| `currentData: T` | the most recently persisted data |

| Returns |
|---|---|
| `http://reactivex.io/RxJava/3.x/javadoc/io/reactivex/rxjava3/core/Single.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>` | a Single indicating whether or not the migration should be run. |