UNPKG

@replyke/react-native

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

47 lines 1.49 kB
import * as Keychain from "react-native-keychain"; import { useAccountSync, useProject, handleError } from "@replyke/core"; const STORAGE_SERVICE_PREFIX = "replyke-accounts:"; const keychainStorage = { async getAccountMap(projectId) { try { const credentials = await Keychain.getGenericPassword({ service: `${STORAGE_SERVICE_PREFIX}${projectId}`, }); if (credentials) { return JSON.parse(credentials.password); } return null; } catch { return null; } }, async setAccountMap(projectId, map) { try { const service = `${STORAGE_SERVICE_PREFIX}${projectId}`; await Keychain.setGenericPassword(service, JSON.stringify(map), { service, }); } catch (error) { handleError(error, "Failed to write account map to Keychain"); } }, async deleteAccountMap(projectId) { try { await Keychain.resetGenericPassword({ service: `${STORAGE_SERVICE_PREFIX}${projectId}`, }); } catch (error) { handleError(error, "Failed to delete account map from Keychain"); } }, }; function AccountManager() { const { projectId } = useProject(); useAccountSync(keychainStorage, projectId); return null; } export default AccountManager; //# sourceMappingURL=AccountManager.js.map