diff --git a/src/ts/index.ts b/src/ts/index.ts index 4de3513..f500f18 100644 --- a/src/ts/index.ts +++ b/src/ts/index.ts @@ -103,7 +103,8 @@ function processFragment() { async function saveToDatabase(filename: string, xml: string) { db.entries .put({ filename, backupData: xml }) - .catch(err => displayFatalError('Saving Failed', err)); + .then(_ => toggleLoadPrevious(true)) + .catch(err => console.error('Saving Failed', err)); } function displayBackup(xsltProcessor: XSLTProcessor, filename: string, xmlText: string): boolean { @@ -136,7 +137,29 @@ function displayBackup(xsltProcessor: XSLTProcessor, filename: string, xmlText: } } -function initEvents() { +function toggleLoadPrevious(toggle: boolean) { + ui.loadPreviousButtons.forEach(btn => { + if (toggle) { + btn.classList.remove('disabled'); + } else { + btn.classList.add('disabled'); + } + }); +} + +async function initEvents() { + db.entries.count() + .then(count => { + if (count < 1) { + toggleLoadPrevious(false); + } + }) + .catch(err => { + //Something wrong with db access, disable buttons anyway. + console.error(err); + toggleLoadPrevious(false); + }); + ui.loadPreviousButtons.forEach(button => button.addEventListener('click', async () => { await populateSavedBackups(); })); @@ -190,7 +213,7 @@ async function populateSavedBackups() { } window.addEventListener('DOMContentLoaded', async () => { - initEvents(); + await initEvents(); showLoadingIndicator(false); showApplication(true); }); diff --git a/src/ts/ui.ts b/src/ts/ui.ts index 629da25..49c8674 100644 --- a/src/ts/ui.ts +++ b/src/ts/ui.ts @@ -8,9 +8,9 @@ export const chatDisplay: HTMLElement = document.getElementById('chat-display')! export const fileSelector: HTMLInputElement = document.getElementById('backup-file')! as HTMLInputElement; export const savedBackups: HTMLSelectElement = document.getElementById('saved-backups')! as HTMLSelectElement; export const viewNewButtons = - document.querySelectorAll('#unloaded-view-new-button, #loaded-view-new-button'); + >document.querySelectorAll('#unloaded-view-new-button, #loaded-view-new-button'); export const loadPreviousButtons = - document.querySelectorAll('#unloaded-load-previous-button, #loaded-load-previous-button'); + >document.querySelectorAll('#unloaded-load-previous-button, #loaded-load-previous-button'); export const previousBackupsList: HTMLDivElement = document.getElementById('previous-backups-list')! as HTMLDivElement; export const noFileLoadedControls: HTMLDivElement = document.getElementById('no-file-loaded-controls')! as HTMLDivElement; export const fileLoadedControls: HTMLDivElement = document.getElementById('file-loaded-controls')! as HTMLDivElement;