@@ -292,6 +292,7 @@ export const useApi = () => {
292292 message_types : Array . isArray ( data . message_types ) ? data . message_types : [ ] ,
293293 include_media : data . include_media == null ? true : ! ! data . include_media ,
294294 media_kinds : Array . isArray ( data . media_kinds ) ? data . media_kinds : [ 'image' , 'emoji' , 'video' , 'video_thumb' , 'voice' , 'file' ] ,
295+ output_dir : data . output_dir == null ? null : String ( data . output_dir || '' ) . trim ( ) ,
295296 allow_process_key_extract : ! ! data . allow_process_key_extract ,
296297 privacy_mode : ! ! data . privacy_mode ,
297298 file_name : data . file_name || null
@@ -313,6 +314,36 @@ export const useApi = () => {
313314 return await request ( `/chat/exports/${ encodeURIComponent ( String ( exportId ) ) } ` , { method : 'DELETE' } )
314315 }
315316
317+ // 联系人
318+ const listChatContacts = async ( params = { } ) => {
319+ const query = new URLSearchParams ( )
320+ if ( params && params . account ) query . set ( 'account' , params . account )
321+ if ( params && params . keyword ) query . set ( 'keyword' , params . keyword )
322+ if ( params && params . include_friends != null ) query . set ( 'include_friends' , String ( ! ! params . include_friends ) )
323+ if ( params && params . include_groups != null ) query . set ( 'include_groups' , String ( ! ! params . include_groups ) )
324+ if ( params && params . include_officials != null ) query . set ( 'include_officials' , String ( ! ! params . include_officials ) )
325+ const url = '/chat/contacts' + ( query . toString ( ) ? `?${ query . toString ( ) } ` : '' )
326+ return await request ( url )
327+ }
328+
329+ const exportChatContacts = async ( payload = { } ) => {
330+ return await request ( '/chat/contacts/export' , {
331+ method : 'POST' ,
332+ body : {
333+ account : payload . account || null ,
334+ output_dir : payload . output_dir || '' ,
335+ format : payload . format || 'json' ,
336+ include_avatar_link : payload . include_avatar_link == null ? true : ! ! payload . include_avatar_link ,
337+ keyword : payload . keyword || null ,
338+ contact_types : {
339+ friends : payload ?. contact_types ?. friends == null ? true : ! ! payload . contact_types . friends ,
340+ groups : payload ?. contact_types ?. groups == null ? true : ! ! payload . contact_types . groups ,
341+ officials : payload ?. contact_types ?. officials == null ? true : ! ! payload . contact_types . officials ,
342+ }
343+ }
344+ } )
345+ }
346+
316347 // WeChat Wrapped(年度总结)
317348 const getWrappedAnnual = async ( params = { } ) => {
318349 const query = new URLSearchParams ( )
@@ -388,6 +419,8 @@ export const useApi = () => {
388419 getChatExport,
389420 listChatExports,
390421 cancelChatExport,
422+ listChatContacts,
423+ exportChatContacts,
391424 getWrappedAnnual,
392425 getWrappedAnnualMeta,
393426 getWrappedAnnualCard,
0 commit comments