diff --git a/js/models/conversations.js b/js/models/conversations.js index 7cbc75d33..f00638463 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -571,8 +571,6 @@ const model = this.addSingleMessage(message); MessageController.register(model.id, model); - console.log(`[vince] Changed triggered from model`); - this.trigger('change'); }, addSingleMessage(message, setToExpire = true) { diff --git a/js/modules/signal.js b/js/modules/signal.js index 25edd63bf..5fe517ea2 100644 --- a/js/modules/signal.js +++ b/js/modules/signal.js @@ -32,9 +32,6 @@ const { ContactName } = require('../../ts/components/conversation/ContactName'); const { ConversationHeader, } = require('../../ts/components/conversation/ConversationHeader'); -const { - SessionGroupSettings, -} = require('../../ts/components/session/SessionGroupSettings'); const { EmbeddedContact, } = require('../../ts/components/conversation/EmbeddedContact'); @@ -282,7 +279,6 @@ exports.setup = (options = {}) => { ContactListItem, ContactName, ConversationHeader, - SessionGroupSettings, SettingsView, EmbeddedContact, Emojify, diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index ca70749ee..cf1a09f57 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -260,59 +260,6 @@ }, }; }; - const getGroupSettingsProps = () => { - const ourPK = window.textsecure.storage.user.getNumber(); - const members = this.model.get('members') || []; - - return { - id: this.model.id, - name: this.model.getName(), - phoneNumber: this.model.getNumber(), - profileName: this.model.getProfileName(), - color: this.model.getColor(), - avatarPath: this.model.getAvatarPath(), - isGroup: !this.model.isPrivate(), - isPublic: this.model.isPublic(), - isAdmin: this.model.get('groupAdmins').includes(ourPK), - isRss: this.model.isRss(), - memberCount: members.length, - amMod: this.model.isModerator( - window.storage.get('primaryDevicePubKey') - ), - isKickedFromGroup: this.model.get('isKickedFromGroup'), - isBlocked: this.model.isBlocked(), - - timerOptions: Whisper.ExpirationTimerOptions.map(item => ({ - name: item.getName(), - value: item.get('seconds'), - })), - - onSetDisappearingMessages: seconds => - this.setDisappearingMessages(seconds), - - onGoBack: () => { - this.hideConversationRight(); - }, - - onUpdateGroupName: () => { - window.Whisper.events.trigger('updateGroupName', this.model); - }, - onUpdateGroupMembers: () => { - window.Whisper.events.trigger('updateGroupMembers', this.model); - }, - - onLeaveGroup: () => { - window.Whisper.events.trigger('leaveGroup', this.model); - }, - - onInviteContacts: () => { - window.Whisper.events.trigger('inviteContacts', this.model); - }, - onShowLightBox: (lightBoxOptions = {}) => { - this.showChannelLightbox(lightBoxOptions); - }, - }; - }; this.titleView = new Whisper.ReactWrapperView({ className: 'title-wrapper', Component: window.Signal.Components.ConversationHeader, @@ -345,28 +292,6 @@ }); }; - this.showGroupSettings = () => { - if (!this.groupSettings) { - this.groupSettings = new Whisper.ReactWrapperView({ - className: 'group-settings', - Component: window.Signal.Components.SessionGroupSettings, - props: getGroupSettingsProps(this.model), - }); - this.$('.conversation-content-right').append(this.groupSettings.el); - this.updateGroupSettingsPanel = () => - this.groupSettings.update(getGroupSettingsProps(this.model)); - this.listenTo(this.model, 'change', this.updateGroupSettingsPanel); - } else { - this.groupSettings.update(getGroupSettingsProps(this.model)); - } - - this.showConversationRight(); - }; - - this.hideGroupSettings = () => { - this.showConversationRight(); - }; - this.memberView.render(); this.bulkEditView = new Whisper.BulkEditView({ diff --git a/stylesheets/_emoji.scss b/stylesheets/_emoji.scss index 5f110abfa..c9d46d00c 100644 --- a/stylesheets/_emoji.scss +++ b/stylesheets/_emoji.scss @@ -47,12 +47,12 @@ img.emoji { } img.emoji.small { - width: 1.10em; - height: 1.10em; + width: 1.1em; + height: 1.1em; } img.emoji.medium { - width: 1.30em; - height: 1.30em; + width: 1.3em; + height: 1.3em; } img.emoji.large { width: 1.7em; diff --git a/stylesheets/_session_conversation.scss b/stylesheets/_session_conversation.scss index 346c11dee..68701c1f5 100644 --- a/stylesheets/_session_conversation.scss +++ b/stylesheets/_session_conversation.scss @@ -268,7 +268,7 @@ $composition-container-height: 60px; margin-left: 2px; line-height: $session-font-h2; letter-spacing: 0.5px; - color: rgba(0,0,0,0); + color: rgba(0, 0, 0, 0); } } } diff --git a/ts/components/conversation/Emojify.tsx b/ts/components/conversation/Emojify.tsx index d99dde480..1f0c0cee7 100644 --- a/ts/components/conversation/Emojify.tsx +++ b/ts/components/conversation/Emojify.tsx @@ -3,10 +3,7 @@ import React from 'react'; import classNames from 'classnames'; import is from '@sindresorhus/is'; -import { - getRegex, - SizeClassType, -} from '../../util/emoji'; +import { getRegex, SizeClassType } from '../../util/emoji'; import { LocalizerType, RenderTextCallbackType } from '../../types/Util'; import { Twemoji } from 'react-emoji-render'; @@ -67,24 +64,24 @@ export class Emojify extends React.Component { ); } - let size = 1.00; + let size = 1.0; switch (sizeClass) { case 'jumbo': - size = 2.00; + size = 2.0; break; case 'large': - size = 1.80; + size = 1.8; break; case 'medium': - size = 1.50; + size = 1.5; break; case 'small': - size = 1.10; + size = 1.1; break; default: } - const style = {fontSize: `${size}em`}; + const style = { fontSize: `${size}em` }; const emojiText = match[0] ?? match[1]; @@ -93,11 +90,13 @@ export class Emojify extends React.Component { ); diff --git a/ts/components/conversation/Message.tsx b/ts/components/conversation/Message.tsx index 5759f9e33..872259e75 100644 --- a/ts/components/conversation/Message.tsx +++ b/ts/components/conversation/Message.tsx @@ -210,8 +210,6 @@ export class Message extends React.PureComponent { } public handleImageError() { - // tslint:disable-next-line no-console - console.log('Message: Image failed to load; failing over to placeholder'); this.setState({ imageBroken: true, }); @@ -780,8 +778,6 @@ export class Message extends React.PureComponent { return null; } - console.log('[vince] contents:', contents); - return (
{ /> ); - console.log('[vince] bodyContents:', bodyContents); - - return this.addDownloading( { return; } - console.log(`[sending] ONCOMPLETE`); this.setState({ show: false }, () => { - setTimeout(this.props.resetProgress, 2000); + setTimeout(() => this.props.resetProgress(), 2000); }); } diff --git a/ts/components/session/conversation/SessionCompositionBox.tsx b/ts/components/session/conversation/SessionCompositionBox.tsx index efd7d9c6b..226d06a71 100644 --- a/ts/components/session/conversation/SessionCompositionBox.tsx +++ b/ts/components/session/conversation/SessionCompositionBox.tsx @@ -16,7 +16,6 @@ import { Constants } from '../../../session'; import { toArray } from 'react-emoji-render'; - interface Props { placeholder?: string; @@ -274,15 +273,15 @@ export class SessionCompositionBox extends React.Component { } private parseEmojis(value: string) { - const emojisArray = toArray(value); - - // toArray outputs React elements for emojis and strings for other - return emojisArray.reduce((previous: string, current: any) => { - if (typeof current === 'string') { - return previous + current; - } - return previous + (current.props.children as string); - }, ''); + const emojisArray = toArray(value); + + // toArray outputs React elements for emojis and strings for other + return emojisArray.reduce((previous: string, current: any) => { + if (typeof current === 'string') { + return previous + current; + } + return previous + (current.props.children as string); + }, ''); } private async onSendMessage() { @@ -305,8 +304,7 @@ export class SessionCompositionBox extends React.Component { this.props.onMessageSending(); try { - await this.props - .sendMessage( + await this.props.sendMessage( messagePlaintext, attachments, undefined, @@ -398,10 +396,10 @@ export class SessionCompositionBox extends React.Component { private onChange(event: any) { const message = event.target.value ?? ''; - this.setState({message}); + this.setState({ message }); } - private onEmojiClick({colons, native}: {colons: string; native: string}) { + private onEmojiClick({ colons, native }: { colons: string; native: string }) { const messageBox = this.textarea.current; if (!messageBox) { return; diff --git a/ts/components/session/conversation/SessionConversation.tsx b/ts/components/session/conversation/SessionConversation.tsx index 2ad746fc0..86f0d6824 100644 --- a/ts/components/session/conversation/SessionConversation.tsx +++ b/ts/components/session/conversation/SessionConversation.tsx @@ -171,11 +171,11 @@ export class SessionConversation extends React.Component { const messageCollection = window.ConversationController.get( this.state.conversationKey ).messageCollection; - console.log('[vince] messageCollection:', messageCollection); - console.log('[vince] this.state.messages:', this.state.messages); } - public async componentWillReceiveProps(nextProps: any) {} + public async componentWillReceiveProps(nextProps: any) { + return; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~ RENDER METHODS ~~~~~~~~~~~~~~ @@ -468,12 +468,6 @@ export class SessionConversation extends React.Component { } }); - // Add new messages to conversation collection - // const newMessages = _.xor(messages, previousMessageSet); - // newMessages.forEach(message => conversationModel.addSingleMessage(message)); - - // console.log('[vince] conversationModel.messageCollection:', conversationModel.messageCollection); - return { newTopMessage, previousTopMessage }; } diff --git a/ts/components/session/conversation/SessionConversationManager.tsx b/ts/components/session/conversation/SessionConversationManager.tsx index b19a14b06..d15ed1520 100644 --- a/ts/components/session/conversation/SessionConversationManager.tsx +++ b/ts/components/session/conversation/SessionConversationManager.tsx @@ -64,16 +64,17 @@ export async function getMessages( const previousTopMessage = currentMessages[0]?.id; const newTopMessage = messages[0]?.id; - messageFetchTimestamp = getTimestamp(); + const newMessageFetchTimestamp = getTimestamp(); // Callback to onGotMessages - if (onGotMessages) + if (onGotMessages) { onGotMessages( messages, - messageFetchTimestamp, + newMessageFetchTimestamp, previousTopMessage, newTopMessage ); + } return { newTopMessage, previousTopMessage }; } diff --git a/ts/components/session/conversation/SessionRecording.tsx b/ts/components/session/conversation/SessionRecording.tsx index 78836f054..16bdade78 100644 --- a/ts/components/session/conversation/SessionRecording.tsx +++ b/ts/components/session/conversation/SessionRecording.tsx @@ -7,15 +7,15 @@ import { getTimestamp } from './SessionConversationManager'; import { SessionIconButton, SessionIconSize, SessionIconType } from '../icon'; import { SessionButton, - SessionButtonType, SessionButtonColor, + SessionButtonType, } from '../SessionButton'; import { Constants } from '../../../session'; interface Props { - sendVoiceMessage: any; - onLoadVoiceNoteView: any; onExitVoiceNoteView: any; + onLoadVoiceNoteView: any; + sendVoiceMessage: any; } interface State { @@ -56,9 +56,9 @@ interface State { } export class SessionRecording extends React.Component { - private visualisationRef: React.RefObject; - private visualisationCanvas: React.RefObject; - private playbackCanvas: React.RefObject; + private readonly visualisationRef: React.RefObject; + private readonly visualisationCanvas: React.RefObject; + private readonly playbackCanvas: React.RefObject; constructor(props: any) { super(props); @@ -125,12 +125,17 @@ export class SessionRecording extends React.Component { public async componentWillMount() { // This turns on the microphone on the system. Later we need to turn it off. - this.initiateRecordingStream(); + await this.initiateRecordingStream(); } public componentDidMount() { window.addEventListener('resize', this.updateCanvasDimensions); this.updateCanvasDimensions(); + + // Callback to parent on load complete + if (this.props.onLoadVoiceNoteView) { + this.props.onLoadVoiceNoteView(); + } } public componentWillUnmount() { @@ -138,12 +143,12 @@ export class SessionRecording extends React.Component { window.removeEventListener('resize', this.updateCanvasDimensions); } - public componentDidUpdate() { + public async componentDidUpdate() { const { audioElement, isPlaying } = this.state; if (audioElement) { if (isPlaying) { - audioElement.play(); + await audioElement.play(); } else { audioElement.pause(); } @@ -226,8 +231,8 @@ export class SessionRecording extends React.Component { className="session-recording--visualisation" ref={this.visualisationRef} > - {!isRecording && } - {isRecording && } + {!isRecording && } + {isRecording && }
{ )} > {displayTimeString} - {isRecording && ( -
- )} + {isRecording &&
}
{!isRecording && ( @@ -282,13 +285,13 @@ export class SessionRecording extends React.Component { } } - private timerUpdate() { + private async timerUpdate() { const { nowTimestamp, startTimestamp } = this.state; const elapsedTime = nowTimestamp - startTimestamp; // Prevent voice messages exceeding max length. if (elapsedTime >= Constants.CONVERSATION.MAX_VOICE_MESSAGE_DURATION) { - this.stopRecordingStream(); + await this.stopRecordingStream(); } this.setState({ @@ -321,19 +324,19 @@ export class SessionRecording extends React.Component { } const audioURL = window.URL.createObjectURL(mediaBlob.data); - const audioElement = new Audio(audioURL); + const audioElementN = new Audio(audioURL); - audioElement.loop = false; + audioElementN.loop = false; - audioElement.oncanplaythrough = async () => { + audioElementN.oncanplaythrough = async () => { const duration = recordDuration; - if (duration && audioElement.currentTime < duration) { - await audioElement.play(); + if (duration && audioElementN.currentTime < duration) { + await audioElementN.play(); } }; - return audioElement; + return audioElementN; }; const audioElement = this.state.audioElement || generateAudioElement(); @@ -422,9 +425,7 @@ export class SessionRecording extends React.Component { // Is the audio file > attachment filesize limit if (audioBlob.size > Constants.CONVERSATION.MAX_ATTACHMENT_FILESIZE) { - console.log( - `[send] Voice message too large: ${audioBlob.size / 1000000} MB` - ); + // TODO VINCE: warn the user that it's too big return; } diff --git a/ts/state/reducer.ts b/ts/state/reducer.ts index 209a47191..a94ae7cf2 100644 --- a/ts/state/reducer.ts +++ b/ts/state/reducer.ts @@ -6,8 +6,7 @@ import { reducer as conversations, } from './ducks/conversations'; import { reducer as user, UserStateType } from './ducks/user'; - -import { reducer as messages } from './ducks/search'; +// import { reducer as messages } from './ducks/messages'; export type StateType = { search: SearchStateType; @@ -18,7 +17,9 @@ export type StateType = { export const reducers = { search, - messages, + // Temporary until ./ducks/messages is working + // messages, + messages: search, conversations, user, }; diff --git a/ts/state/selectors/conversations.ts b/ts/state/selectors/conversations.ts index 9c323aa1d..2b99adff6 100644 --- a/ts/state/selectors/conversations.ts +++ b/ts/state/selectors/conversations.ts @@ -221,7 +221,7 @@ export const _getSessionConversationInfo = ( const max = sorted.length; for (let i = 0; i < max; i += 1) { - let conv = sorted[i]; + const conv = sorted[i]; if (conv.id === selectedConversation) { conversation = conv;