|
@@ -30,6 +30,8 @@ import { usePostGetChatsListQuery } from '@api/chat';
|
|
|
import moment from 'moment';
|
|
|
import { Chat } from './types';
|
|
|
|
|
|
+import PinIcon from 'assets/icons/messages/pin.svg';
|
|
|
+
|
|
|
type Routes = {
|
|
|
key: 'all' | 'unread' | 'archived';
|
|
|
title: string;
|
|
@@ -88,12 +90,14 @@ const MessagesScreen = () => {
|
|
|
setFilteredChats(
|
|
|
chats
|
|
|
.filter((chat: Chat) => chat.unread_count > 0)
|
|
|
- .sort((a: Chat, b: Chat) => (b.pin === 1 ? 1 : -1))
|
|
|
+ .sort((a: Chat, b: Chat) => b.pin - a.pin || b.pin_order - a.pin_order)
|
|
|
);
|
|
|
} else if (index === 2) {
|
|
|
setFilteredChats([]);
|
|
|
} else {
|
|
|
- setFilteredChats(chats.sort((a: Chat, b: Chat) => (b.pin === 1 ? 1 : -1)));
|
|
|
+ setFilteredChats(
|
|
|
+ chats.sort((a: Chat, b: Chat) => b.pin - a.pin || b.pin_order - a.pin_order)
|
|
|
+ );
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -101,13 +105,6 @@ const MessagesScreen = () => {
|
|
|
filterChatsByTab();
|
|
|
}, [index, chats]);
|
|
|
|
|
|
- const handlePinChat = (id: number) => {
|
|
|
- const updatedChats = chats.map((chat: Chat) =>
|
|
|
- chat.uid === id ? { ...chat, pin: !chat.pin } : chat
|
|
|
- );
|
|
|
- setChats(updatedChats as any);
|
|
|
- };
|
|
|
-
|
|
|
const handleDeleteChat = (id: number) => {
|
|
|
const updatedChats = chats.filter((chat: Chat) => chat.uid !== id);
|
|
|
setChats(updatedChats);
|
|
@@ -153,8 +150,9 @@ const MessagesScreen = () => {
|
|
|
const renderChatItem = ({ item }: { item: Chat }) => {
|
|
|
return (
|
|
|
<SwipeableRow
|
|
|
- chat={{ id: item.uid, name: item.name, avatar: item.avatar }}
|
|
|
+ chat={{ id: item.uid, name: item.name, avatar: item.avatar, pin: item.pin }}
|
|
|
onRowOpen={handleRowOpen}
|
|
|
+ refetch={refetch}
|
|
|
>
|
|
|
<TouchableHighlight
|
|
|
activeOpacity={0.8}
|
|
@@ -180,6 +178,7 @@ const MessagesScreen = () => {
|
|
|
<Text style={styles.chatName}>{item.name}</Text>
|
|
|
|
|
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
|
+ {item.pin === 1 ? <PinIcon height={12} fill={Colors.DARK_BLUE} /> : null}
|
|
|
{item.sent_by !== item.uid && item.status === 3 ? (
|
|
|
<ReadIcon fill={Colors.DARK_BLUE} />
|
|
|
) : item.sent_by !== item.uid && (item.status === 2 || item.status === 1) ? (
|