Keep several Ziele and fill the Cache from Einstellungen.
A Koordinate adds another place, and Hessen fetches only missing Kacheln without marking a Gebiet. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -21,6 +21,18 @@ function stringsFrom(value: unknown): string[] {
|
||||
return value.filter((item): item is string => typeof item === "string");
|
||||
}
|
||||
|
||||
function rememberedFrom(value: unknown): { heruntergeladen: string[]; ziele: string[] } {
|
||||
if (Array.isArray(value)) return { heruntergeladen: stringsFrom(value), ziele: [] };
|
||||
if (value && typeof value === "object") {
|
||||
const record = value as { heruntergeladen?: unknown; ziele?: unknown };
|
||||
return {
|
||||
heruntergeladen: stringsFrom(record.heruntergeladen),
|
||||
ziele: stringsFrom(record.ziele),
|
||||
};
|
||||
}
|
||||
return { heruntergeladen: [], ziele: [] };
|
||||
}
|
||||
|
||||
function settle(tx: IDBTransaction, value: () => unknown): Promise<unknown> {
|
||||
return new Promise((resolve, reject) => {
|
||||
tx.oncomplete = () => resolve(value());
|
||||
@@ -37,7 +49,7 @@ export function createMarksDb(): MarksPort {
|
||||
const tx = db.transaction(STORE, "readonly");
|
||||
const request = tx.objectStore(STORE).get(KEY);
|
||||
const value = await settle(tx, () => request.result);
|
||||
return { heruntergeladen: stringsFrom(value) };
|
||||
return rememberedFrom(value);
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
@@ -47,7 +59,10 @@ export function createMarksDb(): MarksPort {
|
||||
const db = await openDatabase();
|
||||
try {
|
||||
const tx = db.transaction(STORE, "readwrite");
|
||||
tx.objectStore(STORE).put(state.heruntergeladen, KEY);
|
||||
tx.objectStore(STORE).put(
|
||||
{ heruntergeladen: state.heruntergeladen, ziele: state.ziele },
|
||||
KEY,
|
||||
);
|
||||
await settle(tx, () => undefined);
|
||||
} finally {
|
||||
db.close();
|
||||
|
||||
Reference in New Issue
Block a user