diff --git a/app/js/directives.js b/app/js/directives.js index e230d7e2..360930ab 100755 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -3217,61 +3217,85 @@ angular.module('myApp.directives', ['myApp.filters']) }; }) - .directive('myCopyElement', function (toaster, _) { + .directive('myCopyField', function (toaster, _) { return { scope: { - selectEvent: '=myCopyElement' + selectEvent: '=myCopyField' }, link: link }; function link($scope, element, attrs) { - if (element[0].tagName == 'INPUT') { - element.attr('readonly', 'true'); - element[0].readonly = true; - element.on('click', function () { - this.select(); - }); + element.attr('readonly', 'true'); + element[0].readonly = true; + element.on('click', function () { + this.select(); + }); - if ($scope.selectEvent) { - $scope.$on($scope.selectEvent, function () { - setTimeout(function () { - element[0].focus(); - element[0].select(); - }, 100); - }); - } - } else { - var clipboard = new Clipboard(element[0]); - - clipboard.on('success', function(e) { - toaster.pop({ - type: 'info', - timeout: 2000, - body: _('clipboard_copied'), - bodyOutputType: 'trustedHtml', - showCloseButton: false - }); - e.clearSelection(); + if ($scope.selectEvent) { + $scope.$on($scope.selectEvent, function () { + setTimeout(function () { + element[0].focus(); + element[0].select(); + }, 100); }); + } + }; - clipboard.on('error', function(e) { - var langKey = Config.Navigator.osX ? 'clipboard_press_cmd_c' : 'clipboard_press_ctrl_c'; - toaster.pop({ - type: 'info', - timeout: 4000, - body: _(langKey), - bodyOutputType: 'trustedHtml', - showCloseButton: false - }); + }) + + .directive('myCopyLink', function ($compile, $timeout, _) { + + return { + restrict: 'A', + replace: false, + terminal: true, + priority: 1000, + link: link + }; + + function link ($scope, element, attrs) { + element.attr('tooltip', '{{ttLabel}}'); + element.removeAttr('my-copy-link'); + element.removeAttr('data-my-copy-link'); + + var resetPromise = false; + var resetTooltip = function () { + $timeout.cancel(resetPromise); + resetPromise = false; + $scope.ttLabel = _('conversations_modal_share_url_copy_raw'); + }; + + resetTooltip(); + + $compile(element)($scope); + + var clipboard = new Clipboard(element[0]); + + clipboard.on('success', function(e) { + $timeout.cancel(resetPromise); + $scope.$apply(function () { + $scope.ttLabel = _('clipboard_copied_raw'); }); + resetPromise = $timeout(resetTooltip, 2000); + }); - $scope.$on('$destroy', function () { - clipboard.destroy(); + clipboard.on('error', function(e) { + $timeout.cancel(resetPromise); + var langKey = Config.Navigator.osX + ? 'clipboard_press_cmd_c' + : 'clipboard_press_ctrl_c'; + $scope.$apply(function () { + $scope.ttLabel = _(langKey + '_raw'); }); - } - }; + resetPromise = $timeout(resetTooltip, 5000); + }); + + $scope.$on('$destroy', function () { + clipboard.destroy(); + }); + } }) diff --git a/app/js/locales/en-us.json b/app/js/locales/en-us.json index 20de8ec7..3d93176e 100644 --- a/app/js/locales/en-us.json +++ b/app/js/locales/en-us.json @@ -208,7 +208,7 @@ "clipboard_copied": "Copied!", "clipboard_press_ctrl_c": "Press Ctrl+C to copy", - "clipboard_press_cmd_c": "Press ⌘ + C to copy", + "clipboard_press_cmd_c": "Press ⌘+C to copy", "confirm_modal_logout": "Are you sure you want to log out?", "confirm_modal_update_reload": "A new version of Telegram Web has been downloaded. Launch it?", @@ -275,6 +275,7 @@ "conversations_modal_select_recipients": "Select recipients", "conversations_modal_recipients": "Recipients:", "conversations_modal_share_url_loading": "Loading{dots}", + "conversations_modal_share_url_copy": "Click to copy share link", "contact_edit_modal_first_name": "First name", "contact_edit_modal_last_name": "Last name", diff --git a/app/js/services.js b/app/js/services.js index 9e2fd4fc..a38cc00d 100755 --- a/app/js/services.js +++ b/app/js/services.js @@ -4449,3 +4449,54 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) shareUrl: shareUrl }; }) + + +.service('DraftsManager', function (qSync, Storage) { + + var localDrafts = {}; + + return { + getDraft: getDraft, + saveDraft: saveDraft, + changeDraft: changeDraft, + syncDraft: syncDraft + }; + + function getDraft (peerID, options) { + return Storage.get('draft' + peerID).then(function (draft) { + if (typeof draft === 'string' && draft.length > 0) { + draft = { + text: draft + }; + } + if (draft === false || draft == null) { + draft = ''; + } + + }); + } + + function saveDraft(peerID, draftData) { + localDrafts[peerID] = draftData; + } + + function changeDraft(peerID, message, options) { + options = options || {}; + if (typeof message === 'string' || options.replyToMsgID) { + var localDraft = { + text: message, + replyToMsgID: replyToMsgID + }; + var backupDraftObj = {}; + backupDraftObj['draft' + peerID] = localDraft; + Storage.set(backupDraftObj); + } else { + Storage.remove('draft' + peerID); + } + } + + function syncDraft(peerID) { + + } + +}) \ No newline at end of file diff --git a/app/partials/desktop/chat_invite_link_modal.html b/app/partials/desktop/chat_invite_link_modal.html index 3ebd6374..3d70634a 100644 --- a/app/partials/desktop/chat_invite_link_modal.html +++ b/app/partials/desktop/chat_invite_link_modal.html @@ -10,14 +10,14 @@