Restrict clicking while recording voice
This commit is contained in:
parent
b2bbe7acd6
commit
8a70a31536
@ -36,7 +36,7 @@ import { MessageEntity, DraftMessage, WebPage, Message } from '../../layer';
|
|||||||
import StickersHelper from './stickersHelper';
|
import StickersHelper from './stickersHelper';
|
||||||
import ButtonIcon from '../buttonIcon';
|
import ButtonIcon from '../buttonIcon';
|
||||||
import ButtonMenuToggle from '../buttonMenuToggle';
|
import ButtonMenuToggle from '../buttonMenuToggle';
|
||||||
import ListenerSetter from '../../helpers/listenerSetter';
|
import ListenerSetter, { Listener } from '../../helpers/listenerSetter';
|
||||||
import Button from '../button';
|
import Button from '../button';
|
||||||
import PopupSchedule from '../popups/schedule';
|
import PopupSchedule from '../popups/schedule';
|
||||||
import SendMenu from './sendContextMenu';
|
import SendMenu from './sendContextMenu';
|
||||||
@ -52,7 +52,7 @@ import ButtonCorner from '../buttonCorner';
|
|||||||
import blurActiveElement from '../../helpers/dom/blurActiveElement';
|
import blurActiveElement from '../../helpers/dom/blurActiveElement';
|
||||||
import { cancelEvent } from '../../helpers/dom/cancelEvent';
|
import { cancelEvent } from '../../helpers/dom/cancelEvent';
|
||||||
import cancelSelection from '../../helpers/dom/cancelSelection';
|
import cancelSelection from '../../helpers/dom/cancelSelection';
|
||||||
import { attachClickEvent } from '../../helpers/dom/clickEvent';
|
import { attachClickEvent, simulateClickEvent } from '../../helpers/dom/clickEvent';
|
||||||
import getRichValue from '../../helpers/dom/getRichValue';
|
import getRichValue from '../../helpers/dom/getRichValue';
|
||||||
import isInputEmpty from '../../helpers/dom/isInputEmpty';
|
import isInputEmpty from '../../helpers/dom/isInputEmpty';
|
||||||
import isSendShortcutPressed from '../../helpers/dom/isSendShortcutPressed';
|
import isSendShortcutPressed from '../../helpers/dom/isSendShortcutPressed';
|
||||||
@ -78,6 +78,7 @@ import { fastRaf } from '../../helpers/schedulers';
|
|||||||
import PopupDeleteMessages from '../popups/deleteMessages';
|
import PopupDeleteMessages from '../popups/deleteMessages';
|
||||||
import fixSafariStickyInputFocusing, { IS_STICKY_INPUT_BUGGED } from '../../helpers/dom/fixSafariStickyInputFocusing';
|
import fixSafariStickyInputFocusing, { IS_STICKY_INPUT_BUGGED } from '../../helpers/dom/fixSafariStickyInputFocusing';
|
||||||
import { copy } from '../../helpers/object';
|
import { copy } from '../../helpers/object';
|
||||||
|
import PopupPeer from '../popups/peer';
|
||||||
|
|
||||||
const RECORD_MIN_TIME = 500;
|
const RECORD_MIN_TIME = 500;
|
||||||
const POSTING_MEDIA_NOT_ALLOWED = 'Posting media content isn\'t allowed in this group.';
|
const POSTING_MEDIA_NOT_ALLOWED = 'Posting media content isn\'t allowed in this group.';
|
||||||
@ -173,6 +174,8 @@ export default class ChatInput {
|
|||||||
|
|
||||||
private previousQuery: string;
|
private previousQuery: string;
|
||||||
|
|
||||||
|
private recordingOverlayListener: Listener;
|
||||||
|
|
||||||
constructor(private chat: Chat,
|
constructor(private chat: Chat,
|
||||||
private appMessagesManager: AppMessagesManager,
|
private appMessagesManager: AppMessagesManager,
|
||||||
private appMessagesIdsManager: AppMessagesIdsManager,
|
private appMessagesIdsManager: AppMessagesIdsManager,
|
||||||
@ -575,7 +578,14 @@ export default class ChatInput {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.recorder.ondataavailable = (typedArray: Uint8Array) => {
|
this.recorder.ondataavailable = (typedArray: Uint8Array) => {
|
||||||
if(this.recordCanceled) return;
|
if(this.recordingOverlayListener) {
|
||||||
|
this.listenerSetter.remove(this.recordingOverlayListener);
|
||||||
|
this.recordingOverlayListener = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.recordCanceled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const {peerId, threadId} = this.chat;
|
const {peerId, threadId} = this.chat;
|
||||||
const replyToMsgId = this.replyToMsgId;
|
const replyToMsgId = this.replyToMsgId;
|
||||||
@ -1451,6 +1461,25 @@ export default class ChatInput {
|
|||||||
this.updateSendBtn();
|
this.updateSendBtn();
|
||||||
opusDecodeController.setKeepAlive(true);
|
opusDecodeController.setKeepAlive(true);
|
||||||
|
|
||||||
|
this.recordingOverlayListener = this.listenerSetter.add(document.body)('mousedown', (e) => {
|
||||||
|
if(!findUpClassName(e.target, 'chat-input') && !findUpClassName(e.target, 'popup-cancel-record')) {
|
||||||
|
cancelEvent(e);
|
||||||
|
new PopupPeer('popup-cancel-record', {
|
||||||
|
titleLangKey: 'DiscardVoiceMessageTitle',
|
||||||
|
descriptionLangKey: 'DiscardVoiceMessageDescription',
|
||||||
|
buttons: [{
|
||||||
|
langKey: 'DiscardVoiceMessageAction',
|
||||||
|
callback: () => {
|
||||||
|
simulateClickEvent(this.btnCancelRecord);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
langKey: 'Continue',
|
||||||
|
isCancel: true
|
||||||
|
}]
|
||||||
|
}).show();
|
||||||
|
}
|
||||||
|
}, {capture: true, passive: false}) as any;
|
||||||
|
|
||||||
this.recordStartTime = Date.now();
|
this.recordStartTime = Date.now();
|
||||||
|
|
||||||
const sourceNode: MediaStreamAudioSourceNode = this.recorder.sourceNode;
|
const sourceNode: MediaStreamAudioSourceNode = this.recorder.sourceNode;
|
||||||
|
@ -572,6 +572,9 @@ const lang = {
|
|||||||
"ChannelSilentBroadcast": "Silent Broadcast",
|
"ChannelSilentBroadcast": "Silent Broadcast",
|
||||||
"Comment": "Comment",
|
"Comment": "Comment",
|
||||||
"SendAnonymously": "Send anonymously",
|
"SendAnonymously": "Send anonymously",
|
||||||
|
"DiscardVoiceMessageTitle": "Discard Voice Message",
|
||||||
|
"DiscardVoiceMessageDescription": "Are you sure you want to stop recording and discard your voice message?",
|
||||||
|
"DiscardVoiceMessageAction": "Discard",
|
||||||
|
|
||||||
// * macos
|
// * macos
|
||||||
"AccountSettings.Filters": "Chat Folders",
|
"AccountSettings.Filters": "Chat Folders",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user