import React from 'react'; import { ConversationHeader } from '../conversation/ConversationHeader'; import { SessionCompositionBox } from './SessionCompositionBox'; import { SessionProgress } from './SessionProgress' import { Message } from '../conversation/Message'; import { SessionSpinner } from './SessionSpinner'; import { configure } from 'protobufjs'; // interface Props { // getHeaderProps: any; // conversationKey: any; // } interface State { sendingProgess: number; prevSendingProgess: number; conversationKey: string; messages: Array; } export class SessionConversation extends React.Component { constructor(props: any) { super(props); const conversationKey = this.props.conversations.selectedConversation; this.state = { sendingProgess: 0, prevSendingProgess: 0, conversationKey, messages: [], }; } public async componentWillUpdate () { console.log(`[vince][update] State:`, this.state); console.log(`[vince][update] Props:`, this.props); } public async componentWillReceiveProps() { const { conversationKey, messages } = this.state; const conversation = this.props.conversations.conversationLookup[conversationKey]; // Check if another message came through const shouldLoad = !messages.length || (conversation.lastUpdated > messages[messages.length - 1]?.received_at); console.log(`[vince][update] conversation:`, conversation); console.log(`[vince][update] conversation.lastupdated: `, conversation.lastUpdated) console.log(`[vince][update] last message received at: `, messages[messages.length - 1]?.received_at) console.log(`[vince][update] Should Update: `, shouldLoad) console.log(`[vince][update] called ComponentWillRevieceProps. Messages: `, this.state.messages) if (conversationKey && shouldLoad){ this.setState({ messages: await window.getMessagesByKey(conversationKey, true) }); } } render() { console.log('[vince] SessionConversation was just rerendered!'); console.log(`[vince] These are SessionConversation props: `, this.props); // const headerProps = this.props.getHeaderProps; const { conversationKey } = this.state; const loadingMessages = this.state.messages.length === 0; console.log(`[vince] My conversation key is: `, conversationKey); // TMEPORARY SOLUTION TO GETTING CONVERSATION UNTIL // SessionConversationStack is created // Get conversation by Key (NOT cid) const conversation = this.props.conversations.conversationLookup[conversationKey] const conversationType = conversation.type; return (
{this.renderHeader(conversation)}
{ loadingMessages ? (
) : ( <> {this.renderMessages(conversationKey, conversationType)} )}
null} />
); } public renderMessages(conversationKey: string, conversationType: 'group' | 'direct') { const { messages } = this.state; console.log(`Messages`, messages); // FIND FOR EACH MESSAGE const isExpired = false; const isDeletable = false; const messageType = 'direct'; const selected = false; const preview:any = []; const multiSelectMode = false; const onSelectMessage = () => null; const onSelectMessageUnchecked = () => null; const onShowDetail = () => null; const onShowUserDetails = () => null; // FIXME PAY ATTENTION; ONLY RENDER MESSAGES THAT ARE VISIBLE return ( <>{ messages.map((message: any) => { return message.body && ( )} ) } ); } public renderHeader(conversation: any) { return ( null} onDeleteMessages={() => null} onDeleteContact={() => null} onResetSession={() => null} onCloseOverlay={() => null} onDeleteSelectedMessages={() => null} onArchive={() => null} onMoveToInbox={() => null} onShowSafetyNumber={() => null} onShowAllMedia={() => null} onShowGroupMembers={() => null} onGoBack={() => null} onBlockUser={() => null} onUnblockUser={() => null} onClearNickname={() => null} onChangeNickname={() => null} onCopyPublicKey={() => null} onLeaveGroup={() => null} onAddModerators={() => null} onRemoveModerators={() => null} onInviteFriends={() => null} /> ); } public scrollToUnread() { } public scrollToBottom() { } }