Nicer error message when indexedDB fails to initialize

This commit is contained in:
Kovid Goyal 2017-05-25 07:02:37 +05:30
parent 802b1ab1e9
commit 16b5bc89df
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 16 additions and 3 deletions

View File

@ -133,7 +133,10 @@ def show_recent():
if not db.initialized: if not db.initialized:
conditional_timeout(container.id, 5, show_recent) conditional_timeout(container.id, 5, show_recent)
return return
db.get_recently_read_books(show_recent_stage2.bind(container.id)) if db.is_ok:
db.get_recently_read_books(show_recent_stage2.bind(container.id))
else:
print(db.initialize_error_msg)
def show_user_details(): def show_user_details():

View File

@ -14,6 +14,7 @@ from book_list.router import back, open_book
from book_list.top_bar import create_top_bar from book_list.top_bar import create_top_bar
from book_list.ui import set_panel_handler from book_list.ui import set_panel_handler
from book_list.views import ALLOWED_MODES, DEFAULT_MODE from book_list.views import ALLOWED_MODES, DEFAULT_MODE
from modals import error_dialog
from dom import clear, ensure_id from dom import clear, ensure_id
from utils import conditional_timeout from utils import conditional_timeout
@ -122,7 +123,11 @@ def show_recent():
if not db.initialized: if not db.initialized:
conditional_timeout(container.id, 5, show_recent) conditional_timeout(container.id, 5, show_recent)
return return
db.get_recently_read_books(show_recent_stage2.bind(container.id), 200) if db.is_ok:
db.get_recently_read_books(show_recent_stage2.bind(container.id), 200)
else:
error_dialog(_('Database not initialized'),
db.initialize_error_msg)
def init(container_id): def init(container_id):

View File

@ -44,6 +44,7 @@ class DB:
def __init__(self, callback, show_read_book_error): def __init__(self, callback, show_read_book_error):
self.initialized = False self.initialized = False
self.is_ok = False
self.initialize_error_msg = None self.initialize_error_msg = None
self.callback = callback self.callback = callback
self.show_read_book_error = show_read_book_error self.show_read_book_error = show_read_book_error
@ -93,6 +94,7 @@ class DB:
self.idb = idb self.idb = idb
self.supports_blobs = supports_blobs self.supports_blobs = supports_blobs
self.initialized = True self.initialized = True
self.is_ok = True
if not supports_blobs: if not supports_blobs:
print('WARNING: browser does not support blob storage, calibre falling back to base64 encoding') print('WARNING: browser does not support blob storage, calibre falling back to base64 encoding')

View File

@ -15,7 +15,7 @@ from book_list.library_data import (
from book_list.ui import show_panel from book_list.ui import show_panel
from book_list.router import update_window_title, home from book_list.router import update_window_title, home
from dom import clear from dom import clear
from modals import create_simple_dialog_markup from modals import create_simple_dialog_markup, error_dialog
from read_book.db import get_db from read_book.db import get_db
from read_book.view import View from read_book.view import View
from utils import debounce, human_readable from utils import debounce, human_readable
@ -151,6 +151,9 @@ class ReadUI:
return ans return ans
def db_initialized(self): def db_initialized(self):
if not self.db.is_ok:
error_dialog(_('Could not initialize database'), self.db.initialize_error_msg)
return
if self.pending_load is not None: if self.pending_load is not None:
pl, self.pending_load = self.pending_load, None pl, self.pending_load = self.pending_load, None
if self.db.initialize_error_msg: if self.db.initialize_error_msg: