Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.4 kB · 49 lines
TypeScript
at mistress
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import type { Main } from "#/lexicons/types/club/touchfluffytail/touchedfluffytail";import { mainSchema } from "#/lexicons/types/club/touchfluffytail/touchedfluffytail";import { safeParse } from "@atcute/lexicons";import { createMMKV } from "react-native-mmkv";
const storage = createMMKV({ id: "club.touchfluffytail.record_queue" });const QUEUE_KEY = "pending_records";
export type PendingRecord = { rkey: string; record: Main;};
export function getPendingRecords(): PendingRecord[] { const raw = storage.getString(QUEUE_KEY); if (!raw) return [];
let parsed: unknown;
try { parsed = JSON.parse(raw); } catch { return []; }
if (!Array.isArray(parsed)) return [];
return parsed.flatMap((item): PendingRecord[] => { if (typeof item !== "object" || item === null) return [];
const { rkey, record } = item as Partial<PendingRecord>; if (typeof rkey !== "string") return [];
const result = safeParse(mainSchema, record); return result.ok ? [{ rkey, record: result.value }] : []; });}
export function addPendingRecord(entry: PendingRecord): void { writePendingRecords([...getPendingRecords(), entry]);}
export function removePendingRecord(rkey: string): void { writePendingRecords(getPendingRecords().filter((entry) => entry.rkey !== rkey));}
function writePendingRecords(records: PendingRecord[]): void { storage.set(QUEUE_KEY, JSON.stringify(records));}