Files
team/apps/mobile/hooks/useUpdateLastMessageInChannelList.ts
Nikhil KothariandGitHub d8b2a457a0 fix: minor fixes on mobile app design (#1533)
* fix(mobile): show "just now" when message is sent now

* fix(mobile); show all DMs

* fix(mobile): fix styles on DM List

* fix: do not clear last message details on realtime events

* fix(mobile): make reaction buttons bigger with Haptic Feedback

* fix(mobile): increase size of chat input
2025-03-25 23:23:28 +05:30

70 lines
2.7 KiB
TypeScript

import { ChannelList } from "@raven/types/common/ChannelListItem"
import { useSWRConfig } from "frappe-react-sdk"
export const useUpdateLastMessageInChannelList = () => {
const { mutate: globalMutate } = useSWRConfig()
const updateLastMessageInChannelList = async (channelID: string, lastMessageTimestamp: string, lastMessageDetails?: any) => {
globalMutate(`channel_list`, async (channelList?: { message: ChannelList }) => {
if (channelList) {
let isChannelPresent = channelList.message.channels.find((channel) => channel.name === channelID)
let isMainChannel = isChannelPresent ? true : false
let isDMChannel = false
if (!isChannelPresent) {
isChannelPresent = channelList.message.dm_channels.find((channel) => channel.name === channelID)
isDMChannel = isChannelPresent ? true : false
}
if (isChannelPresent) {
// Update the last message details in the channel list
let newChannels = channelList.message.channels
let newDMChannels = channelList.message.dm_channels
if (isMainChannel) {
newChannels = newChannels.map((channel) => {
if (channel.name === channelID) {
return {
...channel,
last_message_timestamp: lastMessageTimestamp,
}
}
return channel
})
}
if (isDMChannel) {
newDMChannels = newDMChannels.map((channel) => {
if (channel.name === channelID) {
return {
...channel,
last_message_timestamp: lastMessageTimestamp,
last_message_details: lastMessageDetails || channel.last_message_details
}
}
return channel
})
}
return {
message: {
channels: newChannels,
dm_channels: newDMChannels,
}
}
}
}
// If nothing changed, return the same channel list
return channelList
}, {
revalidate: false
})
}
return { updateLastMessageInChannelList }
}