rework git update checking to be initiated by frontend, outside of runtime info output

This commit is contained in:
Andrew Dolgov 2018-12-16 19:05:37 +03:00
parent c3b8b6a2a1
commit 957c44d177
4 changed files with 46 additions and 40 deletions

View File

@ -324,7 +324,7 @@ class RPC extends Handler_Protected {
if ($reply['error']['code'] == 0) { if ($reply['error']['code'] == 0) {
$reply['init-params'] = make_init_params(); $reply['init-params'] = make_init_params();
$reply['runtime-info'] = make_runtime_info(true); $reply['runtime-info'] = make_runtime_info();
} }
print json_encode($reply); print json_encode($reply);
@ -597,4 +597,27 @@ class RPC extends Handler_Protected {
} }
} }
function checkforupdates() {
$rv = [];
if (CHECK_FOR_UPDATES && defined("GIT_VERSION_TIMESTAMP")) {
$content = @fetch_file_contents(["url" => "https://tt-rss.org/version.json"]);
if ($content) {
$content = json_decode($content, true);
if ($content && isset($content["changeset"])) {
if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] &&
GIT_VERSION_HEAD != $content["changeset"]["id"]) {
$rv = $content["changeset"];
}
}
}
}
print json_encode($rv);
}
} }

View File

@ -679,8 +679,6 @@
$_SESSION["user_agent"] = sha1($_SERVER['HTTP_USER_AGENT']); $_SESSION["user_agent"] = sha1($_SERVER['HTTP_USER_AGENT']);
$_SESSION["pwd_hash"] = $row["pwd_hash"]; $_SESSION["pwd_hash"] = $row["pwd_hash"];
$_SESSION["last_version_check"] = time();
initialize_user_prefs($_SESSION["uid"]); initialize_user_prefs($_SESSION["uid"]);
return true; return true;
@ -1068,6 +1066,7 @@
$params[strtolower($param)] = (int) get_pref($param); $params[strtolower($param)] = (int) get_pref($param);
} }
$params["check_for_updates"] = CHECK_FOR_UPDATES;
$params["icons_url"] = ICONS_URL; $params["icons_url"] = ICONS_URL;
$params["cookie_lifetime"] = SESSION_COOKIE_LIFETIME; $params["cookie_lifetime"] = SESSION_COOKIE_LIFETIME;
$params["default_view_mode"] = get_pref("_DEFAULT_VIEW_MODE"); $params["default_view_mode"] = get_pref("_DEFAULT_VIEW_MODE");
@ -1270,27 +1269,7 @@
return array($prefixes, $hotkeys); return array($prefixes, $hotkeys);
} }
function check_for_update() { function make_runtime_info() {
if (defined("GIT_VERSION_TIMESTAMP")) {
$content = @fetch_file_contents(array("url" => "http://tt-rss.org/version.json", "timeout" => 5));
if ($content) {
$content = json_decode($content, true);
if ($content && isset($content["changeset"])) {
if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] &&
GIT_VERSION_HEAD != $content["changeset"]["id"]) {
return $content["changeset"]["id"];
}
}
}
}
return "";
}
function make_runtime_info($disable_update_check = false) {
$data = array(); $data = array();
$pdo = Db::pdo(); $pdo = Db::pdo();
@ -1323,14 +1302,6 @@
} }
} }
if (CHECK_FOR_UPDATES && !$disable_update_check && $_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) {
$update_result = @check_for_update();
$data["update_result"] = $update_result;
$_SESSION["last_version_check"] = time();
}
if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) { if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) {
$data['daemon_is_running'] = (int) file_is_locked("update_daemon.lock"); $data['daemon_is_running'] = (int) file_is_locked("update_daemon.lock");

View File

@ -262,14 +262,6 @@ define(["dojo/_base/declare"], function (declare) {
return; return;
} }
if (k == "update_result") {
if (v) {
Element.show("updates-available");
} else {
Element.hide("updates-available");
}
}
if (k == "recent_log_events") { if (k == "recent_log_events") {
const alert = $$(".log-alert")[0]; const alert = $$(".log-alert")[0];

View File

@ -163,11 +163,31 @@ require(["dojo/_base/kernel",
window.setInterval(() => { Feeds.updateRandom() }, 30 * 1000); window.setInterval(() => { Feeds.updateRandom() }, 30 * 1000);
} }
if (App.getInitParam('check_for_updates')) {
window.setInterval(() => {
App.checkForUpdates();
}, 3600 * 1000);
}
console.log("second stage ok"); console.log("second stage ok");
PluginHost.run(PluginHost.HOOK_INIT_COMPLETE, null); PluginHost.run(PluginHost.HOOK_INIT_COMPLETE, null);
}, },
checkForUpdates: function() {
console.log('checking for updates...');
xhrJson("backend.php", {op: 'rpc', method: 'checkforupdates'})
.then((reply) => {
console.log('update reply', reply);
if (reply.id) {
$("updates-available").show();
} else {
$("updates-available").hide();
}
});
},
updateTitle: function() { updateTitle: function() {
let tmp = "Tiny Tiny RSS"; let tmp = "Tiny Tiny RSS";