@@ -7,7 +7,7 @@ const SESSION_LIST_WIDTH_DEFAULT = 295
77const SESSION_LIST_WIDTH_MIN = 220
88const SESSION_LIST_WIDTH_MAX = 520
99
10- export const useChatSessions = async ( { chatAccounts, selectedAccount, realtimeEnabled, api } ) => {
10+ export const useChatSessions = ( { chatAccounts, selectedAccount, realtimeEnabled, api } ) => {
1111 const showSearchAccountSwitcher = false
1212
1313 const contacts = ref ( [ ] )
@@ -134,79 +134,6 @@ export const useChatSessions = async ({ chatAccounts, selectedAccount, realtimeE
134134 loadSessionListWidth ( )
135135 } )
136136
137- const apiBase = useApiBase ( )
138-
139- const { data : prefetchedAccounts } = await useAsyncData ( 'chat-accounts' , ( ) => {
140- if ( process . server ) {
141- const port = process . env . WECHAT_TOOL_PORT || '10392'
142- return $fetch ( '/api/chat/accounts' , { baseURL : `http://127.0.0.1:${ port } ` } )
143- }
144- return $fetch ( '/chat/accounts' , { baseURL : apiBase } )
145- } , { watch : false , lazy : true } )
146-
147- if ( prefetchedAccounts . value ?. accounts ?. length && ! chatAccounts . loaded ) {
148- const response = prefetchedAccounts . value
149- chatAccounts . accounts = response . accounts
150- const preferred = chatAccounts . selectedAccount
151- const fallback = response . default_account || response . accounts [ 0 ] || ''
152- chatAccounts . selectedAccount = ( preferred && response . accounts . includes ( preferred ) ) ? preferred : fallback
153- chatAccounts . loaded = true
154- }
155-
156- const ssrSelectedAccount = chatAccounts . selectedAccount || ''
157- const { data : prefetchedSessions } = await useAsyncData ( `chat-sessions-${ ssrSelectedAccount } ` , ( ) => {
158- if ( ! ssrSelectedAccount ) return Promise . resolve ( null )
159- const params = new URLSearchParams ( {
160- account : ssrSelectedAccount ,
161- limit : '400' ,
162- include_hidden : 'false' ,
163- include_official : 'false'
164- } )
165- if ( process . server ) {
166- const port = process . env . WECHAT_TOOL_PORT || '10392'
167- return $fetch ( `/api/chat/sessions?${ params } ` , { baseURL : `http://127.0.0.1:${ port } ` } )
168- }
169- return $fetch ( `/chat/sessions?${ params } ` , { baseURL : apiBase } )
170- } , { watch : false , lazy : true } )
171-
172- if ( prefetchedSessions . value ?. sessions ?. length ) {
173- const ssrAvatars = new Map ( )
174- contacts . value = prefetchedSessions . value . sessions . map ( ( session ) => {
175- if ( session . avatar ) ssrAvatars . set ( session . username || session . id , session . avatar )
176- return {
177- id : session . id ,
178- name : session . name || session . username || session . id ,
179- avatar : null ,
180- lastMessage : normalizeSessionPreview ( session . lastMessage || '' ) ,
181- lastMessageTime : session . lastMessageTime || '' ,
182- unreadCount : session . unreadCount || 0 ,
183- isGroup : ! ! session . isGroup ,
184- isTop : ! ! session . isTop ,
185- username : session . username
186- }
187- } )
188-
189- if ( process . client && ssrAvatars . size ) {
190- const applySsrAvatars = ( ) => {
191- const entries = Array . from ( ssrAvatars . entries ( ) )
192- const batchSize = 6
193- let index = 0
194- const next = ( ) => {
195- const batch = entries . slice ( index , index + batchSize )
196- if ( ! batch . length ) return
197- for ( const [ key , url ] of batch ) {
198- const contact = contacts . value . find ( ( item ) => ( item . username || item . id ) === key )
199- if ( contact ) contact . avatar = url
200- }
201- index += batchSize
202- if ( index < entries . length ) setTimeout ( next , 150 )
203- }
204- next ( )
205- }
206- setTimeout ( applySsrAvatars , 500 )
207- }
208- }
209-
210137 const filteredContacts = computed ( ( ) => {
211138 const query = String ( searchQuery . value || '' ) . trim ( ) . toLowerCase ( )
212139 if ( ! query ) return contacts . value
0 commit comments