diff --git a/app/img/icons/General.png b/app/img/icons/General.png
index 1ccc5887..c655beea 100644
Binary files a/app/img/icons/General.png and b/app/img/icons/General.png differ
diff --git a/app/img/icons/General_2x.png b/app/img/icons/General_2x.png
index b0a50d61..9fe88d8b 100644
Binary files a/app/img/icons/General_2x.png and b/app/img/icons/General_2x.png differ
diff --git a/app/js/lib/mtproto_wrapper.js b/app/js/lib/mtproto_wrapper.js
index 6cb20c08..475d812b 100644
--- a/app/js/lib/mtproto_wrapper.js
+++ b/app/js/lib/mtproto_wrapper.js
@@ -805,9 +805,9 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto'])
// console.log(dT(), 'check instance', newInstance, curInstance, idleInstance)
if (!idle ||
- !curInstance ||
- curInstance.id == instanceID ||
- curInstance.time < time - 60000) {
+ !curInstance ||
+ curInstance.id == instanceID ||
+ curInstance.time < time - 60000) {
if (idleInstance &&
idleInstance.id == instanceID) {
Storage.remove('xt_idle_instance')
diff --git a/app/js/locales/en-us.json b/app/js/locales/en-us.json
index 58b92feb..5cdc3b43 100644
--- a/app/js/locales/en-us.json
+++ b/app/js/locales/en-us.json
@@ -227,12 +227,13 @@
"confirm_modal_clipboard_file_send": "Are you sure to send file(s) from clipboard?",
"confirm_modal_clipboard_X_files_send": "{'one': 'Are you sure to send file from clipboard?', 'other': 'Are you sure to send {} files from clipboard?'}",
"confirm_modal_message_delete": "Are you sure you want to delete the message?",
- "confirm_modal_X_messages_delete": "{'one': 'Are you sure you want to delete the message?', 'other': 'Are you sure you want to delete {} messages?'}",
+ "confirm_modal_delete_X_messages": "{'one': '{} message', 'other': '{} messages'}",
+ "confirm_modal_delete_messages": "Are you sure you want to delete {messages}?",
"confirm_modal_message_revoke": "Delete for {recipient}",
- "confirm_modal_message_revoke_recipient_group": "everyone",
- "confirm_modal_X_messages_non_configurable_for_everyone": "{'one': 'This will delete it for everyone in this chat.', 'other': 'This will delete them for everyone in this chat.'}",
- "confirm_modal_X_messages_non_configurable_for_user_only": "{'one': 'This will delete it just for you, not for {{ userFirstName }}.', 'other': 'This will delete them just for you, not for {{ userFirstName }}.'}",
- "confirm_modal_X_messages_non_configurable_for_user_only_in_group": "{'one': 'This will delete it just for you, not for other participants of the chat.', 'other': 'This will delete them just for you, not for other participants of the chat.'}",
+ "confirm_modal_message_revoke_recipient_chat": "everyone",
+ "confirm_modal_delete_messages_for_everyone_chat": "This will delete messages for everyone in this chat.",
+ "confirm_modal_delete_messages_for_you_only_pm": "This will delete messages just for you, not for {user}.",
+ "confirm_modal_delete_messages_for_you_only_chat": "This will delete messages just for you, not for other participants of the chat.",
"confirm_modal_photo_delete": "Are you sure you want to delete the photo?",
"confirm_modal_contacts_import": "Telegram will now sync your contacts in order to find your friends.",
"confirm_modal_login_phone_correct": "Is this phone number correct?",
@@ -362,7 +363,7 @@
"message_service_phonecall_incoming": "Incoming Call",
"message_service_phonecall_outgoing": "Outgoing Call",
"message_service_phonecall_missed": "Missed Call",
- "message_service_phonecall_canceled": "Canceled Call",
+ "message_service_phonecall_canceled": "Cancelled Call",
"message_service_phonecall": "Phone call {duration}",
"message_service_scored_game": "{scored} in {message}",
"message_service_unsupported_action": "unsupported action {action}",
@@ -396,7 +397,7 @@
"error_modal_password_success_title": "Success!",
"error_modal_password_disabled_title": "Password deactivated",
"error_modal_media_not_supported_title": "Unsupported media",
- "error_modal_phonecalls_not_supported_title": "Calls are not available",
+ "error_modal_phonecalls_not_supported_title": "Calls are not available yet",
"error_modal_recovery_na_title": "Sorry",
"error_modal_network_description": "Please check your internet connection.",
@@ -414,7 +415,7 @@
"error_modal_username_occupied_description": "Sorry, this username is already taken.",
"error_modal_media_not_supported_description": "Your browser cannot play this media file. Try downloading the file and opening it in a standalone player.",
"error_modal_username_not_found_description": "There is no Telegram account with the username you provided.",
- "error_modal_phonecalls_not_supported_description_md": "Unfortunately calls are not supported in Web App at the moment.\nYou can call {user} via mobile apps or native desktop applications.\n{download-link: Download »}",
+ "error_modal_phonecalls_not_supported_description_md": "Unfortunately calls are not supported in the Web App at the moment.\n\nYou can call {user} using our mobile apps or native desktop applications.\n{download-link: Download »}",
"error_modal_bad_request_description": "One of the params is missing or invalid.",
"error_modal_unauthorized_description": "This action requires authorization access. Please {login-link: log in}.",
diff --git a/app/js/messages_manager.js b/app/js/messages_manager.js
index eb578970..7e7a8518 100644
--- a/app/js/messages_manager.js
+++ b/app/js/messages_manager.js
@@ -975,8 +975,20 @@ angular.module('myApp.services')
var message = messagesStorage[messageID]
if (message._ != 'message' ||
- message.deleted ||
- !message.pFlags.out ||
+ message.deleted) {
+ return false
+ }
+
+ var peerID = getMessagePeer(message)
+ if (peerID < 0 && !AppChatsManager.isChannel(-peerID)) {
+ var chat = AppChatsManager.getChat(-peerID)
+ if (chat.pFlags.creator ||
+ chat.pFlags.admins_enabled && chat.pFlags.admin) {
+ return true
+ }
+ }
+
+ if (!message.pFlags.out ||
message.date < tsNow(true) - 2 * 86400) {
return false
}
diff --git a/app/js/services.js b/app/js/services.js
index c1b1af48..9fb75a92 100755
--- a/app/js/services.js
+++ b/app/js/services.js
@@ -648,8 +648,8 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
switch (action) {
case 'send':
if (chat._ == 'channel' &&
- !chat.pFlags.megagroup &&
- !chat.pFlags.editor) {
+ !chat.pFlags.megagroup &&
+ !chat.pFlags.editor) {
return false
}
break
@@ -660,7 +660,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
if (chat._ == 'channel') {
if (chat.pFlags.megagroup) {
if (!chat.pFlags.editor &&
- !(action == 'invite' && chat.pFlags.democracy)) {
+ !(action == 'invite' && chat.pFlags.democracy)) {
return false
}
} else {
@@ -668,7 +668,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
}
} else {
if (chat.pFlags.admins_enabled &&
- !chat.pFlags.admin) {
+ !chat.pFlags.admin) {
return false
}
}
diff --git a/app/less/app.less b/app/less/app.less
index 42209e46..ae9c7223 100644
--- a/app/less/app.less
+++ b/app/less/app.less
@@ -1411,22 +1411,24 @@ a.im_dialog_selected {
}
.im_dialog_pinned {
- background: red;
display: inline-block;
float: right;
- width: 8px;
- height: 8px;
- border-radius: 5px;
+ width: 14px;
+ height: 14px;
overflow: hidden;
margin: 12px 0 0;
+ .image-2x('../img/icons/General.png', 40px, 948px);
+ background-position: -13px -916px;
+ // background-position: -13px -892px;
+
a.im_dialog:hover &,
a.im_dialog_selected & {
- background: red;
+ background-position: -13px -916px;
}
.active & {
- background-color: red;
+ background-position: -13px -916px;
}
}
diff --git a/app/partials/desktop/confirm_modal.html b/app/partials/desktop/confirm_modal.html
index ebf8217e..828e5be9 100644
--- a/app/partials/desktop/confirm_modal.html
+++ b/app/partials/desktop/confirm_modal.html
@@ -22,22 +22,23 @@
-
-
+
+
+
+
-
+
-
-
-
+
+
+