@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
JavaScript
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