Thread viewer for Bluesky

only start scan when button is pressed

Changed files
+17 -4
+16 -4
skythread.js
··· 7 7 8 8 window.loginDialog = $(document.querySelector('#login')); 9 9 window.accountMenu = $(document.querySelector('#account_menu')); 10 + window.postingStatsPage = $id('posting_stats_page'); 10 11 11 12 window.avatarPreloader = buildAvatarPreloader(); 12 13 ··· 123 124 $(accountMenu.querySelector('a[data-action=logout]')).addEventListener('click', (e) => { 124 125 e.preventDefault(); 125 126 logOut(); 127 + }); 128 + 129 + $(postingStatsPage.querySelector('form')).addEventListener('submit', (e) => { 130 + scanPostingStats(); 126 131 }); 127 132 128 133 window.appView = new BlueskyAPI('api.bsky.app', false); ··· 454 459 455 460 function showPostingStatsPage() { 456 461 $id('posting_stats_page').style.display = 'block'; 462 + } 457 463 464 + function scanPostingStats() { 458 465 let days = 7; 459 466 460 - let output = $id('posting_stats_page').querySelector('input[type=submit] + output'); 467 + let submit = $(postingStatsPage.querySelector('input[type=submit]'), HTMLInputElement); 468 + submit.disabled = true; 469 + 470 + let output = $(postingStatsPage.querySelector('input[type=submit] + output')); 461 471 output.innerText = ''; 472 + 473 + let tbody = $(postingStatsPage.querySelector('table.scan-result tbody')); 474 + tbody.innerHTML = ''; 462 475 463 476 accountAPI.loadTimeline(days, { 464 477 onPageLoad: (d) => { output.innerText += '.' } ··· 493 506 } 494 507 }); 495 508 496 - let tbody = $id('posting_stats_page').querySelector('table.scan-result tbody'); 497 - tbody.innerHTML = ''; 498 - 499 509 for (let i = 0; i < sorted.length; i++) { 500 510 let user = sorted[i]; 501 511 let tr = $tag('tr'); ··· 511 521 512 522 tbody.append(tr); 513 523 } 524 + 525 + submit.disabled = false; 514 526 }); 515 527 } 516 528
+1
types.d.ts
··· 13 13 declare var biohazardEnabled: boolean; 14 14 declare var loginDialog: HTMLElement; 15 15 declare var accountMenu: HTMLElement; 16 + declare var postingStatsPage: HTMLElement; 16 17 declare var avatarPreloader: IntersectionObserver; 17 18 18 19 type json = Record<string, any>;