about summary refs log tree commit diff
path: root/src/state/lib/storage.ts
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-07-18 15:24:37 -0500
committerPaul Frazee <pfrazee@gmail.com>2022-07-18 15:24:37 -0500
commit1d00f3b9840003601175d5394af34b29222db4e3 (patch)
treef835e910d5f11b84ce2403e307caea080c34ab79 /src/state/lib/storage.ts
parentde87ec17d1673855fdfe2ccd125d734591969dd4 (diff)
downloadvoidsky-1d00f3b9840003601175d5394af34b29222db4e3.tar.zst
Add mock API and reorg code for clarity
Diffstat (limited to 'src/state/lib/storage.ts')
-rw-r--r--src/state/lib/storage.ts52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/state/lib/storage.ts b/src/state/lib/storage.ts
new file mode 100644
index 000000000..dc5fb620f
--- /dev/null
+++ b/src/state/lib/storage.ts
@@ -0,0 +1,52 @@
+import AsyncStorage from '@react-native-async-storage/async-storage'
+
+export async function loadString(key: string): Promise<string | null> {
+  try {
+    return await AsyncStorage.getItem(key)
+  } catch {
+    // not sure why this would fail... even reading the RN docs I'm unclear
+    return null
+  }
+}
+
+export async function saveString(key: string, value: string): Promise<boolean> {
+  try {
+    await AsyncStorage.setItem(key, value)
+    return true
+  } catch {
+    return false
+  }
+}
+
+export async function load(key: string): Promise<any | null> {
+  try {
+    const str = await AsyncStorage.getItem(key)
+    if (typeof str !== 'string') {
+      return null
+    }
+    return JSON.parse(str)
+  } catch {
+    return null
+  }
+}
+
+export async function save(key: string, value: any): Promise<boolean> {
+  try {
+    await AsyncStorage.setItem(key, JSON.stringify(value))
+    return true
+  } catch {
+    return false
+  }
+}
+
+export async function remove(key: string): Promise<void> {
+  try {
+    await AsyncStorage.removeItem(key)
+  } catch {}
+}
+
+export async function clear(): Promise<void> {
+  try {
+    await AsyncStorage.clear()
+  } catch {}
+}