summaryrefslogtreecommitdiff
path: root/tt-rss.js
diff options
context:
space:
mode:
Diffstat (limited to 'tt-rss.js')
-rw-r--r--tt-rss.js57
1 files changed, 55 insertions, 2 deletions
diff --git a/tt-rss.js b/tt-rss.js
index 17e33bf85..6048de057 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -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);
+ }
+}
+