From 8399674f3a4d79268bc62f90261515636752e8f8 Mon Sep 17 00:00:00 2001 From: Simon Grim Date: Mon, 23 Jan 2017 03:32:34 +0500 Subject: [PATCH] add the button for manual checking for client (twister-html itself) updates --- home.html | 1 + js/interface_common.js | 12 ++- js/interface_localization.js | 117 +++++++++++++++++++++++++ js/mobile_abstract.js | 163 +++++++++++++++++++++++++++++++++++ network.html | 2 +- 5 files changed, 293 insertions(+), 2 deletions(-) diff --git a/home.html b/home.html index 8deaac4..9d7f887 100644 --- a/home.html +++ b/home.html @@ -53,6 +53,7 @@ Options Network config Setup account + Check for client's updates Following users Change user diff --git a/js/interface_common.js b/js/interface_common.js index d425118..4589307 100644 --- a/js/interface_common.js +++ b/js/interface_common.js @@ -16,7 +16,10 @@ var twister = { tmpl: { // templates pointers are stored here root: $('
') // templates should be detached from DOM and attached here; use extractTemplate() }, - modal: {} + modal: {}, + var: { + updatesCheckClient: {} + } }; var window_scrollY = 0; var _watchHashChangeRelaxDontDoIt = window.location.hash === '' ? true : false; @@ -2701,6 +2704,13 @@ function initInterfaceCommon() { $('.uri-shortener').on('mouseup', {route: '#/uri-shortener'}, routeOnClick); + $('.updates-check-client').text(polyglot.t('updates_check_client')) + .on('mouseup', function (event) { + muteEvent(event); + checkUpdatesClient(true); + } + ); + $('.post-area-new textarea') .on('focus', function (event) { diff --git a/js/interface_localization.js b/js/interface_localization.js index f3ee644..5608c75 100644 --- a/js/interface_localization.js +++ b/js/interface_localization.js @@ -45,6 +45,7 @@ if(preferredLanguage == "en"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Cancel", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -191,6 +192,14 @@ if(preferredLanguage == "en"){ "Unfollow": "Unfollow", "Update": "Update", "Auto updating": "Automatic updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Updating status...", // status of block chain "user_not_yet_accepted": "Other peers have not yet accepted this new user.\n" + "Unfortunately it is not possible to save profile\n" + @@ -396,6 +405,7 @@ if(preferredLanguage == "es"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Cancelar", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -542,6 +552,14 @@ if(preferredLanguage == "es"){ "Unfollow": "Dejar de seguir", "Update": "Actualizar", "Auto updating": "Auto updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Actualización del estado ...", // status of block chain "user_not_yet_accepted": "Otros pares no han aceptado este nuevo usuario.\n" + "Por desgracia, no es posible guardar el perfil\n" + @@ -744,6 +762,7 @@ if(preferredLanguage == "uk"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Відміна", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -891,6 +910,14 @@ if(preferredLanguage == "uk"){ "Unfollow": "Відписатись", "Update": "Оновити", "Auto updating": "Автоматичне оновлення", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Оновлення статусу...", // status of block chain "user_not_yet_accepted": "Триває підтвердження нового користувача.\n" + "У цей час не можна редагувати профіль та надсилати повідомлення.\n\n" + @@ -1090,6 +1117,7 @@ if(preferredLanguage == "zh-CN"){ "busted_avowal": "系统检测到此用户试图在这里注入恶意代码", "btn_ok": "Okay", "Cancel": "取消", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -1236,6 +1264,14 @@ if(preferredLanguage == "zh-CN"){ "Unfollow": "取消关注", "Update": "更新", "Auto updating": "自动更新", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "状态更新中...", // status of block chain "user_not_yet_accepted": "其他节点还没有接受这个新用户。\n" + "很抱歉,现在你还不能保存你的个人简介\n" + @@ -1441,6 +1477,7 @@ if(preferredLanguage == "nl"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Annuleren", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -1587,6 +1624,14 @@ if(preferredLanguage == "nl"){ "Unfollow": "Ontvolgen", "Update": "Update", "Auto updating": "Auto updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Status aan het updaten...", // status of block chain "user_not_yet_accepted": "Other peers have not yet accepted this new user.\n" + "Unfortunately it is not possible to save profile\n" + @@ -1789,6 +1834,7 @@ if(preferredLanguage == "it"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Cancella", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -1935,6 +1981,14 @@ if(preferredLanguage == "it"){ "Unfollow": "Smetti di seguire", "Update": "Aggiorna", "Auto updating": "Auto updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Aggiornamento in corso...", // status of block chain "user_not_yet_accepted": "Gli altri nodi non hanno ancora accettato il nuovo utente.\n" + "Al momento non puoi salvare il profilo o spedire messaggi.\n" + @@ -2135,6 +2189,7 @@ if(preferredLanguage == "fr"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Annuler", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -2281,6 +2336,14 @@ if(preferredLanguage == "fr"){ "Unfollow": "Se désabonner", "Update": "Mettre à jour", "Auto updating": "Mise à jour automatique", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Mise à jour du statut...", // status of block chain "user_not_yet_accepted": "Les autres pairs n'ont pas encore accepté ce nouvel utilisateur.\n" + "Malheureusement, il n'est pas possible d'enregistrer le profil\n" + @@ -2484,6 +2547,7 @@ if(preferredLanguage == "ru"){ "busted_avowal": "я пойман на попытке вставить этот подозрительный код здесь", "btn_ok": "Лады́", "Cancel": "Отмена", + 'cant_get_requested_resourse': 'Невозможно получить %{link}\n статус: %{status}.', "clear_cache": "Очистить кэш", "Confirm": "Несомненно", "сonfirm_group_leaving_header": "Подтверждение ухода из группы", @@ -2630,6 +2694,14 @@ if(preferredLanguage == "ru"){ "Unfollow": "Отписаться", "Update": "Обновить", "Auto updating": "Автоматическое обновление", + 'updates_are_available': 'Доступны обновления', + 'updates_not_available': 'Обновления не доступны', + 'updates_check_client': 'Проверить обновления клиента', + 'updates_repo_overview': 'Мы сейчас на ветке %{branch} в %{repo} на коммите\n %{commit} от %{date},\n' + + 'а вот HEAD её источника уже на коммите\n %{commitUpstream} от %{dateUpstream}.', + 'updates_checkout_diff': 'Смотри [сравнение на GitHub](%{link}), чтобы узнать каковы изменения.', + 'updates_checkout_diff_nfmt': 'Смотри сравнение на GitHub, чтобы узнать каковы изменения:\n %{link}', + 'updates_upstream_isnt_changed': 'Соответствующая ветка в исходном репозитории выглядит неизменённой.', "Updating status...": "Обновление информации...", // status of block chain "user_not_yet_accepted": "Другие участники сети еще не получили информацию о новом пользователе.\n" + "К сожалению, сейчас вы не можете редактировать ваш профиль\n" + @@ -2836,6 +2908,7 @@ if(preferredLanguage == "de"){ "busted_avowal": "Ich bin ertappt, habe versucht, hier Schadcode einzugeben!", "btn_ok": "Okay", "Cancel": "Abbrechen", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -2983,6 +3056,14 @@ if(preferredLanguage == "de"){ "Unfollow": "Nicht mehr folgen", "Update": "Aktualisieren", "Auto updating": "Automatische Aktualisierung", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Status wird aktualisiert...", // status of block chain "user_not_yet_accepted": "Andere Peers haben diesen Benutzter noch nicht akzeptiert.\n" + "Leider ist es nicht möglich, das Profil zu speichern\n" + @@ -3186,6 +3267,7 @@ if(preferredLanguage == "ja"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "キャンセル", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -3332,6 +3414,14 @@ if(preferredLanguage == "ja"){ "Unfollow": "解除", "Update": "アップデート", "Auto updating": "Auto updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "ブロックチェーンを更新中…", // status of block chain "user_not_yet_accepted": "この新ユーザーが他のピアーにまだ認証されていない。\n" + "なので、プロファイルの保存やメッセージの投稿は現在不可能です。\n" + @@ -3532,6 +3622,7 @@ if(preferredLanguage == "pt-BR"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Cancelar", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -3679,6 +3770,14 @@ if(preferredLanguage == "pt-BR"){ "Unfollow": "Deixar de seguir", "Update": "Atualizar", "Auto updating": "Auto updating", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Atualizando estado da Cadeia de Blocos...", // status of block chain "URI_shortener_caption": "URI Shortener", "user_not_yet_accepted": "Outros nós ainda não aceitaram este novo usuário.\n" + @@ -3882,6 +3981,7 @@ if(preferredLanguage == "tr"){ "busted_avowal": "Şüpheli bir şeyler iliştirmeye çalışırken enselendim.", "btn_ok": "Tamam", "Cancel": "İptal", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Geçmişi temizle", "Confirm": "Onayla", "сonfirm_group_leaving_header": "Gruptan ayrılmayı onayla", @@ -4028,6 +4128,14 @@ if(preferredLanguage == "tr"){ "Unfollow": "Takibi bırak", "Update": "Güncelle", "Auto updating": "Otomatik güncelleme", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Durum güncelleniyor...", // status of block chain "user_not_yet_accepted": "Diğer eşler bu yeni kullanıcıyı henüz kabul etmediler.\n" + "Malesef profili kaydetmek ya da bu durumda\n" + @@ -4229,6 +4337,7 @@ if(preferredLanguage == "cs"){ "busted_avowal": "I\'m busted trying inject this suspicious stuff here", "btn_ok": "Okay", "Cancel": "Zrušit", + 'cant_get_requested_resourse': 'Can\'t get resourse at %{link}\n status: %{status}.', "clear_cache": "Clear cache", "Confirm": "Confirm", "сonfirm_group_leaving_header": "Confirm group leaving", @@ -4376,6 +4485,14 @@ if(preferredLanguage == "cs"){ "Unfollow": "Přestat sledovat", "Update": "Aktualizovat", "Auto updating": "Automatická aktualizace", + 'updates_are_available': 'Updates are available', + 'updates_not_available': 'No updates are available', + 'updates_check_client': 'Check for client\'s updates', + 'updates_repo_overview': 'Currently we are on the branch %{branch} of %{repo} at the commit\n %{commit} of %{date}\n' + + 'but HEAD of its source is already at the commit\n %{commitUpstream} of %{dateUpstream}.', + 'updates_checkout_diff': 'Checkout [the diff on GitHub](%{link}) to learn what is changed.', + 'updates_checkout_diff_nfmt': 'Checkout the diff on GitHub to learn what is changed:\n %{link}', + 'updates_upstream_isnt_changed': 'A corresponding branch of the source repository seems to have not changed.', "Updating status...": "Aktualizuji stav...", // status of block chain "user_not_yet_accepted": "Ostatní uzly ještě nepřijaly tohoto nového uživatele.\n" + "Proto zatím není možné uložit profil nebo vkládat příspěvky.\n" + diff --git a/js/mobile_abstract.js b/js/mobile_abstract.js index a2406ea..ae5456c 100644 --- a/js/mobile_abstract.js +++ b/js/mobile_abstract.js @@ -592,3 +592,166 @@ function filterLang(string) { } } +function checkUpdatesClient(alertIfNoUpdates) { + function handleGetFail(jqXHR) { + twister.var.updatesCheckClient.isOngoing = false; + + console.warn(polyglot.t('cant_get_requested_resourse', {link: this.url, status: jqXHR.status + ', \'' + jqXHR.statusText + '\''})); + + if (alertIfNoUpdates) { + if ($.hasOwnProperty('mobile')) + alert(polyglot.t('updates_not_available') + '.\n\n' + + polyglot.t('cant_get_requested_resourse', {link: this.url, status: jqXHR.status + ', \'' + jqXHR.statusText + '\''}) + ); + else + alertPopup({ + txtTitle: polyglot.t('updates_not_available'), + txtMessage: polyglot.t('cant_get_requested_resourse', {link: this.url, status: jqXHR.status + ', ~' + jqXHR.statusText + '~'}) + }); + } + } + + if (twister.var.updatesCheckClient.isOngoing) + return; + + twister.var.updatesCheckClient.isOngoing = true; + + $.get('.git/HEAD', function (ret) { + if (ret.slice(0, 16) !== 'ref: refs/heads/') { + twister.var.updatesCheckClient.isOngoing = false; + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nCan\'t parse local HEAD: unknown syntax, FUBAR!'); + + return; + } + + var branch = ret.slice(16).trim(); + + $.get('.git/refs/heads/' + branch, function (ret) { + var commit = ret.trim(); + if (!commit) { + twister.var.updatesCheckClient.isOngoing = false; + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nCan\'t parse local HEAD: \'' + '.git/refs/heads/' + branch + '\' is empty, FUBAR!'); + + return; + } + + var repo = 'twister-html'; // TODO source repo selection in options + var repoOwner = 'miguelfreitas'; + + // TODO notification if local branch was changed ('r u wanna reload the page?') + /*if (!twister.var.updatesCheckClient.formerBranch || !twister.var.updatesCheckClient.formerCommit) { + twister.var.updatesCheckClient.formerBranch = branch; + twister.var.updatesCheckClient.formerCommit = commit; + }*/ + + console.log('currently we are on the branch \'' + branch + '\' of ' + repo + ' at the commit ' + commit); + + $.get('https://api.github.com/repos/' + repoOwner + '/' + repo + '/branches', function (ret) { + for (var i = 0; i < ret.length; i++) { + if (ret[i].name === branch) { + if (ret[i].commit.sha === commit) { + twister.var.updatesCheckClient.isOngoing = false; + + console.log(polyglot.t('updates_upstream_isnt_changed')); + + if (alertIfNoUpdates) { + if ($.hasOwnProperty('mobile')) + alert(polyglot.t('updates_not_available') + '.\n\n' + + polyglot.t('updates_upstream_isnt_changed') + ); + else + alertPopup({ + txtTitle: polyglot.t('updates_not_available'), + txtMessage: polyglot.t('updates_upstream_isnt_changed') + }); + } + } else { + console.log('source branch has a different HEAD: ' + ret[i].commit.sha); + + var commitUpstream = ret[i].commit.sha; + + $.get('https://api.github.com/repos/' + repoOwner + '/' + repo + '/git/commits/' + commit, function (ret) { + if (ret.sha !== commit) { // the response is wrong if so, should be 404 instead + twister.var.updatesCheckClient.isOngoing = false; + console.log('upstream tree doesn\'t have our most recent commit,\nlooks like we are in the process of development locally.'); + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nUpstream tree doesn\'t have our most recent commit,\nlooks like we are in the process of development locally.'); + + return; + } + + commit = ret; + + $.get('https://api.github.com/repos/' + repoOwner + '/' + repo + '/git/commits/' + commitUpstream, function (ret) { + twister.var.updatesCheckClient.isOngoing = false; + + if (ret.sha !== commitUpstream) { // the response is wrong if so, should be 404 instead + console.warn('upstream tree doesn\'t have the commit which is named most recent in the list of branches, FUBAR!'); + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nUpstream tree doesn\'t have the commit which is named most recent in the list of branches, FUBAR!'); + + return; + } + + commitUpstream = ret; + var linkGitHubDiff = 'https://github.com/' + repoOwner + '/' + repo + '/compare/' + commit.sha + '...' + repoOwner + ':' + branch; + + console.log(polyglot.t('updates_checkout_diff_nfmt', {link: linkGitHubDiff})); + + if ($.hasOwnProperty('mobile')) + alert(polyglot.t('updates_are_available') + '.\n\n' + + polyglot.t('updates_repo_overview', { + branch: '\'' + branch + '\'', + repo: repo, + commit: commit.sha, + date: new Date(commit.author.date).toString().replace(/ GMT.*/g, ''), + commitUpstream: commitUpstream.sha, + dateUpstream: new Date(commitUpstream.author.date).toString().replace(/ GMT.*/g, '') + }) + '\n\n' + + polyglot.t('updates_checkout_diff_nfmt', {link: linkGitHubDiff}) + ); + else + alertPopup({ + txtTitle: polyglot.t('updates_are_available'), + txtMessage: polyglot.t('updates_repo_overview', { + branch: '~' + branch + '~', + repo: repo, + commit: '*' + commit.sha + '*', + date: new Date(commit.author.date).toString().replace(/ GMT.*/g, ''), + commitUpstream: '*' + commitUpstream.sha + '*', + dateUpstream: new Date(commitUpstream.author.date).toString().replace(/ GMT.*/g, '') + }) + '\n\n' + + polyglot.t('updates_checkout_diff', {link: linkGitHubDiff}) + }); + }).fail(function (jqXHR) { + if (jqXHR.status === 404) { + twister.var.updatesCheckClient.isOngoing = false; + console.warn('upstream tree doesn\'t have the commit which is named most recent in the list of branches, FUBAR!'); + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nUpstream tree doesn\'t have the commit which is named most recent in the list of branches, FUBAR!'); + } else + handleGetFail(jqXHR); + }); + }).fail(function (jqXHR) { + if (jqXHR.status === 404) { + twister.var.updatesCheckClient.isOngoing = false; + console.log('upstream tree doesn\'t have our most recent commit,\nlooks like we are in the process of development locally.'); + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nUpstream tree doesn\'t have our most recent commit,\nlooks like we are in the process of development locally.'); + } else + handleGetFail(jqXHR); + }); + } + return; + } + } + twister.var.updatesCheckClient.isOngoing = false; + console.log('upstream tree doesn\'t have our branch,\nlooks like we are in the process of development locally.'); + if (alertIfNoUpdates) + alert(polyglot.t('updates_not_available') + '.\n\nUpstream tree doesn\'t have our branch,\nlooks like we are in the process of development locally.'); + }).fail(handleGetFail); + }).fail(handleGetFail); + }).fail(handleGetFail); +} diff --git a/network.html b/network.html index dfe79f2..d76b91b 100644 --- a/network.html +++ b/network.html @@ -45,7 +45,7 @@
Options Setup account - Network config + Check for client's updates Change user