How to clear jetpack datastore data on specific condition

Viewed 8175

i've been using jetpack datastore for a while, but then i got a problem. I want to clear data in datastore when the app is destroyed. Im using jetpack datastore to persist data only in form

i've searched that sharedPreferences has a clear() function, is there a similar function for Jetpack Datastore ? and how can i use it ?

i found clear function in datastore documentation but there is no explanation on how to use it

5 Answers

Use this

dataStore.edit { 
        it.clear()
    }

Method description states

Removes all preferences from this MutablePreferences.

For proto datastore (Thanks to Amir Raza for comment)

datastore.updateData { 
    it.toBuilder().clear().build()
}

In case anyone wants to know how to remove a specific preference

context.dataStore.edit {
    it.remove(key)
}

Try this (for Proto DataStore):

 dataStore.updateData { obj ->
    obj.toBuilder()
        .clear()
        .build()
 }

If you want to delete a specific key then try this

dataStore.edit {
        if (it.contains(key)) {
            it.remove(key)
        }
    } 

For Proto DataStore you can do:

dataStore.updateData { it.getDefaultInstance() }

It doesn't delete the file, but it's effectively the same.

Related