From eeab643dc30d547183d40db42e1cbed29969cb1c Mon Sep 17 00:00:00 2001 From: rjmacarthy Date: Mon, 30 Jan 2023 19:46:31 +0000 Subject: [PATCH] Add link to user admin page in messages dropdown for admin users Fix potential undefined data user revert type change next-auth --- website/public/locales/en/message.json | 3 ++- .../components/Messages/MessageTableEntry.tsx | 22 ++++++++++++++----- website/src/types/Conversation.ts | 1 + 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/website/public/locales/en/message.json b/website/public/locales/en/message.json index e16e3c0a..d506ce80 100644 --- a/website/public/locales/en/message.json +++ b/website/public/locales/en/message.json @@ -9,5 +9,6 @@ "report_placeholder": "Why should this message be reviewed?", "report_title": "Report", "send_report": "Send", - "submit_labels": "Submit" + "submit_labels": "Submit", + "view_user": "View user" } diff --git a/website/src/components/Messages/MessageTableEntry.tsx b/website/src/components/Messages/MessageTableEntry.tsx index 75e1ad10..ef34f612 100644 --- a/website/src/components/Messages/MessageTableEntry.tsx +++ b/website/src/components/Messages/MessageTableEntry.tsx @@ -14,8 +14,9 @@ import { useDisclosure, } from "@chakra-ui/react"; import { boolean } from "boolean"; -import { ClipboardList, Flag, MessageSquare, MoreHorizontal } from "lucide-react"; +import { ClipboardList, Edit, Flag, MessageSquare, MoreHorizontal } from "lucide-react"; import { useRouter } from "next/router"; +import { useSession } from "next-auth/react"; import { useTranslation } from "next-i18next"; import { useCallback, useEffect, useMemo, useState } from "react"; import { LabelMessagePopup } from "src/components/Messages/LabelPopup"; @@ -109,7 +110,7 @@ export function MessageTableEntry({ message, enabled, highlight }: MessageTableE userEmoji={emojiState.user_emojis} onLabel={showLabelPopup} onReport={showReportPopup} - messageId={message.id} + message={message} /> @@ -142,16 +143,17 @@ const MessageActions = ({ userEmoji, onLabel, onReport, - messageId, + message, }: { react: (emoji: string, state: boolean) => void; userEmoji: string[]; onLabel: () => void; onReport: () => void; - messageId: string; + message: Message; }) => { const { t } = useTranslation("message"); - + const { data } = useSession() || {}; + const role = data?.user?.role; return ( @@ -173,9 +175,17 @@ const MessageActions = ({ {t("report_action")} - }> + }> {t("open_new_tab_action")} + {role === "admin" && ( + <> + + }> + {t("view_user")} + + + )} ); diff --git a/website/src/types/Conversation.ts b/website/src/types/Conversation.ts index 8b258a25..5eb86351 100644 --- a/website/src/types/Conversation.ts +++ b/website/src/types/Conversation.ts @@ -18,6 +18,7 @@ export interface Message extends MessageEmojis { created_date: string; // iso date string parent_id: string; frontend_message_id?: string; + user_id: string; } export interface Conversation {