fix: fall back when Memos filters are unsupported
This commit is contained in:
+5
-1
@@ -17,7 +17,11 @@ export async function listMemos(baseUrl: string, token: string, rules: MemosSync
|
|||||||
const all: MemosMemo[] = []; let pageToken = "";
|
const all: MemosMemo[] = []; let pageToken = "";
|
||||||
const tags = rules.tags?.filter(Boolean) || []; const mode = rules.attachmentMode || "all";
|
const tags = rules.tags?.filter(Boolean) || []; const mode = rules.attachmentMode || "all";
|
||||||
const quote = (value: string) => JSON.stringify(value); const filters = [rules.creator && `creator == ${quote(rules.creator)}`, `visibility == "PUBLIC"`, ...tags.map((tag) => `tags.exists(t, t == ${quote(tag)})`)].filter(Boolean).join(" && ");
|
const quote = (value: string) => JSON.stringify(value); const filters = [rules.creator && `creator == ${quote(rules.creator)}`, `visibility == "PUBLIC"`, ...tags.map((tag) => `tags.exists(t, t == ${quote(tag)})`)].filter(Boolean).join(" && ");
|
||||||
do { const params = new URLSearchParams({ pageSize: "100" }); if (pageToken) params.set("pageToken", pageToken); if (filters) params.set("filter", filters); const res = await request(`${base(baseUrl)}/memos?${params}`, token); const data = await res.json(); all.push(...(data.memos || [])); pageToken = data.nextPageToken || ""; } while (pageToken);
|
let useServerFilter = Boolean(filters);
|
||||||
|
do { const params = new URLSearchParams({ pageSize: "100" }); if (pageToken) params.set("pageToken", pageToken); if (useServerFilter && filters) params.set("filter", filters); let data: any;
|
||||||
|
try { data = await (await request(`${base(baseUrl)}/memos?${params}`, token)).json(); }
|
||||||
|
catch (error) { if (!pageToken && useServerFilter && error instanceof Error && error.message.startsWith("Memos API 400")) { useServerFilter = false; continue; } throw error; }
|
||||||
|
all.push(...(data.memos || [])); pageToken = data.nextPageToken || ""; } while (pageToken);
|
||||||
return all.filter((memo) => {
|
return all.filter((memo) => {
|
||||||
if (memo.visibility !== "PUBLIC") return false;
|
if (memo.visibility !== "PUBLIC") return false;
|
||||||
if (rules.creator && memo.creator !== rules.creator) return false;
|
if (rules.creator && memo.creator !== rules.creator) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user