From 07c208362277982bbfc1759c1aa5331f8f8d05cf Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:01:45 +0530 Subject: [PATCH] add open message button in notifications --- src/app/pages/client/inbox/Notifications.tsx | 57 +++++++++++++------- src/app/styles/ContainerColor.css.ts | 4 +- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/app/pages/client/inbox/Notifications.tsx b/src/app/pages/client/inbox/Notifications.tsx index 10e0cbc0..a5a61627 100644 --- a/src/app/pages/client/inbox/Notifications.tsx +++ b/src/app/pages/client/inbox/Notifications.tsx @@ -1,5 +1,5 @@ /* eslint-disable react/destructuring-assignment */ -import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import React, { MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Avatar, AvatarFallback, @@ -55,6 +55,7 @@ import { ImageViewer } from '../../../components/image-viewer'; import { GetContentCallback, MessageEvent, StateEvent } from '../../../../types/matrix/room'; import { useMatrixEventRenderer } from '../../../hooks/useMatrixEventRenderer'; import * as customHtmlCss from '../../../styles/CustomHtml.css'; +import { useRoomNavigate } from '../../../hooks/useRoomNavigate'; type RoomNotificationsGroup = { roomId: string; @@ -155,12 +156,14 @@ type RoomNotificationsGroupProps = { notifications: INotification[]; mediaAutoLoad?: boolean; urlPreview?: boolean; + onOpen: (roomId: string, eventId: string) => void; }; function RoomNotificationsGroupComp({ room, notifications, mediaAutoLoad, urlPreview, + onOpen, }: RoomNotificationsGroupProps) { const mx = useMatrixClient(); const htmlReactParserOptions = useMemo( @@ -257,11 +260,17 @@ function RoomNotificationsGroupComp({ } ); + const handleOpenClick: MouseEventHandler = (evt) => { + const eventId = evt.currentTarget.getAttribute('data-event-id'); + if (!eventId) return; + onOpen(room.roomId, eventId); + }; + return ( - <> +
- +
- + {notifications.map((notification) => { const { event } = notification; @@ -293,8 +302,8 @@ function RoomNotificationsGroupComp({ } > - - - - {displayName} - - - + + + + + {displayName} + + + + + Open + + {renderMatrixEvent(event.type, false, event, displayName, getContent)} @@ -334,7 +353,7 @@ function RoomNotificationsGroupComp({ ); })} - + ); } @@ -350,6 +369,8 @@ export function Notifications() { const mx = useMatrixClient(); const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad'); const [urlPreview] = useSetting(settingsAtom, 'urlPreview'); + + const { navigateRoom } = useRoomNavigate(); const [searchParams, setSearchParams] = useSearchParams(); const notificationsSearchParams = getNotificationsSearchParams(searchParams); const scrollRef = useRef(null); @@ -460,7 +481,7 @@ export function Notifications() { > virtualizer.scrollToOffset(0)} - variant="Secondary" + variant="SurfaceVariant" radii="Pill" outlined size="300" @@ -485,10 +506,9 @@ export function Notifications() { ); @@ -509,9 +530,9 @@ export function Notifications() { {timelineState.status === AsyncStatus.Loading && ( - + {[...Array(8).keys()].map((key) => ( - + ))} )} diff --git a/src/app/styles/ContainerColor.css.ts b/src/app/styles/ContainerColor.css.ts index 72bd58a2..cb1f933d 100644 --- a/src/app/styles/ContainerColor.css.ts +++ b/src/app/styles/ContainerColor.css.ts @@ -1,5 +1,5 @@ import { ComplexStyleRule } from '@vanilla-extract/css'; -import { recipe } from '@vanilla-extract/recipes'; +import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; import { ContainerColor as TContainerColor, DefaultReset, color } from 'folds'; const getVariant = (variant: TContainerColor): ComplexStyleRule => ({ @@ -29,3 +29,5 @@ export const ContainerColor = recipe({ variant: 'Surface', }, }); + +export type ContainerColorVariants = RecipeVariants;