import * as gapi from './gapi';
import { MsgType, Msg } from './msg';
import { Duration, TrackPeriod, TrackPeriodFlat } from './duration';
import moment from 'moment';
import { GraphData, getGraphData } from './graph';
import { PatternEntry, PatternEntryFlat } from './pattern';
let mainPatterns: PatternEntry[] = [];
let analyzePatterns: PatternEntry[] = [];
let calendars: {[id: string]: gapi.GCalendarMeta} = {};
let calData: {[id: string]: gapi.GCalendar} = {};
let config = {
trackedPeriods: [
new TrackPeriod('Today', Duration.days(1), Duration.days(0)),
new TrackPeriod('Yesterday', Duration.days(2), Duration.days(1)),
new TrackPeriod('This Week', Duration.weeks(1), Duration.weeks(0)),
new TrackPeriod('This Month', Duration.months(1), Duration.months(0))] as TrackPeriod[]
};
let mainGraphData: GraphData[] = [];
let dirtyMetadata = false;
function loadMetadata() {
return new Promise(resolver => chrome.storage.local.get([
'calendars', 'config', 'mainPatterns', 'analyzePatterns',
], items => {
if (chrome.runtime.lastError)
console.error("error while loading saved metadata");
else if (!items.hasOwnProperty('config'))
console.log("no saved metadata");
else
{
console.log('metadata loaded');
config = {
trackedPeriods: items.config.trackedPeriods.map((p: TrackPeriodFlat) => TrackPeriod.inflate(p))
};
calendars = items.calendars;
mainPatterns = items