TaskDecay v1.0.0 MVP — smart task review & archive Chrome extension
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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]);
|
||||
}
|
||||
Reference in New Issue
Block a user