40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
// browser.storage.local wrapper with defaults
|
|
var Store = (() => {
|
|
const DEFAULT_SETTINGS = {
|
|
kimaiUrl: '',
|
|
authMode: 'bearer', // bearer (Kimai >= 2.x API token) | legacy (X-AUTH-USER / X-AUTH-TOKEN)
|
|
kimaiUser: '',
|
|
kimaiToken: '',
|
|
defaultProject: null,
|
|
defaultActivity: null,
|
|
defaultProjectLabel: '',
|
|
defaultActivityLabel: '',
|
|
defaultDescription: '',
|
|
tags: 'abacus-sync',
|
|
dayStart: '08:00',
|
|
skipIfRulePresent: true,
|
|
parse: {
|
|
rowSelector: 'tr, [role="row"]',
|
|
timeMode: 'auto',
|
|
durationIndex: 0,
|
|
sameDateRows: 'sum',
|
|
year: '',
|
|
},
|
|
};
|
|
|
|
async function get() {
|
|
const s = await browser.storage.local.get(['settings', 'rules', 'daysText', 'extractInfo', 'catalog']);
|
|
return {
|
|
settings: { ...DEFAULT_SETTINGS, ...(s.settings || {}), parse: { ...DEFAULT_SETTINGS.parse, ...(s.settings?.parse || {}) } },
|
|
rules: s.rules || [],
|
|
daysText: s.daysText || '',
|
|
extractInfo: s.extractInfo || null,
|
|
catalog: s.catalog || { projects: [], activities: [], fetchedAt: null },
|
|
};
|
|
}
|
|
|
|
const set = (obj) => browser.storage.local.set(obj);
|
|
|
|
return { get, set, DEFAULT_SETTINGS };
|
|
})();
|