Page MenuHomePhorge

D3809.1768416310.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D3809.1768416310.diff

diff --git a/web/chat/thread-menu.react.js b/web/chat/thread-menu.react.js
--- a/web/chat/thread-menu.react.js
+++ b/web/chat/thread-menu.react.js
@@ -26,6 +26,7 @@
import MenuItem from '../components/menu-item.react';
import Menu from '../components/menu.react';
import SidebarListModal from '../modals/chat/sidebar-list-modal.react';
+import SidebarPromoteModal from '../modals/chat/sidebar-promote-modal.react';
import { useModalContext } from '../modals/modal-provider.react';
import ConfirmLeaveThreadModal from '../modals/threads/confirm-leave-thread-modal.react';
import ThreadMembersModal from '../modals/threads/members/members-modal.react';
@@ -196,16 +197,28 @@
);
}, [onClickLeaveThread, threadInfo]);
+ const onClickPromoteSidebarToThread = React.useCallback(
+ () =>
+ pushModal(
+ <SidebarPromoteModal
+ threadInfo={threadInfo}
+ onClose={popModal}
+ onConfirm={onPromoteSidebar}
+ />,
+ ),
+ [pushModal, threadInfo, popModal, onPromoteSidebar],
+ );
+
const promoteSidebar = React.useMemo(() => {
return (
<MenuItem
key="promote"
text="Promote Thread"
icon="message-square-lines"
- onClick={onPromoteSidebar}
+ onClick={onClickPromoteSidebarToThread}
/>
);
- }, [onPromoteSidebar]);
+ }, [onClickPromoteSidebarToThread]);
const menuItems = React.useMemo(() => {
const notificationsItem = (
diff --git a/web/modals/chat/sidebar-promote-modal.react.js b/web/modals/chat/sidebar-promote-modal.react.js
new file mode 100644
--- /dev/null
+++ b/web/modals/chat/sidebar-promote-modal.react.js
@@ -0,0 +1,42 @@
+// @flow
+
+import * as React from 'react';
+
+import type { ThreadInfo } from 'lib/types/thread-types';
+
+import Button from '../../components/button.react';
+import Modal from '../modal.react';
+
+type Props = {
+ +onClose: () => void,
+ +onConfirm: () => void,
+ +threadInfo: ThreadInfo,
+};
+
+function SidebarPromoteModal(props: Props): React.Node {
+ const { threadInfo, onClose, onConfirm } = props;
+ const { uiName } = threadInfo;
+
+ const handleConfirm = React.useCallback(() => {
+ onConfirm();
+ onClose();
+ }, [onClose, onConfirm]);
+
+ return (
+ <Modal name="Promote Thread" icon="warning-circle" onClose={onClose}>
+ <div>
+ <p>{`Are you sure you want to promote "${uiName}"?
+ "This promoting a sidebar to a full thread can't be undone."`}</p>
+
+ <Button onClick={handleConfirm} type="submit" variant="danger">
+ Promote to Full Thread
+ </Button>
+ <Button onClick={onClose} type="submit" variant="secondary">
+ Cancel
+ </Button>
+ </div>
+ </Modal>
+ );
+}
+
+export default SidebarPromoteModal;

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 14, 6:45 PM (11 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5933423
Default Alt Text
D3809.1768416310.diff (2 KB)

Event Timeline