diff --git a/packages/pl-api/lib/entities/status.ts b/packages/pl-api/lib/entities/status.ts index 22ad9bdbf..859624fc6 100644 --- a/packages/pl-api/lib/entities/status.ts +++ b/packages/pl-api/lib/entities/status.ts @@ -36,6 +36,7 @@ const statusEventSchema = v.object({ end_time: v.fallback(v.nullable(datetimeSchema), null), join_mode: v.fallback(v.nullable(v.picklist(['free', 'restricted', 'invite', 'external'])), null), participants_count: v.fallback(v.number(), 0), + participation_request_count: v.fallback(v.number(), 0), location: v.fallback(v.nullable(locationSchema), null), join_state: v.fallback(v.nullable(v.picklist(['pending', 'reject', 'accept'])), null), }); diff --git a/packages/pl-fe/.eslintrc.json b/packages/pl-fe/.eslintrc.json index d8693cc09..7975b0996 100644 --- a/packages/pl-fe/.eslintrc.json +++ b/packages/pl-fe/.eslintrc.json @@ -308,13 +308,7 @@ "@stylistic/member-delimiter-style": "error", "promise/catch-or-return": "error", "react-hooks/rules-of-hooks": "error", - "tailwindcss/classnames-order": [ - "error", - { - "classRegex": "^(base|container|icon|item|list|outer|wrapper)?[c|C]lass(Name)?$", - "config": "tailwind.config.ts" - } - ], + "tailwindcss/classnames-order": "off", "tailwindcss/migration-from-tailwind-2": "error", "tailwindcss/no-custom-classname": "off", diff --git a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx index f421b472d..fd804582f 100644 --- a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx +++ b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx @@ -126,7 +126,7 @@ const DropdownMenuItem = ({ index, item, onClick, autoFocus, onSetTab }: IDropdo onClick={handleClick} onAuxClick={handleAuxClick} onKeyPress={handleItemKeyPress} - target={item.target} + target={typeof item.target === 'string' ? item.target : '_blank'} title={item.text} className={ clsx('mx-2 my-1 flex cursor-pointer items-center rounded-md px-2 py-1.5 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-800 focus:bg-gray-100 focus:text-gray-800 focus:outline-none black:hover:bg-gray-900 black:focus:bg-gray-900 dark:text-gray-300 dark:hover:bg-gray-800 dark:hover:text-gray-200 dark:focus:bg-gray-800 dark:focus:text-gray-200', { diff --git a/packages/pl-fe/src/components/sidebar-navigation.tsx b/packages/pl-fe/src/components/sidebar-navigation.tsx index c6517e620..9fcc7344f 100644 --- a/packages/pl-fe/src/components/sidebar-navigation.tsx +++ b/packages/pl-fe/src/components/sidebar-navigation.tsx @@ -272,7 +272,7 @@ const SidebarNavigation: React.FC = React.memo(({ shrink }) {features.chats && ( = ({ const account = status.account; getOrCreateChatByAccountId(account.id) - .then((chat) => navigate({ to: '/chats/{-$chatId}', params: { chatId: chat.id } })) + .then((chat) => navigate({ to: '/chats/$chatId', params: { chatId: chat.id } })) .catch(() => { }); }; diff --git a/packages/pl-fe/src/components/thumb-navigation.tsx b/packages/pl-fe/src/components/thumb-navigation.tsx index f700662db..4808abd0b 100644 --- a/packages/pl-fe/src/components/thumb-navigation.tsx +++ b/packages/pl-fe/src/components/thumb-navigation.tsx @@ -120,7 +120,7 @@ const ThumbNavigation: React.FC = React.memo((): JSX.Element => { src={require('@phosphor-icons/core/regular/chats-teardrop.svg')} activeSrc={require('@phosphor-icons/core/fill/chats-teardrop-fill.svg')} text={intl.formatMessage(messages.chats)} - to='/chats/{-$chatId}' + to='/chats' exact count={unreadChatsCount} countMax={9} diff --git a/packages/pl-fe/src/features/account/components/header.tsx b/packages/pl-fe/src/features/account/components/header.tsx index 761e3aeae..65e5b23cd 100644 --- a/packages/pl-fe/src/features/account/components/header.tsx +++ b/packages/pl-fe/src/features/account/components/header.tsx @@ -166,7 +166,7 @@ const Header: React.FC = ({ account }) => { toast.error(data?.error); }, onSuccess: (response) => { - navigate({ to: '/chats/{-$chatId}', params: { chatId: response.id } }); + navigate({ to: '/chats/$chatId', params: { chatId: response.id } }); queryClient.invalidateQueries({ queryKey: ['chats', 'search'], }); diff --git a/packages/pl-fe/src/features/chats/components/chat-list-item.tsx b/packages/pl-fe/src/features/chats/components/chat-list-item.tsx index 8451ab7ad..74c324e0b 100644 --- a/packages/pl-fe/src/features/chats/components/chat-list-item.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-list-item.tsx @@ -59,7 +59,7 @@ const ChatListItem: React.FC = ({ chat, onClick }) => { deleteChat.mutate(undefined, { onSuccess() { if (isUsingMainChatPage) { - navigate({ to: '/chats/{-$chatId}' }); + navigate({ to: '/chats' }); } }, }); diff --git a/packages/pl-fe/src/features/chats/components/chat-pane/blankslate.tsx b/packages/pl-fe/src/features/chats/components/chat-pane/blankslate.tsx index 6e46ad099..0e7281994 100644 --- a/packages/pl-fe/src/features/chats/components/chat-pane/blankslate.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-pane/blankslate.tsx @@ -1,10 +1,6 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import Button from 'pl-fe/components/ui/button'; -import Stack from 'pl-fe/components/ui/stack'; -import Text from 'pl-fe/components/ui/text'; - const messages = defineMessages({ title: { id: 'chat_pane.blankslate.title', defaultMessage: 'No messages yet' }, body: { id: 'chat_pane.blankslate.body', defaultMessage: 'Search for someone to chat with.' }, @@ -19,30 +15,21 @@ const Blankslate = ({ onSearch }: IBlankslate) => { const intl = useIntl(); return ( - - - - - {intl.formatMessage(messages.title)} - +
+
+

+ {intl.formatMessage(messages.title)} +

- - {intl.formatMessage(messages.body)} - - +

+ {intl.formatMessage(messages.body)} +

+
-
- -
- - + +
); }; diff --git a/packages/pl-fe/src/features/chats/components/chat-pane/chat-pane.tsx b/packages/pl-fe/src/features/chats/components/chat-pane/chat-pane.tsx index b64692c09..12c9dfab5 100644 --- a/packages/pl-fe/src/features/chats/components/chat-pane/chat-pane.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-pane/chat-pane.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -import Stack from 'pl-fe/components/ui/stack'; import { ChatWidgetScreens, useChatContext } from 'pl-fe/contexts/chat-context'; import { useStatContext } from 'pl-fe/contexts/stat-context'; import { useChats } from 'pl-fe/queries/chats'; @@ -37,9 +36,9 @@ const ChatPane = () => { const renderBody = () => { if (Number(chats?.length) > 0 || showShoutbox || isLoading) { return ( - +
- +
); } else if (chats?.length === 0) { return ( diff --git a/packages/pl-fe/src/features/chats/components/chat-search/chat-search.tsx b/packages/pl-fe/src/features/chats/components/chat-search/chat-search.tsx index 8762527e2..a8a004db8 100644 --- a/packages/pl-fe/src/features/chats/components/chat-search/chat-search.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-search/chat-search.tsx @@ -53,7 +53,7 @@ const ChatSearch: React.FC = ({ isMainPage = false }) => { }, onSuccess: (response) => { if (isMainPage) { - navigate({ to: '/chats/{-$chatId}', params: { chatId: response.id } }); + navigate({ to: '/chats/$chatId', params: { chatId: response.id } }); } else { changeScreen(ChatWidgetScreens.CHAT, response.id); } diff --git a/packages/pl-fe/src/features/chats/components/chat-widget/chat-pane-header.tsx b/packages/pl-fe/src/features/chats/components/chat-widget/chat-pane-header.tsx index 74374327c..5a37dd7f8 100644 --- a/packages/pl-fe/src/features/chats/components/chat-widget/chat-pane-header.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-widget/chat-pane-header.tsx @@ -1,9 +1,6 @@ -import clsx from 'clsx'; import React, { HTMLAttributes } from 'react'; -import HStack from 'pl-fe/components/ui/hstack'; import IconButton from 'pl-fe/components/ui/icon-button'; -import Text from 'pl-fe/components/ui/text'; import { useSettings } from 'pl-fe/stores/settings'; interface IChatPaneHeader { @@ -37,45 +34,40 @@ const ChatPaneHeader = (props: IChatPaneHeader) => { } return ( - +
- - {title} - +
{title}
- {(!demetricator && typeof unreadCount !== 'undefined' && unreadCount > 0) && ( - - + {(!demetricator && unreadCount !== undefined && unreadCount > 0) && ( +
+

({unreadCount}) - +

-
- +
+
)} - +
{secondaryAction ? ( ) : null} - - +
+
); }; diff --git a/packages/pl-fe/src/features/chats/components/chat-widget/headers/chat-search-header.tsx b/packages/pl-fe/src/features/chats/components/chat-widget/headers/chat-search-header.tsx index 28203a7c7..7951f1e67 100644 --- a/packages/pl-fe/src/features/chats/components/chat-widget/headers/chat-search-header.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-widget/headers/chat-search-header.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import HStack from 'pl-fe/components/ui/hstack'; import Icon from 'pl-fe/components/ui/icon'; import Text from 'pl-fe/components/ui/text'; import { ChatWidgetScreens, useChatContext } from 'pl-fe/contexts/chat-context'; @@ -21,7 +20,7 @@ const ChatSearchHeader = () => { +
} isOpen={isOpen} isToggleable={false} diff --git a/packages/pl-fe/src/features/chats/components/chat-page/chat-page.tsx b/packages/pl-fe/src/features/chats/components/chats-page/chats-page.tsx similarity index 56% rename from packages/pl-fe/src/features/chats/components/chat-page/chat-page.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/chats-page.tsx index 9139254c8..8b9cc0ed4 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/chat-page.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/chats-page.tsx @@ -3,18 +3,15 @@ import clsx from 'clsx'; import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'; import Stack from 'pl-fe/components/ui/stack'; -import { chatRoute, chatsNewRoute, chatsSettingsRoute, shoutboxRoute } from 'pl-fe/features/ui/router'; +import { chatsEmptyRoute } from 'pl-fe/features/ui/router'; +import { useChats } from 'pl-fe/queries/chats'; -import ChatPageSidebar from './components/chat-page-sidebar'; +import ChatsPageSidebar from './components/chats-page-sidebar'; -const ChatPage: React.FC = () => { - const chatMatch = useMatch({ from: chatRoute.id, shouldThrow: false }); - const onChatRoute = !!chatMatch?.params?.chatId; - const onNewRoute = !!useMatch({ from: chatsNewRoute.id, shouldThrow: false }); - const onSettingsRoute = !!useMatch({ from: chatsSettingsRoute.id, shouldThrow: false }); - const onShoutboxRoute = !!useMatch({ from: shoutboxRoute.id, shouldThrow: false }); +const ChatsPage: React.FC = () => { + const { chatsQuery: { data: chats } } = useChats(); - const isSidebarHidden = onChatRoute || onNewRoute || onSettingsRoute || onShoutboxRoute; + const isSidebarHidden = !useMatch({ from: chatsEmptyRoute.id, shouldThrow: false }) || chats?.length === 0; const containerRef = useRef(null); const [height, setHeight] = useState('100%'); @@ -49,18 +46,18 @@ const ChatPage: React.FC = () => {
- + { ); }; -export { ChatPage as default }; +export { ChatsPage as default }; diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/blankslate-empty.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/blankslate-empty.tsx similarity index 100% rename from packages/pl-fe/src/features/chats/components/chat-page/components/blankslate-empty.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/blankslate-empty.tsx diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/blankslate-with-chats.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/blankslate-with-chats.tsx similarity index 100% rename from packages/pl-fe/src/features/chats/components/chat-page/components/blankslate-with-chats.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/blankslate-with-chats.tsx diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-chat.tsx similarity index 90% rename from packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-chat.tsx index 28524f2eb..864c8526d 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-main.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-chat.tsx @@ -9,18 +9,14 @@ import IconButton from 'pl-fe/components/ui/icon-button'; import Stack from 'pl-fe/components/ui/stack'; import Text from 'pl-fe/components/ui/text'; import VerificationBadge from 'pl-fe/components/verification-badge'; -import { useChatContext } from 'pl-fe/contexts/chat-context'; import { chatRoute } from 'pl-fe/features/ui/router'; import { useFeatures } from 'pl-fe/hooks/use-features'; import { useUnblockAccountMutation, useRelationshipQuery } from 'pl-fe/queries/accounts/use-relationship'; -import { useChat, useChatActions, useChats } from 'pl-fe/queries/chats'; +import { useChat, useChatActions } from 'pl-fe/queries/chats'; import { useModalsActions } from 'pl-fe/stores/modals'; import Chat from '../../chat'; -import BlankslateEmpty from './blankslate-empty'; -import BlankslateWithChats from './blankslate-with-chats'; - const messages = defineMessages({ blockMessage: { id: 'chat_settings.block.message', defaultMessage: 'Blocking will prevent this profile from direct messaging you and viewing your content. You can unblock later.' }, blockHeading: { id: 'chat_settings.block.heading', defaultMessage: 'Block @{acct}' }, @@ -36,7 +32,7 @@ const messages = defineMessages({ leaveChat: { id: 'chat_settings.options.leave_chat', defaultMessage: 'Leave chat' }, }); -const ChatPageMain = () => { +const ChatsPageChat = () => { const intl = useIntl(); const features = useFeatures(); const navigate = useNavigate(); @@ -45,8 +41,6 @@ const ChatPageMain = () => { const { openModal } = useModalsActions(); const { data: chat } = useChat(chatId); - const { currentChatId } = useChatContext(); - const { chatsQuery: { data: chats, isLoading } } = useChats(); const { mutate: unblockAccount } = useUnblockAccountMutation(chat?.account.id!); @@ -80,25 +74,13 @@ const ChatPageMain = () => { onConfirm: () => { deleteChat.mutate(undefined, { onSuccess() { - navigate({ to: '/chats/{-$chatId}' }); + navigate({ to: '/chats' }); }, }); }, }); }; - if (isLoading) { - return null; - } - - if (!currentChatId && chats && chats.length > 0) { - return ; - } - - if (!currentChatId) { - return ; - } - if (!chat) { return null; } @@ -171,4 +153,4 @@ const ChatPageMain = () => { ); }; -export { ChatPageMain as default }; +export { ChatsPageChat as default }; diff --git a/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-empty.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-empty.tsx new file mode 100644 index 000000000..d0188cf4a --- /dev/null +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-empty.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +import { useChats } from 'pl-fe/queries/chats'; + +import BlankslateEmpty from './blankslate-empty'; +import BlankslateWithChats from './blankslate-with-chats'; + +const ChatsPageEmpty = () => { + const { chatsQuery: { data: chats, isLoading } } = useChats(); + + if (isLoading) { + return null; + } + + if (chats && chats.length > 0) { + return ; + } + + return ; +}; + +export { ChatsPageEmpty as default }; diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-new.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-new.tsx similarity index 85% rename from packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-new.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-new.tsx index 3681f1867..049fadd06 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-new.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-new.tsx @@ -13,11 +13,8 @@ const messages = defineMessages({ title: { id: 'chat.new_message.title', defaultMessage: 'New Message' }, }); -interface IChatPageNew { -} - /** New message form to create a chat. */ -const ChatPageNew: React.FC = () => { +const ChatsPageNew: React.FC = () => { const intl = useIntl(); const navigate = useNavigate(); @@ -28,7 +25,7 @@ const ChatPageNew: React.FC = () => { navigate({ to: '/chats/{-$chatId}' })} + onClick={() => navigate({ to: '/chats' })} /> @@ -40,4 +37,4 @@ const ChatPageNew: React.FC = () => { ); }; -export { ChatPageNew as default }; +export { ChatsPageNew as default }; diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-settings.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-settings.tsx similarity index 96% rename from packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-settings.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-settings.tsx index 08c35f1de..b09dbb50a 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-settings.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-settings.tsx @@ -30,7 +30,7 @@ const messages = defineMessages({ submit: { id: 'chat.page_settings.submit', defaultMessage: 'Save' }, }); -const ChatPageSettings = () => { +const ChatsPageSettings = () => { const { account } = useOwnAccount(); const intl = useIntl(); const navigate = useNavigate(); @@ -58,7 +58,7 @@ const ChatPageSettings = () => { navigate({ to: '/chats/{-$chatId}' })} + onClick={() => navigate({ to: '/chats' })} /> @@ -98,4 +98,4 @@ const ChatPageSettings = () => { ); }; -export { ChatPageSettings as default }; +export { ChatsPageSettings as default }; diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-shoutbox.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-shoutbox.tsx similarity index 92% rename from packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-shoutbox.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-shoutbox.tsx index 67d6fe7c6..6c4c659ef 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-shoutbox.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-shoutbox.tsx @@ -12,7 +12,7 @@ import { usePlFeConfig } from 'pl-fe/hooks/use-pl-fe-config'; import Shoutbox from '../../shoutbox'; -const ChatPageShoutbox = () => { +const ChatsPageShoutbox = () => { const navigate = useNavigate(); const instance = useInstance(); const { logo } = usePlFeConfig(); @@ -25,7 +25,7 @@ const ChatPageShoutbox = () => { navigate({ to: '/chats/{-$chatId}' })} + onClick={() => navigate({ to: '/chats' })} /> @@ -48,4 +48,4 @@ const ChatPageShoutbox = () => { ); }; -export { ChatPageShoutbox as default }; +export { ChatsPageShoutbox as default }; diff --git a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-sidebar.tsx b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-sidebar.tsx similarity index 92% rename from packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-sidebar.tsx rename to packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-sidebar.tsx index 6b397e9f7..651496224 100644 --- a/packages/pl-fe/src/features/chats/components/chat-page/components/chat-page-sidebar.tsx +++ b/packages/pl-fe/src/features/chats/components/chats-page/components/chats-page-sidebar.tsx @@ -15,7 +15,7 @@ const messages = defineMessages({ title: { id: 'column.chats', defaultMessage: 'Chats' }, }); -const ChatPageSidebar = () => { +const ChatsPageSidebar = () => { const intl = useIntl(); const navigate = useNavigate(); @@ -23,7 +23,7 @@ const ChatPageSidebar = () => { if (chat === 'shoutbox') { navigate({ to: '/chats/shoutbox' }); } else { - navigate({ to: '/chats/{-$chatId}', params: { chatId: chat.id } }); + navigate({ to: '/chats/$chatId', params: { chatId: chat.id } }); } }; @@ -64,4 +64,4 @@ const ChatPageSidebar = () => { ); }; -export { ChatPageSidebar as default }; +export { ChatsPageSidebar as default }; diff --git a/packages/pl-fe/src/features/chats/components/ui/pane.tsx b/packages/pl-fe/src/features/chats/components/ui/pane.tsx index 74f9ce4fb..e358a9192 100644 --- a/packages/pl-fe/src/features/chats/components/ui/pane.tsx +++ b/packages/pl-fe/src/features/chats/components/ui/pane.tsx @@ -11,10 +11,7 @@ interface IPane { /** Chat pane UI component for desktop. */ const Pane: React.FC = ({ isOpen = false, children }) => (
{children} diff --git a/packages/pl-fe/src/features/compose-event/tabs/manage-pending-participants.tsx b/packages/pl-fe/src/features/compose-event/tabs/manage-pending-participants.tsx index 1f246e4ac..a9f2f5ce7 100644 --- a/packages/pl-fe/src/features/compose-event/tabs/manage-pending-participants.tsx +++ b/packages/pl-fe/src/features/compose-event/tabs/manage-pending-participants.tsx @@ -8,10 +8,15 @@ import Spinner from 'pl-fe/components/ui/spinner'; import Stack from 'pl-fe/components/ui/stack'; import AccountContainer from 'pl-fe/containers/account-container'; import { useAcceptEventParticipationRequestMutation, useEventParticipationRequests, useRejectEventParticipationRequestMutation } from 'pl-fe/queries/events/use-event-participation-requests'; +import toast from 'pl-fe/toast'; const messages = defineMessages({ authorize: { id: 'compose_event.participation_requests.authorize', defaultMessage: 'Authorize' }, + authorizeSuccess: { id: 'compose_event.participation_requests.authorize.success', defaultMessage: 'Event participation request authorized successfully' }, + authorizeFail: { id: 'compose_event.participation_requests.authorize.fail', defaultMessage: 'Failed to authorize event participation request' }, reject: { id: 'compose_event.participation_requests.reject', defaultMessage: 'Reject' }, + rejectSuccess: { id: 'compose_event.participation_requests.reject.success', defaultMessage: 'Event participation request rejected successfully' }, + rejectFail: { id: 'compose_event.participation_requests.reject.fail', defaultMessage: 'Failed to reject event participation request' }, }); interface IAccount { @@ -36,13 +41,27 @@ const Account: React.FC = ({ eventId, id, participationMessage }) => { theme='secondary' size='sm' text={intl.formatMessage(messages.authorize)} - onClick={() => acceptEventParticipationRequest()} + onClick={() => acceptEventParticipationRequest(undefined, { + onSuccess: () => { + toast.success(messages.authorizeSuccess); + }, + onError: () => { + toast.error(messages.authorizeFail); + }, + })} />