From 9dde343d987760874ac525f9b77ba9655b0f0360 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Wed, 21 Oct 2015 15:59:34 +0200 Subject: [PATCH] Added new page for multiple tabs --- app/img/Manytabs.png | Bin 0 -> 46161 bytes app/js/lib/mtproto_wrapper.js | 72 ++++++++++++++++++++--------- app/js/locales/en-us.json | 7 ++- app/js/services.js | 33 +++++++++---- app/less/app.less | 24 ++++++++++ app/partials/desktop/inactive.html | 13 ++++++ 6 files changed, 118 insertions(+), 31 deletions(-) create mode 100644 app/img/Manytabs.png create mode 100644 app/partials/desktop/inactive.html diff --git a/app/img/Manytabs.png b/app/img/Manytabs.png new file mode 100644 index 0000000000000000000000000000000000000000..4aed53101765a6e488be56d9ba3e44833195448d GIT binary patch literal 46161 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 z

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 OBO{?GUi;1X`~Lw=ZHKx5 literal 0 HcmV?d00001 diff --git a/app/js/lib/mtproto_wrapper.js b/app/js/lib/mtproto_wrapper.js index 7b7385f7..a02fa672 100644 --- a/app/js/lib/mtproto_wrapper.js +++ b/app/js/lib/mtproto_wrapper.js @@ -698,13 +698,13 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) }; }) -.service('MtpSingleInstanceService', function (_, $rootScope, $interval, Storage, AppRuntimeManager, IdleManager, ErrorService, MtpNetworkerFactory) { +.service('MtpSingleInstanceService', function (_, $rootScope, $compile, $timeout, $interval, $modalStack, Storage, AppRuntimeManager, IdleManager, ErrorService, MtpNetworkerFactory) { var instanceID = nextRandomInt(0xFFFFFFFF); var started = false; var masterInstance = false; - var startTime = tsNow(); - var errorShowTime = 0; + var deactivatePromise = false; + var deactivated = false; function start() { if (!started && !Config.Navigator.mobile && !Config.Modes.packed) { @@ -712,7 +712,6 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) IdleManager.start(); - startTime = tsNow(); $rootScope.$watch('idle.isIDLE', checkInstance); $interval(checkInstance, 5000); checkInstance(); @@ -727,7 +726,38 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) Storage.remove(masterInstance ? 'xt_instance' : 'xt_idle_instance'); } + function deactivateInstance () { + if (masterInstance || deactivated) { + return false; + } + console.log(dT(), 'deactivate'); + deactivatePromise = false; + deactivated = true; + clearInstance(); + $modalStack.dismissAll(); + + document.title = _('inactive_tab_title_raw'); + + var inactivePageCompiled = $compile(''); + + var scope = $rootScope.$new(true); + scope.close = function () { + AppRuntimeManager.close(); + }; + scope.reload = function () { + AppRuntimeManager.reload(); + }; + inactivePageCompiled(scope, function (clonedElement) { + $('.page_wrap').hide(); + $(clonedElement).appendTo($('body')); + }); + $rootScope.idle.deactivated = true; + } + function checkInstance() { + if (deactivated) { + return false; + } var time = tsNow(); var idle = $rootScope.idle && $rootScope.idle.isIDLE; var newInstance = {id: instanceID, idle: idle, time: time}; @@ -736,38 +766,36 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) var curInstance = result[0], idleInstance = result[1]; - if (!curInstance || - curInstance.time < time - 60000 || + // console.log(dT(), 'check instance', newInstance, curInstance, idleInstance); + if (!idle || + !curInstance || curInstance.id == instanceID || - curInstance.idle || - !idle) { + curInstance.time < time - 60000) { - if (idleInstance) { - if (idleInstance.id == instanceID) { - Storage.remove('xt_idle_instance'); - } - else if (idleInstance.time > time - 10000 && - time > errorShowTime) { - - ErrorService.alert( - _('error_modal_warning_title_raw'), - _('error_modal_multiple_open_tabs_raw') - ); - errorShowTime += tsNow() + 60000; - } + if (idleInstance && + idleInstance.id == instanceID) { + Storage.remove('xt_idle_instance'); } Storage.set({xt_instance: newInstance}); if (!masterInstance) { MtpNetworkerFactory.startAll(); + console.warn(dT(), 'now master instance', newInstance); } masterInstance = true; + if (deactivatePromise) { + $timeout.cancel(deactivatePromise); + deactivatePromise = false; + } } else { Storage.set({xt_idle_instance: newInstance}); if (masterInstance) { MtpNetworkerFactory.stopAll(); + console.warn(dT(), 'now idle instance', newInstance); + if (!deactivatePromise) { + deactivatePromise = $timeout(deactivateInstance, 30000); + } } masterInstance = false; - } }); } diff --git a/app/js/locales/en-us.json b/app/js/locales/en-us.json index ceefa955..b0a7dec7 100644 --- a/app/js/locales/en-us.json +++ b/app/js/locales/en-us.json @@ -360,7 +360,6 @@ "error_modal_flood_description": "You are performing too many actions. Please try again later.", "error_modal_internal_description": "Internal server error occured. Please try again later.", "error_modal_tech_details": "Technical details here", - "error_modal_multiple_open_tabs": "Please close other Telegram app tabs.", "error_modal_recovery_na_description": "Since you haven't provided a recovery e-mail when setting up your password, your remaining options are either to remember your password or to reset your account.", "error_modal_password_success_descripion": "Your password for Two-Step Verification is now active.", "error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.", @@ -531,6 +530,12 @@ "phonebook_modal_submit_active": "Importing", "phonebook_modal_submit": "Import contacts", + "inactive_tab_title": "Telegram: Zzz...", + "inactive_title": "Such error, many tabs", + "inactive_description_md": "Telegram supports only one active tab with the app.\nPlease reload this page to continue using this tab or close it", + "inactive_reload_btn": "Reload App", + + "country_select_modal_country_ab": "Abkhazia", "country_select_modal_country_af": "Afghanistan", "country_select_modal_country_ax": "Ă…land Islands", diff --git a/app/js/services.js b/app/js/services.js index a8a82c8f..6857ab50 100755 --- a/app/js/services.js +++ b/app/js/services.js @@ -2908,13 +2908,22 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) var titleBackup = document.title, titleChanged = false, - titleCnt = 0, titlePromise; var prevFavicon; + var stopped = false; var settings = {}; + $rootScope.$watch('idle.deactivated', function (newVal) { + if (newVal) { + stop(); + } + }); + $rootScope.$watch('idle.isIDLE', function (newVal) { + if (stopped) { + return; + } if (!newVal) { notificationsClear(); } @@ -2928,12 +2937,10 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) titleBackup = document.title; titlePromise = $interval(function () { - if (!notificationsCount || ((titleCnt++) % 2)) { - if (titleChanged) { - titleChanged = false; - document.title = titleBackup; - setFavicon(); - } + if (titleChanged || !notificationsCount) { + titleChanged = false; + document.title = titleBackup; + setFavicon(); } else { titleChanged = true; document.title = langNotificationsPluralize(notificationsCount); @@ -3028,7 +3035,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) faviconEl.parentNode.replaceChild(link, faviconEl); faviconEl = link; - prevFavicon = href + prevFavicon = href; } function savePeerSettings (peerID, settings) { @@ -3080,12 +3087,22 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) } catch (e) {} } + function stop () { + notificationsClear(); + $interval.cancel(titlePromise); + setFavicon(); + stopped = true; + } + function requestPermission() { Notification.requestPermission(); $($window).off('click', requestPermission); } function notify (data) { + if (stopped) { + return; + } // console.log('notify', $rootScope.idle.isIDLE, notificationsUiSupport); // FFOS Notification blob src bug workaround diff --git a/app/less/app.less b/app/less/app.less index fec99eb6..5f516392 100644 --- a/app/less/app.less +++ b/app/less/app.less @@ -4118,6 +4118,30 @@ a.countries_modal_search_clear { } } +.inactive_page_content { + max-width: 400px; + margin: 0 auto; + text-align: center; +} +.inactive_image { + display: block; + background: url(../img/Manytabs.png) no-repeat 0 0; + width: 341px; + height: 262px; + margin: 0 auto; +} +.inactive_title { + font-size: 18px; + color: #444444; +} +.inactive_description { + color: #666666; + font-size: 15px; + line-height: 150%; +} +.inactive_actions { + margin-top: 15px; +} @media print { diff --git a/app/partials/desktop/inactive.html b/app/partials/desktop/inactive.html new file mode 100644 index 00000000..ba52114a --- /dev/null +++ b/app/partials/desktop/inactive.html @@ -0,0 +1,13 @@ +

+
+
+
+ +

+
+
+ +
+
+
+
\ No newline at end of file