octoplus-coffee-check/state.ts
2025-05-22 17:56:23 +01:00

20 lines
608 B
TypeScript

const STATE_FILENAME = Deno.env.get("STATE_FILENAME") ?? "./state.json";
type State = { [offerSlug: string]: { canClaimOffer: boolean, cannotClaimReason?: string, claimBy: string } };
export async function loadState(): Promise<State> {
try {
const data = await Deno.readTextFile(STATE_FILENAME);
return JSON.parse(data) as State;
} catch (err) {
if (!(err instanceof Deno.errors.NotFound)) {
throw err;
}
return {};
}
}
export async function saveState(state: State): Promise<void> {
const data = JSON.stringify(state);
await Deno.writeTextFile(STATE_FILENAME, data);
}