chore: remove meteor.startup from unstar-message (#34018)
Co-authored-by: Tasso <tasso.evangelista@rocket.chat>pull/31400/head^2
parent
fe9be011e6
commit
0d5f7943e5
@ -0,0 +1,33 @@ |
||||
import type { IMessage } from '@rocket.chat/core-typings'; |
||||
import { useToastMessageDispatch, useEndpoint } from '@rocket.chat/ui-contexts'; |
||||
import { useQueryClient, useMutation } from '@tanstack/react-query'; |
||||
import { useTranslation } from 'react-i18next'; |
||||
|
||||
import { toggleStarredMessage } from '../../../lib/mutationEffects/starredMessage'; |
||||
import { roomsQueryKeys } from '../../../lib/queryKeys'; |
||||
|
||||
export const useUnstarMessageMutation = () => { |
||||
const { t } = useTranslation(); |
||||
const dispatchToastMessage = useToastMessageDispatch(); |
||||
|
||||
const queryClient = useQueryClient(); |
||||
|
||||
const unstarMessage = useEndpoint('POST', '/v1/chat.unStarMessage'); |
||||
|
||||
return useMutation({ |
||||
mutationFn: async (message: IMessage) => { |
||||
await unstarMessage({ messageId: message._id }); |
||||
}, |
||||
onSuccess: (_data, message) => { |
||||
toggleStarredMessage(message, false); |
||||
dispatchToastMessage({ type: 'success', message: t('Message_has_been_unstarred') }); |
||||
}, |
||||
onError: (error) => { |
||||
dispatchToastMessage({ type: 'error', message: error }); |
||||
}, |
||||
onSettled: (_data, _error, message) => { |
||||
queryClient.invalidateQueries(roomsQueryKeys.starredMessages(message.rid)); |
||||
queryClient.invalidateQueries(roomsQueryKeys.messageActions(message.rid, message._id)); |
||||
}, |
||||
}); |
||||
}; |
||||
@ -0,0 +1,40 @@ |
||||
import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; |
||||
import { isOmnichannelRoom } from '@rocket.chat/core-typings'; |
||||
import { useSetting } from '@rocket.chat/ui-contexts'; |
||||
import { useEffect } from 'react'; |
||||
|
||||
import { MessageAction } from '../../../../app/ui-utils/client/lib/MessageAction'; |
||||
import { useUnstarMessageMutation } from '../hooks/useUnstarMessageMutation'; |
||||
|
||||
export const useUnstarMessageAction = (message: IMessage, { room, user }: { room: IRoom; user: IUser | undefined }) => { |
||||
const allowStarring = useSetting('Message_AllowStarring'); |
||||
|
||||
const { mutateAsync: unstarMessage } = useUnstarMessageMutation(); |
||||
|
||||
useEffect(() => { |
||||
if (!allowStarring || isOmnichannelRoom(room)) { |
||||
return; |
||||
} |
||||
|
||||
if (!Array.isArray(message.starred) || message.starred.every((star) => star._id !== user?._id)) { |
||||
return; |
||||
} |
||||
|
||||
MessageAction.addButton({ |
||||
id: 'unstar-message', |
||||
icon: 'star', |
||||
label: 'Unstar_Message', |
||||
type: 'interaction', |
||||
context: ['starred', 'message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'], |
||||
async action() { |
||||
await unstarMessage(message); |
||||
}, |
||||
order: 3, |
||||
group: 'menu', |
||||
}); |
||||
|
||||
return () => { |
||||
MessageAction.removeButton('unstar-message'); |
||||
}; |
||||
}, [allowStarring, message, room, unstarMessage, user?._id]); |
||||
}; |
||||
@ -1,39 +0,0 @@ |
||||
import { Meteor } from 'meteor/meteor'; |
||||
|
||||
import { settings } from '../../../app/settings/client'; |
||||
import { MessageAction } from '../../../app/ui-utils/client'; |
||||
import { sdk } from '../../../app/utils/client/lib/SDKClient'; |
||||
import { toggleStarredMessage } from '../../lib/mutationEffects/starredMessage'; |
||||
import { queryClient } from '../../lib/queryClient'; |
||||
import { roomsQueryKeys } from '../../lib/queryKeys'; |
||||
import { dispatchToastMessage } from '../../lib/toast'; |
||||
|
||||
Meteor.startup(() => { |
||||
MessageAction.addButton({ |
||||
id: 'unstar-message', |
||||
icon: 'star', |
||||
label: 'Unstar_Message', |
||||
type: 'interaction', |
||||
context: ['starred', 'message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'], |
||||
async action(_, { message }) { |
||||
try { |
||||
await sdk.rest.post('/v1/chat.unStarMessage', { messageId: message._id }); |
||||
toggleStarredMessage(message, false); |
||||
} catch (error) { |
||||
dispatchToastMessage({ type: 'error', message: error }); |
||||
} finally { |
||||
queryClient.invalidateQueries(roomsQueryKeys.starredMessages(message.rid)); |
||||
queryClient.invalidateQueries(roomsQueryKeys.messageActions(message.rid, message._id)); |
||||
} |
||||
}, |
||||
condition({ message, subscription, user }) { |
||||
if (subscription == null && settings.get('Message_AllowStarring')) { |
||||
return false; |
||||
} |
||||
|
||||
return Boolean(message.starred?.find((star: any) => star._id === user?._id)); |
||||
}, |
||||
order: 3, |
||||
group: 'menu', |
||||
}); |
||||
}); |
||||
Loading…
Reference in new issue