| 1 | import * as Effect from "effect/Effect"; |
| 2 | |
| 3 | import { runtime } from "../lib/runtime"; |
| 4 | import * as MobilePreferences from "./mobile-preferences"; |
| 5 | import * as MobileStorage from "./mobile-storage"; |
| 6 | |
| 7 | export type { Preferences } from "./mobile-preferences"; |
| 8 | export type { AgentAwarenessRegistrationRecord, RecentThreadShortcut } from "./mobile-storage"; |
| 9 | export { MobilePreferencesLoadError, MobilePreferencesSaveError } from "./mobile-preferences"; |
| 10 | export { |
| 11 | MobileDeviceIdGenerationError, |
| 12 | MobileStorageDecodeError, |
| 13 | MobileStorageEncodeError, |
| 14 | } from "./mobile-storage"; |
| 15 | export { MobileSecureStorageError } from "./mobile-secure-storage"; |
| 16 | |
| 17 | const runStorage = <A, E>( |
| 18 | use: (storage: MobileStorage.MobileStorage["Service"]) => Effect.Effect<A, E>, |
| 19 | ) => runtime.runPromise(MobileStorage.MobileStorage.pipe(Effect.flatMap(use))); |
| 20 | |
| 21 | const runPreferences = <A, E>( |
| 22 | use: (store: MobilePreferences.MobilePreferencesStore["Service"]) => Effect.Effect<A, E>, |
| 23 | ) => runtime.runPromise(MobilePreferences.MobilePreferencesStore.pipe(Effect.flatMap(use))); |
| 24 | |
| 25 | export const loadSavedConnections = () => runStorage((storage) => storage.loadSavedConnections); |
| 26 | export const saveConnection = ( |
| 27 | connection: Parameters<MobileStorage.MobileStorage["Service"]["saveConnection"]>[0], |
| 28 | ) => runStorage((storage) => storage.saveConnection(connection)); |
| 29 | |
| 30 | export const loadPreferences = () => runPreferences((store) => store.load); |
| 31 | export const savePreferencesPatch = (patch: Partial<MobilePreferences.Preferences>) => |
| 32 | runPreferences((store) => store.savePatch(patch)); |
| 33 | export const updatePreferences = ( |
| 34 | transform: (current: MobilePreferences.Preferences) => Partial<MobilePreferences.Preferences>, |
| 35 | ) => runPreferences((store) => store.update(transform)); |
| 36 | |
| 37 | export const loadOrCreateAgentAwarenessDeviceId = () => |
| 38 | runStorage((storage) => storage.loadOrCreateAgentAwarenessDeviceId); |
| 39 | export const loadAgentAwarenessDeviceId = () => |
| 40 | runStorage((storage) => storage.loadAgentAwarenessDeviceId); |
| 41 | export const loadAgentAwarenessRegistrationRecord = () => |
| 42 | runStorage((storage) => storage.loadAgentAwarenessRegistrationRecord); |
| 43 | export const saveAgentAwarenessRegistrationRecord = ( |
| 44 | record: MobileStorage.AgentAwarenessRegistrationRecord, |
| 45 | ) => runStorage((storage) => storage.saveAgentAwarenessRegistrationRecord(record)); |
| 46 | export const clearAgentAwarenessRegistrationRecord = () => |
| 47 | runStorage((storage) => storage.clearAgentAwarenessRegistrationRecord); |
| 48 | |
| 49 | export const loadRecentThreadShortcuts = () => |
| 50 | runStorage((storage) => storage.loadRecentThreadShortcuts); |
| 51 | export const saveRecentThreadShortcuts = ( |
| 52 | threads: ReadonlyArray<MobileStorage.RecentThreadShortcut>, |
| 53 | ) => runStorage((storage) => storage.saveRecentThreadShortcuts(threads)); |