Files
petfeed/mobile/src/lib/tokenCache.ts
T
admin 9eb31c3323 feat(mobile): add Expo/React Native scaffold for PawFeed Android app
Connectivity + auth scaffold only: Expo Router, Clerk session auth via
expo-secure-store, and a type-only tRPC AppRouter import from the web
app's router — no backend changes needed. See mobile/README.md.
2026-09-05 11:01:49 +02:00

33 lines
883 B
TypeScript

import * as SecureStore from "expo-secure-store";
import type { TokenCache } from "@clerk/expo";
/**
* Persists the Clerk session JWT in the OS-level secure keystore (Android
* Keystore / iOS Keychain) instead of Clerk's in-memory default, so the
* signed-in session survives an app restart.
*/
export const secureTokenCache: TokenCache = {
async getToken(key) {
try {
return await SecureStore.getItemAsync(key);
} catch {
return null;
}
},
async saveToken(key, value) {
try {
await SecureStore.setItemAsync(key, value);
} catch {
// Storage write failed (e.g. no keystore available) — session simply
// won't persist across restarts; sign-in flow still works this run.
}
},
async clearToken(key) {
try {
await SecureStore.deleteItemAsync(key);
} catch {
// best-effort cleanup
}
},
};