Markers: only allow 'home' and 'notifications' markers
This commit is contained in:
parent
8e178338b7
commit
a2c5b5e61d
|
@ -5,6 +5,8 @@ import { parseBody } from '@/utils/api.ts';
|
||||||
|
|
||||||
const kv = await Deno.openKv();
|
const kv = await Deno.openKv();
|
||||||
|
|
||||||
|
type Timeline = 'home' | 'notifications';
|
||||||
|
|
||||||
interface Marker {
|
interface Marker {
|
||||||
last_read_id: string;
|
last_read_id: string;
|
||||||
version: number;
|
version: number;
|
||||||
|
@ -36,8 +38,8 @@ const markerDataSchema = z.object({
|
||||||
|
|
||||||
export const updateMarkersController: AppController = async (c) => {
|
export const updateMarkersController: AppController = async (c) => {
|
||||||
const pubkey = c.get('pubkey')!;
|
const pubkey = c.get('pubkey')!;
|
||||||
const record = z.record(z.string(), markerDataSchema).parse(await parseBody(c.req.raw));
|
const record = z.record(z.enum(['home', 'notifications']), markerDataSchema).parse(await parseBody(c.req.raw));
|
||||||
const timelines = Object.keys(record);
|
const timelines = Object.keys(record) as Timeline[];
|
||||||
|
|
||||||
const markers: Record<string, Marker> = {};
|
const markers: Record<string, Marker> = {};
|
||||||
|
|
||||||
|
@ -49,7 +51,7 @@ export const updateMarkersController: AppController = async (c) => {
|
||||||
const last = entries.find(({ key }) => key[key.length - 1] === timeline);
|
const last = entries.find(({ key }) => key[key.length - 1] === timeline);
|
||||||
|
|
||||||
const marker: Marker = {
|
const marker: Marker = {
|
||||||
last_read_id: record[timeline].last_read_id,
|
last_read_id: record[timeline]!.last_read_id,
|
||||||
version: last?.value ? last.value.version + 1 : 1,
|
version: last?.value ? last.value.version + 1 : 1,
|
||||||
updated_at: new Date().toISOString(),
|
updated_at: new Date().toISOString(),
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue