diff options
Diffstat (limited to 'tt-rss.js')
| -rw-r--r-- | tt-rss.js | 57 |
1 files changed, 55 insertions, 2 deletions
@@ -19,6 +19,10 @@ var ver_offset = 0; var hor_offset = 0; var feeds_sort_by_unread = false; var feedlist_sortable_enabled = false; +var offline_mode = false; +var store = false; +var localServer = false; +var db = false; function activeFeedIsCat() { return _active_feed_is_cat; @@ -131,7 +135,11 @@ function backend_sanity_check_callback(transport) { } if (!transport.responseXML) { - fatalError(3, "Sanity check: Received reply is not XML", transport.responseText); + if (!google.gears) { + fatalError(3, "Sanity check: Received reply is not XML", transport.responseText); + } else { + init_offline(); + } return; } @@ -369,6 +377,8 @@ function init() { if (arguments.callee.done) return; arguments.callee.done = true; + init_gears(); + disableContainerChildren("headlinesToolbar", true); Form.disable("main_toolbar_form"); @@ -500,7 +510,14 @@ function init_second_stage() { daemon_refresh_only = getInitParam("daemon_refresh_only") == 1; feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1; - setTimeout('updateFeedList(false, false)', 50); + var fl = cache_find_param("FEEDLIST", getInitParam("num_feeds")); + + if (fl) { + render_feedlist(fl); + request_counters(); + } else { + setTimeout('updateFeedList(false, false)', 50); + } debug("second stage ok"); @@ -720,6 +737,10 @@ function parse_runtime_info(elem) { debug("RI: " + k + " => " + v); + if (k == "num_feeds") { + init_params[k] = v; + } + if (k == "new_version_available") { var icon = document.getElementById("newVersionIcon"); if (icon) { @@ -1451,3 +1472,35 @@ function feedBrowserSubscribe() { } } +function init_gears() { + try { + + if (google.gears) { + localServer = google.gears.factory.create("beta.localserver"); + store = localServer.createManagedStore("tt-rss"); + db = google.gears.factory.create('beta.database'); + db.open('tt-rss'); + + db.execute("CREATE TABLE IF NOT EXISTS cache (id text, article text, param text, added text)"); + } + + cache_expire(); + + } catch (e) { + exception_error("init_gears", e); + } +} + +function init_offline() { + try { + offline_mode = true; + + render_feedlist(cache_find("FEEDLIST")); + document.getElementById("quickMenuChooser").disabled = true; + + remove_splash(); + } catch (e) { + exception_error("init_offline", e); + } +} + |