You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/components/session/menu/ConversationHeaderMenu.tsx

87 lines
2.8 KiB
TypeScript

import React from 'react';
import { animation, Menu } from 'react-contexify';
import {
getAddModeratorsMenuItem,
getBlockMenuItem,
getChangeNicknameMenuItem,
getClearNicknameMenuItem,
getCopyMenuItem,
getDeleteContactMenuItem,
getDeleteMessagesMenuItem,
getDisappearingMenuItem,
getInviteContactMenuItem,
getLeaveGroupMenuItem,
5 years ago
getMarkAllReadMenuItem,
getNotificationForConvoMenuItem,
getPinConversationMenuItem,
getRemoveModeratorsMenuItem,
getUpdateGroupNameMenuItem,
} from './Menu';
import _ from 'lodash';
import { ConversationNotificationSettingType } from '../../../models/conversation';
export type PropsConversationHeaderMenu = {
conversationId: string;
triggerId: string;
isMe: boolean;
isPublic: boolean;
isKickedFromGroup: boolean;
left: boolean;
isGroup: boolean;
weAreAdmin: boolean;
currentNotificationSetting: ConversationNotificationSettingType;
isPrivate: boolean;
isBlocked: boolean;
hasNickname: boolean;
};
const ConversationHeaderMenu = (props: PropsConversationHeaderMenu) => {
const {
conversationId,
triggerId,
isMe,
isPublic,
isGroup,
isKickedFromGroup,
weAreAdmin,
isBlocked,
isPrivate,
left,
hasNickname,
currentNotificationSetting,
} = props;
return (
<Menu id={triggerId} animation={animation.fade}>
{getDisappearingMenuItem(isPublic, isKickedFromGroup, left, isBlocked, conversationId)}
Session 1.7.2 (#1932) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable sending on enter while composing (#1909) Fixes #1899 #1497 * Speedup body update composition box (#1911) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * move drafts outside of redux to speedup body message writing * Ask confirm before delete account (#1910) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * use timestamp offset in for messages storage requests (#1892) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fix today for translated date break (#1915) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fixs date break translations of today etc Relates #1913 * Fix video play lightbox autostart (#1920) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * Fix video autoplay start when not initialized Relates #1904 * do not overwrite sent_at with network time for synced messages (#1921) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Out of sync message sync (#1923) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * Fix select colors for sent messages and link text not selectable (#1924) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * fix selection colors for sent messages and make link selectable Relates #1922 * Cleanup redux store (#1925) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * Unsend messages (only message hashes saving for now is enabled) (#1891) * WIP unsending message. * retrieving message with hash from db on receiving unsend request. * outgoing messages hashes updated on message sent success * unsend messaging * unsend message - deleting messages and marking as isDeleted. * add msg hash to unprocessed records. * Message unsending working for closed groups provided the message has been updated with a hash from server. * adding 2-stage confirmation modal for message deletion * adding rendering of removed incoming messages, disabling rendering of unsent outgoing messages in coversation screen. * Adding logging * debugging. * outgoing only saved for sync message instead of regular message. * deleting locally * adding post unsend deletioncode. * starting adding feature flag. * Added feature flag. * addding mandatory messageHash pollling pipeline methods swarm polling. * Conversation list item message preview showing deletion placeholder text if deleted. * add condition to drop unsend requests not send by message author * refactoring deleteMessage. Saving response hash for closed group message sending * running yarn ready * removing logging. * Adding PR fixes * Minor changes and running yarn ready * fix typo * Moved feature flag to lokiFeatureFlags. Fixing linting errors Co-authored-by: Audric Ackermann <audric@loki.network> * fix reply for incoming messages (#1930) * bump to 1.7.2 (#1926) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * bump to 1.7.2 * Session 1.7.1 (#1908) (#1931) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable unsend request on the UI for now (#1934) * disable unsend request on the UI too * do not stop propagation of events for message ctx menu Co-authored-by: Warrick <wcor690@aucklanduni.ac.nz>
4 years ago
{getNotificationForConvoMenuItem({
isKickedFromGroup,
left,
isBlocked,
Session 1.7.2 (#1932) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable sending on enter while composing (#1909) Fixes #1899 #1497 * Speedup body update composition box (#1911) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * move drafts outside of redux to speedup body message writing * Ask confirm before delete account (#1910) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * use timestamp offset in for messages storage requests (#1892) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fix today for translated date break (#1915) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fixs date break translations of today etc Relates #1913 * Fix video play lightbox autostart (#1920) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * Fix video autoplay start when not initialized Relates #1904 * do not overwrite sent_at with network time for synced messages (#1921) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Out of sync message sync (#1923) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * Fix select colors for sent messages and link text not selectable (#1924) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * fix selection colors for sent messages and make link selectable Relates #1922 * Cleanup redux store (#1925) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * Unsend messages (only message hashes saving for now is enabled) (#1891) * WIP unsending message. * retrieving message with hash from db on receiving unsend request. * outgoing messages hashes updated on message sent success * unsend messaging * unsend message - deleting messages and marking as isDeleted. * add msg hash to unprocessed records. * Message unsending working for closed groups provided the message has been updated with a hash from server. * adding 2-stage confirmation modal for message deletion * adding rendering of removed incoming messages, disabling rendering of unsent outgoing messages in coversation screen. * Adding logging * debugging. * outgoing only saved for sync message instead of regular message. * deleting locally * adding post unsend deletioncode. * starting adding feature flag. * Added feature flag. * addding mandatory messageHash pollling pipeline methods swarm polling. * Conversation list item message preview showing deletion placeholder text if deleted. * add condition to drop unsend requests not send by message author * refactoring deleteMessage. Saving response hash for closed group message sending * running yarn ready * removing logging. * Adding PR fixes * Minor changes and running yarn ready * fix typo * Moved feature flag to lokiFeatureFlags. Fixing linting errors Co-authored-by: Audric Ackermann <audric@loki.network> * fix reply for incoming messages (#1930) * bump to 1.7.2 (#1926) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * bump to 1.7.2 * Session 1.7.1 (#1908) (#1931) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable unsend request on the UI for now (#1934) * disable unsend request on the UI too * do not stop propagation of events for message ctx menu Co-authored-by: Warrick <wcor690@aucklanduni.ac.nz>
4 years ago
isPrivate,
currentNotificationSetting,
Session 1.7.2 (#1932) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable sending on enter while composing (#1909) Fixes #1899 #1497 * Speedup body update composition box (#1911) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * move drafts outside of redux to speedup body message writing * Ask confirm before delete account (#1910) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * use timestamp offset in for messages storage requests (#1892) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fix today for translated date break (#1915) * add using timestamp offset from network for sending part1 * remove MessageController as we now rely on the database * fix tests for message sending overriding timestamp * Fixs date break translations of today etc Relates #1913 * Fix video play lightbox autostart (#1920) * disable sending on enter while composing Fixes #1899 #1497 * ask confirmation before deleting account * fix app start delete db when passowrd error * fix double dialog issue with delete account * fixup login screen * Fix video autoplay start when not initialized Relates #1904 * do not overwrite sent_at with network time for synced messages (#1921) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Out of sync message sync (#1923) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * Fix select colors for sent messages and link text not selectable (#1924) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent * Allow scrolling in mentioning people in composition box Relates #1849 * fix selection colors for sent messages and make link selectable Relates #1922 * Cleanup redux store (#1925) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * Unsend messages (only message hashes saving for now is enabled) (#1891) * WIP unsending message. * retrieving message with hash from db on receiving unsend request. * outgoing messages hashes updated on message sent success * unsend messaging * unsend message - deleting messages and marking as isDeleted. * add msg hash to unprocessed records. * Message unsending working for closed groups provided the message has been updated with a hash from server. * adding 2-stage confirmation modal for message deletion * adding rendering of removed incoming messages, disabling rendering of unsent outgoing messages in coversation screen. * Adding logging * debugging. * outgoing only saved for sync message instead of regular message. * deleting locally * adding post unsend deletioncode. * starting adding feature flag. * Added feature flag. * addding mandatory messageHash pollling pipeline methods swarm polling. * Conversation list item message preview showing deletion placeholder text if deleted. * add condition to drop unsend requests not send by message author * refactoring deleteMessage. Saving response hash for closed group message sending * running yarn ready * removing logging. * Adding PR fixes * Minor changes and running yarn ready * fix typo * Moved feature flag to lokiFeatureFlags. Fixing linting errors Co-authored-by: Audric Ackermann <audric@loki.network> * fix reply for incoming messages (#1930) * bump to 1.7.2 (#1926) * do not consider expire timer update unread messages #1881 * cleanup conversation props in redux to only have what cannot be derived * fix app not starting without the await on convo creation * cleanup props of message model * bump to 1.7.2 * Session 1.7.1 (#1908) (#1931) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * Fix path building (#1903) * Keep line breaks when message has some new lines Relates #1758 and #1898 and #1901 * fix link preview cropped when received * make sure we fetch from seed if we end up with not enough snodes * try to download recent previews if we just trusted a user * throw if we need to rebuild path while fetching snode list from snode * fixup no refecthing of snode list while we are fetching them already * added test for fetch from db or seed * fetch snode list from snode every hour also make sure the path building does not try to get more snodes. It just throws * do not drop a path if an opengroup room is down and we get errors back * do not throw an error if the snode in error in not in any path * fix tests * bump to v1.7.11 * disable unsend request on the UI for now (#1934) * disable unsend request on the UI too * do not stop propagation of events for message ctx menu Co-authored-by: Warrick <wcor690@aucklanduni.ac.nz>
4 years ago
conversationId,
})}
{getPinConversationMenuItem(conversationId)}
{getBlockMenuItem(isMe, isPrivate, isBlocked, conversationId)}
{getCopyMenuItem(isPublic, isGroup, conversationId)}
{getMarkAllReadMenuItem(conversationId)}
{getChangeNicknameMenuItem(isMe, isGroup, conversationId)}
{getClearNicknameMenuItem(isMe, hasNickname, isGroup, conversationId)}
{getDeleteMessagesMenuItem(isPublic, conversationId)}
{getAddModeratorsMenuItem(weAreAdmin, isPublic, isKickedFromGroup, conversationId)}
{getRemoveModeratorsMenuItem(weAreAdmin, isPublic, isKickedFromGroup, conversationId)}
{getUpdateGroupNameMenuItem(weAreAdmin, isKickedFromGroup, left, conversationId)}
{getLeaveGroupMenuItem(isKickedFromGroup, left, isGroup, isPublic, conversationId)}
{/* TODO: add delete group */}
{getInviteContactMenuItem(isGroup, isPublic, conversationId)}
{getDeleteContactMenuItem(isMe, isGroup, isPublic, left, isKickedFromGroup, conversationId)}
</Menu>
);
};
function propsAreEqual(prev: PropsConversationHeaderMenu, next: PropsConversationHeaderMenu) {
return _.isEqual(prev, next);
}
export const MemoConversationHeaderMenu = React.memo(ConversationHeaderMenu, propsAreEqual);