diff --git a/src/Scheduler.ts b/src/Scheduler.ts index da59977..ba69ec0 100644 --- a/src/Scheduler.ts +++ b/src/Scheduler.ts @@ -146,7 +146,7 @@ export default class Scheduler { } catch (e) { console.warn('ACTION ABORTED', e.message); if (e instanceof TryLaterError) { - console.warn('TRY AFTER', e.seconds); + console.warn('TRY', task.id, 'AFTER', e.seconds); this.actionQueue.clear(); this.taskQueue.postpone(task.id, e.seconds); this.nextSleepLong(); diff --git a/src/Storage/TaskQueue.ts b/src/Storage/TaskQueue.ts index 4621dfe..6102d5a 100644 --- a/src/Storage/TaskQueue.ts +++ b/src/Storage/TaskQueue.ts @@ -57,6 +57,7 @@ export class TaskQueue { postpone(id: TaskId, deltaSeconds: number) { const [task, items] = this.shiftTask(id); if (task) { + this.log('POSTPONE', task); items.push(task.withTime(task.ts + deltaSeconds)); } this.flushItems(items); @@ -75,7 +76,15 @@ export class TaskQueue { private getItems(): TaskList { const serialized = localStorage.getItem(QUEUE_NAME); - return serialized !== null ? (JSON.parse(serialized) as TaskList) : []; + const storedItems = + serialized !== null + ? (JSON.parse(serialized) as Array<{ [key: string]: any }>) + : []; + const items: TaskList = []; + storedItems.forEach(obj => { + items.push(new Task(obj.id || uniqId(), +obj.ts, obj.cmd)); + }); + return items; } private flushItems(items: TaskList): void {