@@ -63,48 +63,14 @@ export const useMallKefuStore = defineStore('mall-kefu', {
63
63
}
64
64
} ,
65
65
conversationSort ( ) {
66
- // TODO @puhui 999:1)逻辑上,先按照置顶、再按照最后消息时间;2)感觉写的有一丢丢小复杂,发给大模型,看看有没可能简化哈。
67
- this . conversationList . sort ( ( obj1 , obj2 ) => {
68
- // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 false,obj1 应该排在前面
69
- if ( obj1 . adminPinned && ! obj2 . adminPinned ) {
70
- return - 1
66
+ // 按置顶属性和最后消息时间排序
67
+ this . conversationList . sort ( ( a , b ) => {
68
+ // 按照置顶排序,置顶的会在前面
69
+ if ( a . adminPinned !== b . adminPinned ) {
70
+ return a . adminPinned ? - 1 : 1
71
71
}
72
- // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 true,obj2 应该排在前面
73
- if ( ! obj1 . adminPinned && obj2 . adminPinned ) {
74
- return 1
75
- }
76
-
77
- // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 true,比较 adminUnreadMessageCount 的值
78
- if ( obj1 . adminPinned && obj2 . adminPinned ) {
79
- return obj1 . adminUnreadMessageCount - obj2 . adminUnreadMessageCount
80
- }
81
-
82
- // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 false,比较 adminUnreadMessageCount 的值
83
- if ( ! obj1 . adminPinned && ! obj2 . adminPinned ) {
84
- return obj1 . adminUnreadMessageCount - obj2 . adminUnreadMessageCount
85
- }
86
-
87
- // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 true,且 b 都大于 0,比较 adminUnreadMessageCount 的值
88
- if (
89
- obj1 . adminPinned &&
90
- obj2 . adminPinned &&
91
- obj1 . adminUnreadMessageCount > 0 &&
92
- obj2 . adminUnreadMessageCount > 0
93
- ) {
94
- return obj1 . adminUnreadMessageCount - obj2 . adminUnreadMessageCount
95
- }
96
-
97
- // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 false,且 b 都大于 0,比较 adminUnreadMessageCount 的值
98
- if (
99
- ! obj1 . adminPinned &&
100
- ! obj2 . adminPinned &&
101
- obj1 . adminUnreadMessageCount > 0 &&
102
- obj2 . adminUnreadMessageCount > 0
103
- ) {
104
- return obj1 . adminUnreadMessageCount - obj2 . adminUnreadMessageCount
105
- }
106
-
107
- return 0
72
+ // 按照最后消息时间排序,最近的会在前面
73
+ return ( b . lastMessageTime as unknown as number ) - ( a . lastMessageTime as unknown as number )
108
74
} )
109
75
}
110
76
}
0 commit comments