Thread viewer for Bluesky

added some better indication of import status

+4
index.html
··· 201 202 <div class="lycan-import"> 203 <form> 204 <p> 205 In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database. 206 This is a one-time process, but it can take several minutes or more, depending on the age of your account. ··· 215 </form> 216 217 <div class="import-progress"> 218 <p class="import-status"></p> 219 <p><progress></progress> <output></output></p> 220 </div>
··· 201 202 <div class="lycan-import"> 203 <form> 204 + <h4>Data not imported yet</h4> 205 + 206 <p> 207 In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database. 208 This is a one-time process, but it can take several minutes or more, depending on the age of your account. ··· 217 </form> 218 219 <div class="import-progress"> 220 + <h4>Import in progress</h4> 221 + 222 <p class="import-status"></p> 223 <p><progress></progress> <output></output></p> 224 </div>
+5 -1
private_search_page.js
··· 157 this.lycanImportSection.style.display = 'block'; 158 this.lycanImportForm.style.display = 'block'; 159 this.importProgress.style.display = 'none'; 160 161 this.stopImportTimer(); 162 } else if (info.status == 'in_progress' || info.status == 'scheduled' || info.status == 'requested') { 163 this.lycanImportSection.style.display = 'block'; 164 this.lycanImportForm.style.display = 'none'; 165 this.importProgress.style.display = 'block'; 166 167 this.showImportProgress(info); 168 this.startImportTimer(); 169 } else if (info.status == 'finished') { 170 this.lycanImportForm.style.display = 'none'; 171 this.importProgress.style.display = 'block'; 172 173 this.showImportProgress({ status: 'finished', progress: 1.0 }); 174 this.stopImportTimer(); ··· 192 this.importStatusLabel.innerText = `Import complete ✓`; 193 } else if (info.position) { 194 let date = new Date(info.position).toLocaleString(window.dateLocale, { day: 'numeric', month: 'short', year: 'numeric' }); 195 - this.importStatusLabel.innerText = `Imported data until: ${date}`; 196 } else if (info.status == 'requested') { 197 this.importStatusLabel.innerText = 'Requesting import…'; 198 } else { ··· 206 this.lycanImportSection.style.display = 'block'; 207 this.lycanImportForm.style.display = 'none'; 208 this.importProgress.style.display = 'block'; 209 210 this.importStatusLabel.innerText = message; 211 this.stopImportTimer();
··· 157 this.lycanImportSection.style.display = 'block'; 158 this.lycanImportForm.style.display = 'block'; 159 this.importProgress.style.display = 'none'; 160 + this.searchField.disabled = true; 161 162 this.stopImportTimer(); 163 } else if (info.status == 'in_progress' || info.status == 'scheduled' || info.status == 'requested') { 164 this.lycanImportSection.style.display = 'block'; 165 this.lycanImportForm.style.display = 'none'; 166 this.importProgress.style.display = 'block'; 167 + this.searchField.disabled = true; 168 169 this.showImportProgress(info); 170 this.startImportTimer(); 171 } else if (info.status == 'finished') { 172 this.lycanImportForm.style.display = 'none'; 173 this.importProgress.style.display = 'block'; 174 + this.searchField.disabled = false; 175 176 this.showImportProgress({ status: 'finished', progress: 1.0 }); 177 this.stopImportTimer(); ··· 195 this.importStatusLabel.innerText = `Import complete ✓`; 196 } else if (info.position) { 197 let date = new Date(info.position).toLocaleString(window.dateLocale, { day: 'numeric', month: 'short', year: 'numeric' }); 198 + this.importStatusLabel.innerText = `Downloaded data until: ${date}`; 199 } else if (info.status == 'requested') { 200 this.importStatusLabel.innerText = 'Requesting import…'; 201 } else { ··· 209 this.lycanImportSection.style.display = 'block'; 210 this.lycanImportForm.style.display = 'none'; 211 this.importProgress.style.display = 'block'; 212 + this.searchField.disabled = true; 213 214 this.importStatusLabel.innerText = message; 215 this.stopImportTimer();