template_0205
This commit is contained in:
82
RN_TEMPLATE/app/utils/storage/index.ts
Normal file
82
RN_TEMPLATE/app/utils/storage/index.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import { MMKV } from "react-native-mmkv"
|
||||
|
||||
export const storage = new MMKV()
|
||||
|
||||
/**
|
||||
* Loads a string from storage.
|
||||
*
|
||||
* @param key The key to fetch.
|
||||
*/
|
||||
export function loadString(key: string): string | null {
|
||||
try {
|
||||
return storage.getString(key) ?? null
|
||||
} catch {
|
||||
// not sure why this would fail... even reading the RN docs I'm unclear
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a string to storage.
|
||||
*
|
||||
* @param key The key to fetch.
|
||||
* @param value The value to store.
|
||||
*/
|
||||
export function saveString(key: string, value: string): boolean {
|
||||
try {
|
||||
storage.set(key, value)
|
||||
return true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads something from storage and runs it thru JSON.parse.
|
||||
*
|
||||
* @param key The key to fetch.
|
||||
*/
|
||||
export function load<T>(key: string): T | null {
|
||||
let almostThere: string | null = null
|
||||
try {
|
||||
almostThere = loadString(key)
|
||||
return JSON.parse(almostThere ?? "") as T
|
||||
} catch {
|
||||
return (almostThere as T) ?? null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves an object to storage.
|
||||
*
|
||||
* @param key The key to fetch.
|
||||
* @param value The value to store.
|
||||
*/
|
||||
export function save(key: string, value: unknown): boolean {
|
||||
try {
|
||||
saveString(key, JSON.stringify(value))
|
||||
return true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes something from storage.
|
||||
*
|
||||
* @param key The key to kill.
|
||||
*/
|
||||
export function remove(key: string): void {
|
||||
try {
|
||||
storage.delete(key)
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Burn it all to the ground.
|
||||
*/
|
||||
export function clear(): void {
|
||||
try {
|
||||
storage.clearAll()
|
||||
} catch {}
|
||||
}
|
||||
Reference in New Issue
Block a user