Skip to content

Commit

Permalink
Merge pull request #1291 from The-Commit-Company/develop
Browse files Browse the repository at this point in the history
Merging develop into main
  • Loading branch information
nikkothari22 authored Jan 31, 2025
2 parents 1a26d40 + 8702bdf commit f3a6d3f
Show file tree
Hide file tree
Showing 8 changed files with 243 additions and 141 deletions.
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@emoji-mart/react": "^1.1.1",
"@radix-ui/themes": "3.1.6",
"@radix-ui/themes": "3.2.0",
"@tiptap/extension-code-block-lowlight": "2.5.9",
"@tiptap/extension-highlight": "2.5.9",
"@tiptap/extension-image": "2.5.9",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,12 @@ export const DMChannelHeader = ({ channelData }: DMChannelHeaderProps) => {

const isDesktop = useIsDesktop()

const lastWorkspace = localStorage.getItem('ravenLastWorkspace')

return (
<PageHeader>
<Flex gap='3' align='center'>
<Link to='/channel' className="block bg-transparent hover:bg-transparent active:bg-transparent sm:hidden">
<Link to={`/${lastWorkspace}`} className="block bg-transparent hover:bg-transparent active:bg-transparent sm:hidden">
<BiChevronLeft size='24' className="block text-gray-12" />
</Link>
<UserAvatar
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/hooks/useUnreadMessageCount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ const useUnreadMessageCount = () => {
updateUnreadCountToZero(event.channel_id)
}

updateLastMessageInChannelList(event.channel_id)
updateLastMessageInChannelList(event.channel_id, event.last_message_timestamp)
})

const updateUnreadCountToZero = (channel_id?: string) => {
Expand Down
85 changes: 35 additions & 50 deletions frontend/src/utils/channel/ChannelListProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FrappeConfig, FrappeContext, FrappeError, useFrappeDocTypeEventListener, useFrappeGetCall } from 'frappe-react-sdk'
import { PropsWithChildren, createContext, useContext, useMemo } from 'react'
import { FrappeError, useFrappeDocTypeEventListener, useFrappeGetCall } from 'frappe-react-sdk'
import { PropsWithChildren, createContext, useMemo } from 'react'
import { KeyedMutator } from 'swr'
import { useSWRConfig } from 'frappe-react-sdk'
import { toast } from 'sonner'
Expand Down Expand Up @@ -103,14 +103,12 @@ export const useFetchChannelList = (): ChannelListContextType => {

}

// TODO: Is there a better way to do this? Maybe not fetch and use realtime events?

export const useUpdateLastMessageInChannelList = () => {

const { mutate: globalMutate } = useSWRConfig()

const { call } = useContext(FrappeContext) as FrappeConfig

const updateLastMessageInChannelList = async (channelID: string) => {
const updateLastMessageInChannelList = async (channelID: string, lastMessageTimestamp: string) => {

globalMutate(`channel_list`, async (channelList?: { message: ChannelList }) => {
if (channelList) {
Expand All @@ -124,59 +122,46 @@ export const useUpdateLastMessageInChannelList = () => {
}

if (isChannelPresent) {
return call.get('raven.api.raven_channel.get_last_message_details', {
channel_id: channelID,
}).then(res => {
if (res && res.message) {
// 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_details: res.message.last_message_details,
last_message_timestamp: res.message.last_message_timestamp
}
}
return channel
})
}

if (isDMChannel) {
newDMChannels = newDMChannels.map((channel) => {
if (channel.name === channelID) {
return {
...channel,
last_message_details: res.message.last_message_details,
last_message_timestamp: res.message.last_message_timestamp
}
}
return channel
})
// 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
})
}

return {
message: {
channels: newChannels,
dm_channels: newDMChannels,
if (isDMChannel) {
newDMChannels = newDMChannels.map((channel) => {
if (channel.name === channelID) {
return {
...channel,
last_message_timestamp: lastMessageTimestamp
}
}
}
else {
return channelList
return channel
})
}

return {
message: {
channels: newChannels,
dm_channels: newDMChannels,
}
}
)
} else {
return channelList
}
} else {
return channelList
}

// If nothing changed, return the same channel list
return channelList

}, {
revalidate: false
})
Expand Down
17 changes: 0 additions & 17 deletions raven/api/raven_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,23 +83,6 @@ def get_channel_list(hide_archived=False):
return query.run(as_dict=True)


@frappe.whitelist()
def get_last_message_details(channel_id: str):

if frappe.has_permission(doctype="Raven Channel", doc=channel_id, ptype="read"):
last_message_timestamp = frappe.get_cached_value(
"Raven Channel", channel_id, "last_message_timestamp"
)
last_message_details = frappe.get_cached_value(
"Raven Channel", channel_id, "last_message_details"
)

return {
"last_message_timestamp": last_message_timestamp,
"last_message_details": last_message_details,
}


@frappe.whitelist()
def get_channels(hide_archived=False):
channels = get_channel_list(hide_archived)
Expand Down
4 changes: 4 additions & 0 deletions raven/raven_messaging/doctype/raven_message/raven_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ def publish_unread_count_event(self):
"channel_id": self.channel_id,
"play_sound": True,
"sent_by": self.owner,
"last_message_timestamp": self.creation,
},
user=peer_user_doc.user,
after_commit=True,
Expand All @@ -247,6 +248,7 @@ def publish_unread_count_event(self):
"channel_id": self.channel_id,
"play_sound": False,
"sent_by": self.owner,
"last_message_timestamp": self.creation,
},
user=self.owner,
after_commit=True,
Expand All @@ -257,6 +259,7 @@ def publish_unread_count_event(self):
{
"channel_id": self.channel_id,
"sent_by": self.owner,
"last_message_timestamp": self.creation,
},
after_commit=True,
doctype="Raven Message",
Expand All @@ -271,6 +274,7 @@ def publish_unread_count_event(self):
"play_sound": False,
"sent_by": self.owner,
"is_thread": channel_doc.is_thread,
"last_message_timestamp": self.creation,
},
after_commit=True,
room="website",
Expand Down
10 changes: 5 additions & 5 deletions raven/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ def track_channel_visit(channel_id, user=None, commit=False, publish_event_for_u
# Get the channel member record
channel_member = get_channel_member(channel_id, user)

now = frappe.utils.now()

if channel_member:
# Update the last visit
frappe.db.set_value(
"Raven Channel Member", channel_member["name"], "last_visit", frappe.utils.now()
)
frappe.db.set_value("Raven Channel Member", channel_member["name"], "last_visit", now)

# Else if the user is not a member of the channel and the channel is open, create a new member record
elif frappe.get_cached_value("Raven Channel", channel_id, "type") == "Open":
Expand All @@ -26,7 +26,7 @@ def track_channel_visit(channel_id, user=None, commit=False, publish_event_for_u
"doctype": "Raven Channel Member",
"channel_id": channel_id,
"user_id": frappe.session.user,
"last_visit": frappe.utils.now(),
"last_visit": now,
}
).insert()

Expand All @@ -37,7 +37,7 @@ def track_channel_visit(channel_id, user=None, commit=False, publish_event_for_u
if publish_event_for_user:
frappe.publish_realtime(
"raven:unread_channel_count_updated",
{"channel_id": channel_id, "sent_by": frappe.session.user},
{"channel_id": channel_id, "sent_by": frappe.session.user, "last_message_timestamp": now},
user=user,
)

Expand Down
Loading

0 comments on commit f3a6d3f

Please sign in to comment.