20 lines
608 B
TypeScript
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);
|
|
}
|