Skip to content

Commit 6b5a487

Browse files
Merge branch 'preferences_store_serialization_fix' into 'master'
Add PreferenceStore serialization fix See merge request danny.lamarti/objectstore!3
2 parents 88838d7 + d3b657f commit 6b5a487

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
package nl.elements.objectstore
22

3-
import androidx.test.InstrumentationRegistry
43
import androidx.test.runner.AndroidJUnit4
54
import nl.elements.objectstore.stores.MemoryStore
6-
5+
import org.junit.Assert.assertEquals
76
import org.junit.Test
87
import org.junit.runner.RunWith
98

10-
import org.junit.Assert.*
11-
129
/**
1310
* Instrumented test, which will execute on an Android device.
1411
*
1512
* See [testing documentation](http://d.android.com/tools/testing).
1613
*/
1714
@RunWith(AndroidJUnit4::class)
1815
class ExampleInstrumentedTest {
16+
1917
@Test
2018
fun useAppContext() {
21-
val context = InstrumentationRegistry.getTargetContext()
19+
// val context = InstrumentationRegistry.getTargetContext()
2220
val store = MemoryStore()
2321

2422
store["key"] = "value"
@@ -27,4 +25,5 @@ class ExampleInstrumentedTest {
2725

2826
assertEquals("value", value)
2927
}
28+
3029
}

library/src/main/java/nl/elements/objectstore/stores/PreferencesStore.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package nl.elements.objectstore.stores
22

33

44
import android.content.SharedPreferences
5+
import android.util.Base64
56
import io.reactivex.Observable
67
import io.reactivex.disposables.Disposable
78
import nl.elements.objectstore.Converter
@@ -25,27 +26,25 @@ class PreferencesStore(
2526
get() = preferences.all.keys
2627

2728
override fun set(key: String, value: Any) {
28-
preferences
29-
.edit()
30-
.putString(key, writeToBytes(key, value).toString(Charsets.UTF_8))
31-
.apply()
29+
writeToBytes(key, value)
30+
.let { Base64.encodeToString(it, 0) }
31+
.let { preferences.edit().putString(key, it).apply() }
3232

3333
emit(Updated(key))
3434
}
3535

3636
override fun <T : Any> get(key: String): T =
3737
preferences
38-
.getString(key, null)
39-
?.byteInputStream(Charsets.UTF_8)
40-
?.read(key)!!
38+
.getString(key, null)!!
39+
.let { Base64.decode(it, 0) }
40+
.inputStream()
41+
.read(key)
4142

4243
override fun contains(key: String): Boolean = preferences.contains(key)
4344

4445
override fun remove(key: String) {
45-
if (key in preferences) {
46-
preferences.edit().remove(key).apply()
46+
if (preferences.edit().remove(key).commit())
4747
emit(Removed(key))
48-
}
4948
}
5049

5150
fun toPreferences(): SharedPreferences = StorePreferences(this, preferences)

0 commit comments

Comments
 (0)