diff --git a/package.json b/package.json index ba735b78..25afb96b 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@hcaptcha/react-hcaptcha": "^0.3.6", "@insertish/vite-plugin-babel-macros": "^1.0.5", "@preact/preset-vite": "^2.0.0", - "@revoltchat/ui": "1.0.76", + "@revoltchat/ui": "1.0.77", "@rollup/plugin-replace": "^2.4.2", "@styled-icons/boxicons-logos": "^10.38.0", "@styled-icons/boxicons-regular": "^10.38.0", diff --git a/src/components/common/messaging/MessageBox.tsx b/src/components/common/messaging/MessageBox.tsx index ec964227..093d03d2 100644 --- a/src/components/common/messaging/MessageBox.tsx +++ b/src/components/common/messaging/MessageBox.tsx @@ -143,56 +143,62 @@ const RE_SED = new RegExp("^s/([^])*/([^])*$"); // Tests for code block delimiters (``` at start of line) const RE_CODE_DELIMITER = new RegExp("^```", "gm"); -const HackAlertThisFileWillBeReplaced = observer(({ channel }: Props) => { - const renderEmoji = useMemo( - () => - memo(({ emoji }: { emoji: string }) => ( - - )), - [], - ); +const HackAlertThisFileWillBeReplaced = observer( + ({ channel, onClose }: Props & { onClose: () => void }) => { + const renderEmoji = useMemo( + () => + memo(({ emoji }: { emoji: string }) => ( + + )), + [], + ); - const emojis: Record = { - default: Object.keys(emojiDictionary), - }; + const emojis: Record = { + default: Object.keys(emojiDictionary).map((id) => ({ id })), + }; - // ! FIXME: also expose typing from component - const categories: any[] = []; + // ! FIXME: also expose typing from component + const categories: any[] = []; - for (const server of state.ordering.orderedServers) { - // ! FIXME: add a separate map on each server for emoji - const list = [...channel.client.emojis.values()] - .filter((emoji) => emoji.parent.id === server._id) - .map((x) => x._id); + for (const server of state.ordering.orderedServers) { + // ! FIXME: add a separate map on each server for emoji + const list = [...channel.client.emojis.values()] + .filter((emoji) => emoji.parent.id === server._id) + .map(({ _id, name }) => ({ id: _id, name })); - if (list.length > 0) { - emojis[server._id] = list; - categories.push({ - id: server._id, - name: server.name, - iconURL: server.generateIconURL({ max_side: 256 }), - }); + if (list.length > 0) { + emojis[server._id] = list; + categories.push({ + id: server._id, + name: server.name, + iconURL: server.generateIconURL({ max_side: 256 }), + }); + } } - } - categories.push({ - id: "default", - name: "Default", - emoji: "smiley", - }); + categories.push({ + id: "default", + name: "Default", + emoji: "smiley", + }); - return ( - { - const v = state.draft.get(channel._id); - state.draft.set(channel._id, `${v ? `${v} ` : ""}:${emoji}:`); - }} - /> - ); -}); + return ( + { + const v = state.draft.get(channel._id); + state.draft.set( + channel._id, + `${v ? `${v} ` : ""}:${emoji}:`, + ); + }} + onClose={onClose} + /> + ); + }, +); // ! FIXME: add to app config and load from app config export const CAN_UPLOAD_AT_ONCE = 5; @@ -209,6 +215,8 @@ export default observer(({ channel }: Props) => { const client = useClient(); const translate = useTranslation(); + const closePicker = useCallback(() => setPicker(false), []); + const renderer = getRenderer(channel); if (!channel.havePermission("SendMessage")) { @@ -559,7 +567,10 @@ export default observer(({ channel }: Props) => { /> {picker && ( - + )} diff --git a/src/lib/ContextMenus.tsx b/src/lib/ContextMenus.tsx index 90e3869c..de991c21 100644 --- a/src/lib/ContextMenus.tsx +++ b/src/lib/ContextMenus.tsx @@ -628,14 +628,26 @@ export default function ContextMenus() { }); } - if ( - user._id !== userId && - userPermissions & UserPermission.SendMessage - ) { - generateAction({ - action: "message_user", - user, - }); + if (user._id !== userId) { + if (userPermissions & UserPermission.SendMessage) { + generateAction({ + action: "message_user", + user, + }); + } else { + elements.push( + + + + + , + ); + } } for (let i = 0; i < actions.length; i++) { diff --git a/src/styles/_context-menu.scss b/src/styles/_context-menu.scss index 6fb154bf..1c0cb384 100644 --- a/src/styles/_context-menu.scss +++ b/src/styles/_context-menu.scss @@ -1,5 +1,5 @@ .preact-context-menu .context-menu { - z-index: 10000; + z-index: 9998; min-width: 190px; font-weight: 500; padding: 6px 8px; diff --git a/yarn.lock b/yarn.lock index c433932b..799719ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2240,9 +2240,9 @@ __metadata: languageName: node linkType: hard -"@revoltchat/ui@npm:1.0.76": - version: 1.0.76 - resolution: "@revoltchat/ui@npm:1.0.76" +"@revoltchat/ui@npm:1.0.77": + version: 1.0.77 + resolution: "@revoltchat/ui@npm:1.0.77" dependencies: "@styled-icons/boxicons-logos": ^10.38.0 "@styled-icons/boxicons-regular": ^10.38.0 @@ -2256,7 +2256,7 @@ __metadata: react-virtuoso: ^2.12.0 peerDependencies: revolt.js: "*" - checksum: b4051c759bd2e350eaab0f28c4d27b8df391086d63d58db14edf0c557d19da6d1f95df20327682086db46c6348ab7c7a0e6c696829e16d18fd341e4fbc8cbaf2 + checksum: ac3cf9787ff11df2156db0e871e48072013d0827b14b5dbcb54e9fe7f8f97daa19325d0fda93ded7487c642df57d6aee998bbe0ccf20bb095b1027f247e47e64 languageName: node linkType: hard @@ -3626,7 +3626,7 @@ __metadata: "@hcaptcha/react-hcaptcha": ^0.3.6 "@insertish/vite-plugin-babel-macros": ^1.0.5 "@preact/preset-vite": ^2.0.0 - "@revoltchat/ui": 1.0.76 + "@revoltchat/ui": 1.0.77 "@rollup/plugin-replace": ^2.4.2 "@styled-icons/boxicons-logos": ^10.38.0 "@styled-icons/boxicons-regular": ^10.38.0