57 lines
2.1 KiB
JavaScript
57 lines
2.1 KiB
JavaScript
import { DEFAULT_SETTINGS } from './types.js';
|
|
const SETTINGS_KEY = 'taskdecay_settings_v1';
|
|
const TASKS_KEY = 'taskdecay_tasks_v1';
|
|
const SYNC_KEY = 'taskdecay_last_sync_v1';
|
|
export async function getSettings() {
|
|
const result = await chrome.storage.local.get([SETTINGS_KEY]);
|
|
const stored = result[SETTINGS_KEY];
|
|
if (!stored)
|
|
return JSON.parse(JSON.stringify(DEFAULT_SETTINGS));
|
|
const parsed = typeof stored === 'string' ? JSON.parse(stored) : stored;
|
|
return { ...DEFAULT_SETTINGS, ...parsed };
|
|
}
|
|
export async function setSettings(settings) {
|
|
await chrome.storage.local.set({ [SETTINGS_KEY]: JSON.stringify(settings) });
|
|
}
|
|
export async function getStoredTasks() {
|
|
const result = await chrome.storage.local.get([TASKS_KEY]);
|
|
const stored = result[TASKS_KEY];
|
|
if (!stored)
|
|
return [];
|
|
const parsed = typeof stored === 'string' ? JSON.parse(stored) : stored;
|
|
return parsed.map((t) => ({
|
|
...t,
|
|
createdAt: new Date(t.createdAt),
|
|
updatedAt: new Date(t.updatedAt),
|
|
completedAt: t.completedAt ? new Date(t.completedAt) : null,
|
|
dueDate: t.dueDate ? new Date(t.dueDate) : null,
|
|
}));
|
|
}
|
|
export async function setStoredTasks(tasks) {
|
|
await chrome.storage.local.set({ [TASKS_KEY]: JSON.stringify(tasks) });
|
|
}
|
|
export async function getLastSync() {
|
|
const result = await chrome.storage.local.get([SYNC_KEY]);
|
|
return result[SYNC_KEY] || null;
|
|
}
|
|
export async function setLastSync(date) {
|
|
await chrome.storage.local.set({ [SYNC_KEY]: date });
|
|
}
|
|
export async function addDismissedTask(taskId) {
|
|
const settings = await getSettings();
|
|
if (!settings.dismissedTasks.includes(taskId)) {
|
|
settings.dismissedTasks.push(taskId);
|
|
await setSettings(settings);
|
|
}
|
|
}
|
|
export async function addArchivedTask(taskId) {
|
|
const settings = await getSettings();
|
|
if (!settings.archivedTasks.includes(taskId)) {
|
|
settings.archivedTasks.push(taskId);
|
|
await setSettings(settings);
|
|
}
|
|
}
|
|
export async function clearAllTasks() {
|
|
await chrome.storage.local.remove([TASKS_KEY, SYNC_KEY]);
|
|
}
|