+5
-1
minisky.js
+5
-1
minisky.js
+26
-3
skythread.js
+26
-3
skythread.js
···
127
127
});
128
128
129
129
$(postingStatsPage.querySelector('form')).addEventListener('submit', (e) => {
130
-
scanPostingStats();
130
+
if (!window.scanStartTime) {
131
+
scanPostingStats();
132
+
} else {
133
+
stopScan();
134
+
}
131
135
});
132
136
133
137
$(postingStatsPage.querySelector('input[type="range"]')).addEventListener('input', (e) => {
···
475
479
476
480
function scanPostingStats() {
477
481
let submit = $(postingStatsPage.querySelector('input[type=submit]'), HTMLInputElement);
478
-
submit.disabled = true;
482
+
submit.value = 'Cancel';
479
483
480
484
let range = $(postingStatsPage.querySelector('input[type=range]'), HTMLInputElement);
481
485
let days = parseInt(range.value, 10);
···
492
496
tbody.innerHTML = '';
493
497
494
498
let now = new Date().getTime();
499
+
window.scanStartTime = now;
495
500
496
501
accountAPI.loadTimeline(days, {
497
502
onPageLoad: (data) => {
498
503
let minTime = now;
499
504
505
+
if (window.scanStartTime != now) {
506
+
return { cancel: true };
507
+
}
508
+
500
509
for (let item of data) {
501
510
let timestamp = item.reason ? item.reason.indexedAt : item.post.record.createdAt;
502
511
let date = Date.parse(timestamp);
···
507
516
progressBar.value = daysBack;
508
517
}
509
518
}).then(items => {
519
+
if (window.scanStartTime != now) {
520
+
return;
521
+
}
522
+
510
523
let users = {};
511
524
let total = 0;
512
525
···
558
571
}
559
572
560
573
table.style.display = 'table';
561
-
submit.disabled = false;
574
+
submit.value = 'Start scan';
562
575
progressBar.style.display = 'none';
576
+
window.scanStartTime = undefined;
563
577
});
578
+
}
579
+
580
+
function stopScan() {
581
+
let submit = $(postingStatsPage.querySelector('input[type=submit]'), HTMLInputElement);
582
+
submit.value = 'Start scan';
583
+
window.scanStartTime = undefined;
584
+
585
+
let progressBar = $(postingStatsPage.querySelector('input[type=submit] + progress'), HTMLProgressElement);
586
+
progressBar.style.display = 'none';
564
587
}
565
588
566
589
function showNotificationsPage() {
+1
types.d.ts
+1
types.d.ts
···
11
11
declare var api: BlueskyAPI;
12
12
declare var isIncognito: boolean;
13
13
declare var biohazardEnabled: boolean;
14
+
declare var scanStartTime: number | undefined;
14
15
declare var loginDialog: HTMLElement;
15
16
declare var accountMenu: HTMLElement;
16
17
declare var postingStatsPage: HTMLElement;