Skip to content

Commit d3b657f

Browse files
committed
Add PreferenceStore serialization fix
1 parent 8e5fa04 commit d3b657f

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
@@ -4,6 +4,7 @@ import ObjectStore
44
import ObjectStore.Event.Removed
55
import ObjectStore.Event.Updated
66
import android.content.SharedPreferences
7+
import android.util.Base64
78
import io.reactivex.Observable
89
import io.reactivex.disposables.Disposable
910
import nl.elements.objectstore.Converter
@@ -24,27 +25,25 @@ class PreferencesStore(
2425
get() = preferences.all.keys
2526

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

3232
emit(Updated(key))
3333
}
3434

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

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

4344
override fun remove(key: String) {
44-
if (key in preferences) {
45-
preferences.edit().remove(key).apply()
45+
if (preferences.edit().remove(key).commit())
4646
emit(Removed(key))
47-
}
4847
}
4948

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

0 commit comments

Comments
 (0)