Status Update
Comments
ap...@google.com <ap...@google.com> #2
Branch: androidx-main
commit f5617bbd7d5b37de7e0eb04ed7d867136d9f304c
Author: rohitsat13 <rohitsat@google.com>
Date: Tue Feb 16 09:22:50 2021
Create dataStore property delegate.
Bug: 173726702
Relnote: The Context.createDataStore extension function has been removed and replaced with globalDataStore property delegate. Call globalDataStore once at the top level in your kotlin file.
Test: GlobalDataStoreTest
Change-Id: I5721591268086f2111719fcc48c4144c20b4e129
M datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
M datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
M datastore/datastore-preferences/api/current.txt
M datastore/datastore-preferences/api/public_plus_experimental_current.txt
M datastore/datastore-preferences/api/restricted_current.txt
A datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt
D datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
A datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
D datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreFactory.kt
M datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreBuilder.kt
M datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
M datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
M datastore/datastore/api/current.txt
M datastore/datastore/api/public_plus_experimental_current.txt
M datastore/datastore/api/restricted_current.txt
A datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreDelegateTest.kt
D datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreFactoryTest.kt
A datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
D datastore/datastore/src/main/java/androidx/datastore/DataStoreFactory.kt
ro...@google.com <ro...@google.com>
ap...@google.com <ap...@google.com> #3
Branch: androidx-main
commit 5fe0a262ac6af55f68777fd2e2ef58cbc0939536
Author: rohitsat13 <rohitsat@google.com>
Date: Fri Feb 19 09:28:47 2021
RxDataStore property delegates
Test: See new Delegate Tests
Bug: 173726702
Relnote: Added property delegates for RxDataStore users.
Change-Id: Ied7680e698bc98b385b4bb4f33b6481963e7589a
M datastore/datastore-preferences-rxjava2/api/current.txt
M datastore/datastore-preferences-rxjava2/api/public_plus_experimental_current.txt
M datastore/datastore-preferences-rxjava2/api/restricted_current.txt
A datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt
A datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences-rxjava3/api/current.txt
M datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt
M datastore/datastore-preferences-rxjava3/api/restricted_current.txt
A datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt
A datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-rxjava2/api/current.txt
M datastore/datastore-rxjava2/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava2/api/restricted_current.txt
A datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt
A datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreDelegate.kt
M datastore/datastore-rxjava3/api/current.txt
M datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava3/api/restricted_current.txt
A datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt
A datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreDelegate.kt
ru...@gmail.com <ru...@gmail.com> #4
Thanks, but I don't understand why this was implemented in datastore
rather than datastore-core
(and related modules). I was hoping to be able to use it without needing a Context
reference.
ro...@google.com <ro...@google.com> #5
A few things led to the approach that we ended up with:
- Since we need the result of context.filesDir, and context.filesDir can do file IO, we need to accept a callback for generating the file. Deduping on just the relative path (String) is easier than deduping on the callback () -> File.
- You can't really depend on context at the top level of a kotlin file or in a static/companion object.
- We wanted something that people could easily copy&paste into their code and get going without having to worry to much about it.
- (Unrelated to your question but..) Different calls to createDataStore for the same file names could have different construction params. The various params probably don't implement value equality so you can't really throw errors in these cases (we'd probably just have to take the first set of params then silently ignore future ones).
That said, if you can just inject the DataStore using hilt with @Singleton you don't have to worry about any of this.
jd...@xooloo.com <jd...@xooloo.com> #6
Release notes for that features are broken.
Not only they suggest to use =
instead of by
(which make the code snippet invalid), but they forget to mention how we are supposed to deal with the new Serializer argument.
jd...@xooloo.com <jd...@xooloo.com> #7
How are we suppose to migrate code like this:
private val _store = context.createDataStore("store", migrations = listOf(
SharedPreferencesMigration(context, "store")
))
There is not way to create SharedPreferencesMigration without context reference.
private val Context.store by preferencesDataStore("store", migrations = listOf(
SharedPreferencesMigration(context, "store") // error context do not exists
))
ro...@google.com <ro...@google.com> #8
Thanks for reporting - we are working on a fix for the migrations for next release.
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit b64da89bd9caa4492b296a701e08d3d6fb7f2e52
Author: rohitsat13 <rohitsat@google.com>
Date: Fri Feb 26 09:51:28 2021
Change migrations param to migrationProducers param for datastore property delegate since you may need context to create a sp migration for example.
Test: See new tests
Relnote: You can now add a migration that depends on context to your `dataStore` and `preferencesDataStore` property delegate.
Bug: 173726702
Change-Id: I4ef69b0eed544cde4f05cdee9e885d36af0f4abb
M datastore/datastore-preferences-rxjava2/api/current.txt
M datastore/datastore-preferences-rxjava2/api/public_plus_experimental_current.txt
M datastore/datastore-preferences-rxjava2/api/restricted_current.txt
M datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt
M datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences-rxjava3/api/current.txt
M datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt
M datastore/datastore-preferences-rxjava3/api/restricted_current.txt
M datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt
M datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences/api/current.txt
M datastore/datastore-preferences/api/public_plus_experimental_current.txt
M datastore/datastore-preferences/api/restricted_current.txt
M datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt
M datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
M datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
M datastore/datastore-rxjava2/api/current.txt
M datastore/datastore-rxjava2/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava2/api/restricted_current.txt
M datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt
M datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreDelegate.kt
M datastore/datastore-rxjava3/api/current.txt
M datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
M datastore/datastore-rxjava3/api/restricted_current.txt
M datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt
M datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreDelegate.kt
M datastore/datastore/api/current.txt
M datastore/datastore/api/public_plus_experimental_current.txt
M datastore/datastore/api/restricted_current.txt
M datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreDelegateTest.kt
M datastore/datastore/src/androidTest/java/androidx/datastore/migrations/SharedPreferencesMigrationTest.kt
M datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
ro...@google.com <ro...@google.com>
[Deleted User] <[Deleted User]> #10
private val Context._dataStore: DataStore<Preferences> by preferencesDataStore(
name = "sampingan_data_store",
migrations = listOf(
SharedPreferencesMigration(context, context.packageName + DEFAULT_PREF)
)
)
val dataStore: DataStore<Preferences> = context._dataStore
Description
DataStore Component used: All
DataStore Version used: 1.0.0-alpha-04
DataStoreFactory
andPreferenceDataStoreFactory
include the following warning:Could the factories be made responsible for returning the same instance if they've already created one, so the consuming app doesn't need to manage that themselves?