Supported message report
This commit is contained in:
parent
54013d0b01
commit
63bc61bd32
@ -511,6 +511,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
canReply: false,
|
canReply: false,
|
||||||
canDelete: false,
|
canDelete: false,
|
||||||
canEdit: false,
|
canEdit: false,
|
||||||
|
canReport: false,
|
||||||
actions: function () {
|
actions: function () {
|
||||||
return $scope.historyState.selectActions ? 'selected' : ($scope.historyState.botActions ? 'bot' : ($scope.historyState.channelActions ? 'channel' : false))
|
return $scope.historyState.selectActions ? 'selected' : ($scope.historyState.botActions ? 'bot' : ($scope.historyState.channelActions ? 'channel' : false))
|
||||||
},
|
},
|
||||||
@ -1246,6 +1247,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
$scope.selectedEdit = selectedEdit
|
$scope.selectedEdit = selectedEdit
|
||||||
$scope.selectedCancel = selectedCancel
|
$scope.selectedCancel = selectedCancel
|
||||||
$scope.selectedFlush = selectedFlush
|
$scope.selectedFlush = selectedFlush
|
||||||
|
$scope.selectedReport = selectedReport
|
||||||
$scope.selectInlineBot = selectInlineBot
|
$scope.selectInlineBot = selectInlineBot
|
||||||
|
|
||||||
$scope.startBot = startBot
|
$scope.startBot = startBot
|
||||||
@ -1755,6 +1757,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
|
|
||||||
if (Config.Mobile) {
|
if (Config.Mobile) {
|
||||||
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
||||||
|
$scope.historyState.canReport = AppMessagesManager.canReportMessage(messageID)
|
||||||
|
|
||||||
$modal.open({
|
$modal.open({
|
||||||
templateUrl: templateUrl('message_actions_modal'),
|
templateUrl: templateUrl('message_actions_modal'),
|
||||||
@ -1778,6 +1781,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
selectedForward(messageID)
|
selectedForward(messageID)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case 'report':
|
||||||
|
selectedReport(messageID)
|
||||||
|
break
|
||||||
|
|
||||||
case 'select':
|
case 'select':
|
||||||
$scope.historyState.selectActions = 'selected'
|
$scope.historyState.selectActions = 'selected'
|
||||||
$scope.$broadcast('ui_panel_update')
|
$scope.$broadcast('ui_panel_update')
|
||||||
@ -1837,6 +1844,15 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
if ($scope.selectedCount == 1) {
|
if ($scope.selectedCount == 1) {
|
||||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||||
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
||||||
|
$scope.historyState.canReport = AppMessagesManager.canReportMessage(messageID)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
$scope.historyState.canEdit = false
|
||||||
|
$scope.historyState.canReport = false
|
||||||
|
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||||
|
if (AppMessagesManager.canReportMessage(messageID)) {
|
||||||
|
$scope.historyState.canReport = true
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
$scope.$broadcast('messages_select')
|
$scope.$broadcast('messages_select')
|
||||||
@ -1979,6 +1995,38 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectedReport (selectedMessageID) {
|
||||||
|
var selectedMessageIDs = []
|
||||||
|
if (selectedMessageID) {
|
||||||
|
selectedMessageIDs.push(selectedMessageID)
|
||||||
|
} else if ($scope.selectedCount > 0) {
|
||||||
|
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||||
|
selectedMessageIDs.push(messageID)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (selectedMessageIDs.length) {
|
||||||
|
$modal.open({
|
||||||
|
templateUrl: templateUrl('report_msgs_modal'),
|
||||||
|
controller: 'ReportMessagesModalController',
|
||||||
|
windowClass: 'md_simple_modal_window mobile_modal',
|
||||||
|
scope: $scope.$new()
|
||||||
|
}).result.then(function (inputReason) {
|
||||||
|
selectedCancel()
|
||||||
|
AppMessagesManager.reportMessages(selectedMessageIDs, inputReason).then(function () {
|
||||||
|
var toastData = toaster.pop({
|
||||||
|
type: 'info',
|
||||||
|
body: _('confirm_modal_report_success'),
|
||||||
|
bodyOutputType: 'trustedHtml',
|
||||||
|
clickHandler: function () {
|
||||||
|
toaster.clear(toastData)
|
||||||
|
},
|
||||||
|
showCloseButton: false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function selectedReply (selectedMessageID) {
|
function selectedReply (selectedMessageID) {
|
||||||
if (!selectedMessageID && $scope.selectedCount == 1) {
|
if (!selectedMessageID && $scope.selectedCount == 1) {
|
||||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||||
@ -4503,6 +4551,18 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.controller('ReportMessagesModalController', function ($scope, $modalInstance) {
|
||||||
|
$scope.reason = {_: 'inputReportReasonSpam', text: ''}
|
||||||
|
$scope.toggleReportReason = function (reason) {
|
||||||
|
$scope.reason = {_: reason}
|
||||||
|
if (reason == 'inputReportReasonOther') {
|
||||||
|
onContentLoaded(function () {
|
||||||
|
$scope.$broadcast('ui_reason_text_focus')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
.controller('ProfileEditModalController', function ($scope, $modalInstance, AppUsersManager, MtpApiManager) {
|
.controller('ProfileEditModalController', function ($scope, $modalInstance, AppUsersManager, MtpApiManager) {
|
||||||
$scope.profile = {}
|
$scope.profile = {}
|
||||||
$scope.error = {}
|
$scope.error = {}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -106,7 +106,7 @@ chatPhotoEmpty#37c1011c = ChatPhoto;
|
|||||||
chatPhoto#6153276a photo_small:FileLocation photo_big:FileLocation = ChatPhoto;
|
chatPhoto#6153276a photo_small:FileLocation photo_big:FileLocation = ChatPhoto;
|
||||||
|
|
||||||
messageEmpty#83e5de54 id:int = Message;
|
messageEmpty#83e5de54 id:int = Message;
|
||||||
message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
|
message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
|
||||||
messageService#9e19a1f6 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer reply_to_msg_id:flags.3?int date:int action:MessageAction = Message;
|
messageService#9e19a1f6 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer reply_to_msg_id:flags.3?int date:int action:MessageAction = Message;
|
||||||
|
|
||||||
messageMediaEmpty#3ded6320 = MessageMedia;
|
messageMediaEmpty#3ded6320 = MessageMedia;
|
||||||
@ -174,7 +174,6 @@ inputPeerNotifySettings#38935eb2 flags:# show_previews:flags.0?true silent:flags
|
|||||||
peerNotifyEventsEmpty#add53cb3 = PeerNotifyEvents;
|
peerNotifyEventsEmpty#add53cb3 = PeerNotifyEvents;
|
||||||
peerNotifyEventsAll#6d1ded88 = PeerNotifyEvents;
|
peerNotifyEventsAll#6d1ded88 = PeerNotifyEvents;
|
||||||
|
|
||||||
peerNotifySettingsEmpty#70a68512 = PeerNotifySettings;
|
|
||||||
peerNotifySettings#9acda4c0 flags:# show_previews:flags.0?true silent:flags.1?true mute_until:int sound:string = PeerNotifySettings;
|
peerNotifySettings#9acda4c0 flags:# show_previews:flags.0?true silent:flags.1?true mute_until:int sound:string = PeerNotifySettings;
|
||||||
|
|
||||||
peerSettings#818426cd flags:# report_spam:flags.0?true = PeerSettings;
|
peerSettings#818426cd flags:# report_spam:flags.0?true = PeerSettings;
|
||||||
@ -185,6 +184,7 @@ wallPaperSolid#63117f24 id:int title:string bg_color:int color:int = WallPaper;
|
|||||||
inputReportReasonSpam#58dbcab8 = ReportReason;
|
inputReportReasonSpam#58dbcab8 = ReportReason;
|
||||||
inputReportReasonViolence#1e22c78d = ReportReason;
|
inputReportReasonViolence#1e22c78d = ReportReason;
|
||||||
inputReportReasonPornography#2e59d922 = ReportReason;
|
inputReportReasonPornography#2e59d922 = ReportReason;
|
||||||
|
inputReportReasonChildAbuse#adf44ee3 = ReportReason;
|
||||||
inputReportReasonOther#e1746d0a text:string = ReportReason;
|
inputReportReasonOther#e1746d0a text:string = ReportReason;
|
||||||
|
|
||||||
userFull#f220f3f flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true user:User about:flags.1?string link:contacts.Link profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo common_chats_count:int = UserFull;
|
userFull#f220f3f flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true user:User about:flags.1?string link:contacts.Link profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo common_chats_count:int = UserFull;
|
||||||
@ -423,7 +423,7 @@ accountDaysTTL#b8d0afdf days:int = AccountDaysTTL;
|
|||||||
documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;
|
documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;
|
||||||
documentAttributeAnimated#11b58939 = DocumentAttribute;
|
documentAttributeAnimated#11b58939 = DocumentAttribute;
|
||||||
documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute;
|
documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute;
|
||||||
documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true duration:int w:int h:int = DocumentAttribute;
|
documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true supports_streaming:flags.1?true duration:int w:int h:int = DocumentAttribute;
|
||||||
documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;
|
documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;
|
||||||
documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
|
documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
|
||||||
documentAttributeHasStickers#9801d2f7 = DocumentAttribute;
|
documentAttributeHasStickers#9801d2f7 = DocumentAttribute;
|
||||||
@ -578,7 +578,7 @@ botInlineMediaResult#17db940b flags:# id:string type:string photo:flags.0?Photo
|
|||||||
|
|
||||||
messages.botResults#947ca848 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM results:Vector<BotInlineResult> cache_time:int users:Vector<User> = messages.BotResults;
|
messages.botResults#947ca848 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM results:Vector<BotInlineResult> cache_time:int users:Vector<User> = messages.BotResults;
|
||||||
|
|
||||||
exportedMessageLink#1f486803 link:string = ExportedMessageLink;
|
exportedMessageLink#5dab1af4 link:string html:string = ExportedMessageLink;
|
||||||
|
|
||||||
messageFwdHeader#559ebe6d flags:# from_id:flags.0?int date:int channel_id:flags.1?int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int = MessageFwdHeader;
|
messageFwdHeader#559ebe6d flags:# from_id:flags.0?int date:int channel_id:flags.1?int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int = MessageFwdHeader;
|
||||||
|
|
||||||
@ -821,7 +821,6 @@ auth.signUp#1b067634 phone_number:string phone_code_hash:string phone_code:strin
|
|||||||
auth.signIn#bcd51581 phone_number:string phone_code_hash:string phone_code:string = auth.Authorization;
|
auth.signIn#bcd51581 phone_number:string phone_code_hash:string phone_code:string = auth.Authorization;
|
||||||
auth.logOut#5717da40 = Bool;
|
auth.logOut#5717da40 = Bool;
|
||||||
auth.resetAuthorizations#9fab0d1a = Bool;
|
auth.resetAuthorizations#9fab0d1a = Bool;
|
||||||
auth.sendInvites#771c1d97 phone_numbers:Vector<string> message:string = Bool;
|
|
||||||
auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
|
auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
|
||||||
auth.importAuthorization#e3ef9613 id:int bytes:bytes = auth.Authorization;
|
auth.importAuthorization#e3ef9613 id:int bytes:bytes = auth.Authorization;
|
||||||
auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool;
|
auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool;
|
||||||
@ -833,7 +832,7 @@ auth.resendCode#3ef1a9bf phone_number:string phone_code_hash:string = auth.SentC
|
|||||||
auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool;
|
auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool;
|
||||||
auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector<long> = Bool;
|
auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector<long> = Bool;
|
||||||
|
|
||||||
account.registerDevice#01280460 token_type:int token:string app_sandbox:Bool other_uids:Vector<int> = Bool;
|
account.registerDevice#1389cc token_type:int token:string app_sandbox:Bool other_uids:Vector<int> = Bool;
|
||||||
account.unregisterDevice#3076c4bf token_type:int token:string other_uids:Vector<int> = Bool;
|
account.unregisterDevice#3076c4bf token_type:int token:string other_uids:Vector<int> = Bool;
|
||||||
account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool;
|
account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool;
|
||||||
account.getNotifySettings#12b3ad31 peer:InputNotifyPeer = PeerNotifySettings;
|
account.getNotifySettings#12b3ad31 peer:InputNotifyPeer = PeerNotifySettings;
|
||||||
@ -895,6 +894,7 @@ messages.forwardMessages#708e0195 flags:# silent:flags.5?true background:flags.6
|
|||||||
messages.reportSpam#cf1592db peer:InputPeer = Bool;
|
messages.reportSpam#cf1592db peer:InputPeer = Bool;
|
||||||
messages.hideReportSpam#a8f1709b peer:InputPeer = Bool;
|
messages.hideReportSpam#a8f1709b peer:InputPeer = Bool;
|
||||||
messages.getPeerSettings#3672e09c peer:InputPeer = PeerSettings;
|
messages.getPeerSettings#3672e09c peer:InputPeer = PeerSettings;
|
||||||
|
messages.report#bd82b658 peer:InputPeer id:Vector<int> reason:ReportReason = Bool;
|
||||||
messages.getChats#3c6aa187 id:Vector<int> = messages.Chats;
|
messages.getChats#3c6aa187 id:Vector<int> = messages.Chats;
|
||||||
messages.getFullChat#3b831c66 chat_id:int = messages.ChatFull;
|
messages.getFullChat#3b831c66 chat_id:int = messages.ChatFull;
|
||||||
messages.editChatTitle#dc452855 chat_id:int title:string = Updates;
|
messages.editChatTitle#dc452855 chat_id:int title:string = Updates;
|
||||||
@ -902,7 +902,6 @@ messages.editChatPhoto#ca4c79d8 chat_id:int photo:InputChatPhoto = Updates;
|
|||||||
messages.addChatUser#f9a0aa09 chat_id:int user_id:InputUser fwd_limit:int = Updates;
|
messages.addChatUser#f9a0aa09 chat_id:int user_id:InputUser fwd_limit:int = Updates;
|
||||||
messages.deleteChatUser#e0611f16 chat_id:int user_id:InputUser = Updates;
|
messages.deleteChatUser#e0611f16 chat_id:int user_id:InputUser = Updates;
|
||||||
messages.createChat#9cb126e users:Vector<InputUser> title:string = Updates;
|
messages.createChat#9cb126e users:Vector<InputUser> title:string = Updates;
|
||||||
messages.forwardMessage#33963bf9 peer:InputPeer id:int random_id:long = Updates;
|
|
||||||
messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig;
|
messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig;
|
||||||
messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat;
|
messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat;
|
||||||
messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat;
|
messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat;
|
||||||
@ -915,6 +914,7 @@ messages.sendEncryptedService#32d439a4 peer:InputEncryptedChat random_id:long da
|
|||||||
messages.receivedQueue#55a5bb66 max_qts:int = Vector<long>;
|
messages.receivedQueue#55a5bb66 max_qts:int = Vector<long>;
|
||||||
messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool;
|
messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool;
|
||||||
messages.readMessageContents#36a73f77 id:Vector<int> = messages.AffectedMessages;
|
messages.readMessageContents#36a73f77 id:Vector<int> = messages.AffectedMessages;
|
||||||
|
messages.getStickers#ae22e045 emoticon:string hash:string = messages.Stickers;
|
||||||
messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers;
|
messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers;
|
||||||
messages.getWebPagePreview#25223e24 message:string = MessageMedia;
|
messages.getWebPagePreview#25223e24 message:string = MessageMedia;
|
||||||
messages.exportChatInvite#7d885289 chat_id:int = ExportedChatInvite;
|
messages.exportChatInvite#7d885289 chat_id:int = ExportedChatInvite;
|
||||||
|
@ -394,7 +394,8 @@ function templateUrl (tplName) {
|
|||||||
megagroup_edit_modal: 'desktop',
|
megagroup_edit_modal: 'desktop',
|
||||||
inline_results: 'desktop',
|
inline_results: 'desktop',
|
||||||
composer_dropdown: 'desktop',
|
composer_dropdown: 'desktop',
|
||||||
peer_pinned_message_bar: 'desktop'
|
peer_pinned_message_bar: 'desktop',
|
||||||
|
report_msgs_modal: 'desktop'
|
||||||
}
|
}
|
||||||
var layout = forceLayout[tplName] || (Config.Mobile ? 'mobile' : 'desktop')
|
var layout = forceLayout[tplName] || (Config.Mobile ? 'mobile' : 'desktop')
|
||||||
return 'partials/' + layout + '/' + tplName + '.html'
|
return 'partials/' + layout + '/' + tplName + '.html'
|
||||||
|
@ -219,6 +219,15 @@
|
|||||||
"group_invite_revoke_active": "Revoking...",
|
"group_invite_revoke_active": "Revoking...",
|
||||||
"group_invite_revoke": "Revoke",
|
"group_invite_revoke": "Revoke",
|
||||||
|
|
||||||
|
"report_reason_modal_title": "Report",
|
||||||
|
"report_reason_modal_spam": "Spam",
|
||||||
|
"report_reason_modal_violence": "Violence",
|
||||||
|
"report_reason_modal_pornography": "Pornography",
|
||||||
|
"report_reason_modal_childabuse": "Child Abuse",
|
||||||
|
"report_reason_modal_other": "Other",
|
||||||
|
"report_reason_modal_other_placeholder": "Description",
|
||||||
|
"report_reason_modal_submit_btn": "Send",
|
||||||
|
|
||||||
"clipboard_copied": "Copied!",
|
"clipboard_copied": "Copied!",
|
||||||
"clipboard_press_ctrl_c": "Press Ctrl+C to copy",
|
"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",
|
||||||
@ -246,6 +255,7 @@
|
|||||||
"confirm_modal_login_phone_correct": "Is this phone number correct?",
|
"confirm_modal_login_phone_correct": "Is this phone number correct?",
|
||||||
"confirm_modal_forward_to_peer": "Forward to {peer}?",
|
"confirm_modal_forward_to_peer": "Forward to {peer}?",
|
||||||
"confirm_modal_forward_to_peer_success": "Message was successfully forwarded.",
|
"confirm_modal_forward_to_peer_success": "Message was successfully forwarded.",
|
||||||
|
"confirm_modal_report_success": "Report sent",
|
||||||
"confirm_modal_send_to_peer": "Send to {peer}?",
|
"confirm_modal_send_to_peer": "Send to {peer}?",
|
||||||
"confirm_modal_share_file_peer": "Share with {peer}?",
|
"confirm_modal_share_file_peer": "Share with {peer}?",
|
||||||
"confirm_modal_invite_peer": "Invite to {peer}?",
|
"confirm_modal_invite_peer": "Invite to {peer}?",
|
||||||
@ -391,6 +401,7 @@
|
|||||||
"message_action_reply": "Reply",
|
"message_action_reply": "Reply",
|
||||||
"message_action_edit": "Edit",
|
"message_action_edit": "Edit",
|
||||||
"message_action_delete": "Delete",
|
"message_action_delete": "Delete",
|
||||||
|
"message_action_report": "Report",
|
||||||
"message_action_forward": "Forward",
|
"message_action_forward": "Forward",
|
||||||
"message_action_select": "Select",
|
"message_action_select": "Select",
|
||||||
"message_action_cancel": "Cancel",
|
"message_action_cancel": "Cancel",
|
||||||
@ -529,6 +540,7 @@
|
|||||||
"im_channel_join": "+ Join",
|
"im_channel_join": "+ Join",
|
||||||
"im_channel_mute": "Mute",
|
"im_channel_mute": "Mute",
|
||||||
"im_channel_unmute": "Unmute",
|
"im_channel_unmute": "Unmute",
|
||||||
|
"im_report": "Report {count}",
|
||||||
"im_reply_loading": "Loading{dots}",
|
"im_reply_loading": "Loading{dots}",
|
||||||
"im_X_forwarded_messages": "{'one': '{} forwarded message', 'other': '{} forwarded messages'}",
|
"im_X_forwarded_messages": "{'one': '{} forwarded message', 'other': '{} forwarded messages'}",
|
||||||
"im_photos_drop_text": "Drop photos here to send",
|
"im_photos_drop_text": "Drop photos here to send",
|
||||||
|
@ -1013,6 +1013,19 @@ angular.module('myApp.services')
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function canReportMessage(messageID) {
|
||||||
|
if (!messagesStorage[messageID]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (!canEditMessage(messageID)) {
|
||||||
|
var message = messagesStorage[messageID]
|
||||||
|
if (!message.pFlags.out) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
function getMessageEditData(messageID) {
|
function getMessageEditData(messageID) {
|
||||||
if (!canEditMessage(messageID)) {
|
if (!canEditMessage(messageID)) {
|
||||||
return $q.reject()
|
return $q.reject()
|
||||||
@ -2177,6 +2190,25 @@ angular.module('myApp.services')
|
|||||||
return $q.all(promises)
|
return $q.all(promises)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reportMessages (mids, reason) {
|
||||||
|
mids = mids.sort()
|
||||||
|
var splitted = AppMessagesIDsManager.splitMessageIDsByChannels(mids)
|
||||||
|
var promises = []
|
||||||
|
angular.forEach(splitted.msgIDs, function (msgIDs, channelID) {
|
||||||
|
var peerID = -channelID || getMessagePeer(getMessage(msgIDs[0]))
|
||||||
|
var promise = MtpApiManager.invokeApi('messages.report', {
|
||||||
|
peer: AppPeersManager.getInputPeerByID(peerID),
|
||||||
|
id: msgIDs,
|
||||||
|
reason: reason
|
||||||
|
}).then(function (updates) {
|
||||||
|
ApiUpdatesManager.processUpdateMessage(updates)
|
||||||
|
})
|
||||||
|
promises.push(promise)
|
||||||
|
})
|
||||||
|
|
||||||
|
return $q.all(promises)
|
||||||
|
}
|
||||||
|
|
||||||
function startBot (botID, chatID, startParam) {
|
function startBot (botID, chatID, startParam) {
|
||||||
var peerID = chatID ? -chatID : botID
|
var peerID = chatID ? -chatID : botID
|
||||||
if (startParam) {
|
if (startParam) {
|
||||||
@ -3847,6 +3879,7 @@ angular.module('myApp.services')
|
|||||||
sendFile: sendFile,
|
sendFile: sendFile,
|
||||||
sendOther: sendOther,
|
sendOther: sendOther,
|
||||||
forwardMessages: forwardMessages,
|
forwardMessages: forwardMessages,
|
||||||
|
reportMessages: reportMessages,
|
||||||
startBot: startBot,
|
startBot: startBot,
|
||||||
shareGame: shareGame,
|
shareGame: shareGame,
|
||||||
editMessage: editMessage,
|
editMessage: editMessage,
|
||||||
@ -3856,6 +3889,7 @@ angular.module('myApp.services')
|
|||||||
getMessageShareLink: getMessageShareLink,
|
getMessageShareLink: getMessageShareLink,
|
||||||
canMessageBeEdited: canMessageBeEdited,
|
canMessageBeEdited: canMessageBeEdited,
|
||||||
canEditMessage: canEditMessage,
|
canEditMessage: canEditMessage,
|
||||||
|
canReportMessage: canReportMessage,
|
||||||
getMessageEditData: getMessageEditData,
|
getMessageEditData: getMessageEditData,
|
||||||
canRevokeMessage: canRevokeMessage,
|
canRevokeMessage: canRevokeMessage,
|
||||||
clearDialogCache: clearDialogCache,
|
clearDialogCache: clearDialogCache,
|
||||||
|
@ -200,6 +200,7 @@
|
|||||||
<a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>
|
<a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>
|
||||||
<a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a>
|
<a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a>
|
||||||
<a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>
|
<a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>
|
||||||
|
<a class="btn btn-primary im_edit_delete_btn" ng-click="selectedReport()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_report" ng-show="historyState.canReport"></a>
|
||||||
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1 && historyState.canReply" my-i18n="im_reply"></a>
|
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1 && historyState.canReply" my-i18n="im_reply"></a>
|
||||||
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedEdit()" ng-show="selectedCount == 1 && historyState.canEdit" my-i18n="im_edit"></a>
|
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedEdit()" ng-show="selectedCount == 1 && historyState.canEdit" my-i18n="im_edit"></a>
|
||||||
<my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>
|
<my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>
|
||||||
|
51
app/partials/desktop/report_msgs_modal.html
Normal file
51
app/partials/desktop/report_msgs_modal.html
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<div class="md_simple_modal_wrap" my-modal-position>
|
||||||
|
|
||||||
|
<div class="md_simple_modal_body">
|
||||||
|
|
||||||
|
<form class="modal_simple_form" ng-submit="$close(reason)">
|
||||||
|
|
||||||
|
<h4 my-i18n="report_reason_modal_title"></h4>
|
||||||
|
|
||||||
|
<div class="tg_radios_wrap">
|
||||||
|
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonSpam')" ng-class="reason._ == 'inputReportReasonSpam' ? 'tg_radio_on' : ''">
|
||||||
|
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||||
|
<span my-i18n="report_reason_modal_spam"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonViolence')" ng-class="reason._ == 'inputReportReasonViolence' ? 'tg_radio_on' : ''">
|
||||||
|
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||||
|
<span my-i18n="report_reason_modal_violence"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonChildAbuse')" ng-class="reason._ == 'inputReportReasonChildAbuse' ? 'tg_radio_on' : ''">
|
||||||
|
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||||
|
<span class="" my-i18n="report_reason_modal_childabuse"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonPornography')" ng-class="reason._ == 'inputReportReasonPornography' ? 'tg_radio_on' : ''">
|
||||||
|
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||||
|
<span my-i18n="report_reason_modal_pornography"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonOther')" ng-class="reason._ == 'inputReportReasonOther' ? 'tg_radio_on' : ''">
|
||||||
|
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||||
|
<span my-i18n="report_reason_modal_other"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md-input-group" my-labeled-input ng-show="reason._ == 'inputReportReasonOther'">
|
||||||
|
<label class="md-input-label" my-i18n="report_reason_modal_other_placeholder"></label>
|
||||||
|
<input class="md-input" my-focus-on="ui_reason_text_focus" type="text" ng-model="reason.text" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md_simple_modal_footer">
|
||||||
|
<button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>
|
||||||
|
<button class="btn btn-md btn-md-primary" ng-click="$close(reason)" my-i18n="report_reason_modal_submit_btn"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
@ -5,6 +5,7 @@
|
|||||||
<button ng-if="historyState.canEdit" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_edit" ng-click="$close('edit')"></button>
|
<button ng-if="historyState.canEdit" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_edit" ng-click="$close('edit')"></button>
|
||||||
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_forward" ng-click="$close('forward')"></button>
|
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_forward" ng-click="$close('forward')"></button>
|
||||||
<button ng-if="historyState.canDelete" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_delete" ng-click="$close('delete')"></button>
|
<button ng-if="historyState.canDelete" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_delete" ng-click="$close('delete')"></button>
|
||||||
|
<button ng-if="historyState.canReport" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_report" ng-click="$close('report')"></button>
|
||||||
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_select" ng-click="$close('select')"></button>
|
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_select" ng-click="$close('select')"></button>
|
||||||
<button class="btn btn-md btn-block" my-i18n="message_action_cancel" ng-click="$dismiss()"></button>
|
<button class="btn btn-md btn-block" my-i18n="message_action_cancel" ng-click="$dismiss()"></button>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user