@@ -146,11 +146,13 @@ const downloadImage = async (
146146 image : mdast . Image ,
147147 options : {
148148 signal ?: AbortSignal
149+ useUUID ?: boolean
150+ markdownFileName ?: string
149151 } = { } ,
150152) : Promise < DownloadResult | null > => {
151153 if ( ! image . data ) return null
152154
153- const { signal } = options
155+ const { signal, useUUID = false , markdownFileName = '' } = options
154156
155157 const { name : originName , fetchSources, fetchBlob } = image . data
156158
@@ -166,7 +168,12 @@ const downloadImage = async (
166168 const content = await fetchBlob ( )
167169 if ( ! content ) return null
168170
169- const name = uniqueFileName . generate ( 'diagram.png' )
171+ const baseName = markdownFileName
172+ ? `${ markdownFileName } -diagram.png`
173+ : 'diagram.png'
174+ const name = useUUID
175+ ? uniqueFileName . generateWithUUID ( baseName )
176+ : uniqueFileName . generate ( baseName )
170177 const filename = `images/${ name } `
171178
172179 image . url = filename
@@ -185,7 +192,12 @@ const downloadImage = async (
185192 const sources = await fetchSources ( )
186193 if ( ! sources ) return null
187194
188- const name = uniqueFileName . generate ( originName )
195+ const baseName = markdownFileName
196+ ? `${ markdownFileName } -${ originName } `
197+ : originName
198+ const name = useUUID
199+ ? uniqueFileName . generateWithUUID ( baseName )
200+ : uniqueFileName . generate ( baseName )
189201 const filename = `images/${ name } `
190202
191203 const { src } = sources
@@ -263,11 +275,13 @@ const downloadFile = async (
263275 file : mdast . Link ,
264276 options : {
265277 signal ?: AbortSignal
278+ useUUID ?: boolean
279+ markdownFileName ?: string
266280 } = { } ,
267281) : Promise < DownloadResult | null > => {
268282 if ( ! file . data ?. name || ! file . data . fetchFile ) return null
269283
270- const { signal } = options
284+ const { signal, useUUID = false , markdownFileName = '' } = options
271285
272286 const { name, fetchFile } = file . data
273287
@@ -280,7 +294,12 @@ const downloadFile = async (
280294 const result = await withSignal (
281295 async ( ) => {
282296 try {
283- const filename = `files/${ uniqueFileName . generate ( name ) } `
297+ const baseName = markdownFileName ? `${ markdownFileName } -${ name } ` : name
298+ const filename = `files/${
299+ useUUID
300+ ? uniqueFileName . generateWithUUID ( baseName )
301+ : uniqueFileName . generate ( baseName )
302+ } `
284303
285304 const response = await fetchFile ( { signal : controller . signal } )
286305 try {
@@ -352,9 +371,18 @@ const downloadFiles = async (
352371 */
353372 batchSize ?: number
354373 signal ?: AbortSignal
374+ useUUID ?: boolean
375+ markdownFileName ?: string
355376 } = { } ,
356377) : Promise < DownloadResult [ ] > => {
357- const { onProgress, onComplete, batchSize = 3 , signal } = options
378+ const {
379+ onProgress,
380+ onComplete,
381+ batchSize = 3 ,
382+ signal,
383+ useUUID = false ,
384+ markdownFileName = '' ,
385+ } = options
358386
359387 let completeEventCalled = false
360388 const onCompleteOnce = ( ) => {
@@ -385,8 +413,16 @@ const downloadFiles = async (
385413 try {
386414 const result =
387415 file . type === 'image'
388- ? await downloadImage ( file , { signal } )
389- : await downloadFile ( file , { signal } )
416+ ? await downloadImage ( file , {
417+ signal,
418+ useUUID,
419+ markdownFileName,
420+ } )
421+ : await downloadFile ( file , {
422+ signal,
423+ useUUID,
424+ markdownFileName,
425+ } )
390426
391427 if ( result ) {
392428 _results . push ( result )
@@ -499,6 +535,7 @@ const main = async (options: { signal?: AbortSignal } = {}) => {
499535 SettingKey . DownloadMethod ,
500536 SettingKey . TableWithNonPhrasingContent ,
501537 SettingKey . TextHighlight ,
538+ SettingKey . DownloadFileWithUniqueName ,
502539 ] )
503540
504541 const { root, images, files, invalidTables } = docx . intoMarkdownAST ( {
@@ -559,11 +596,15 @@ const main = async (options: { signal?: AbortSignal } = {}) => {
559596 Toast . remove ( TranslationKey . IMAGE )
560597 } ,
561598 signal,
599+ useUUID : settings [ SettingKey . DownloadFileWithUniqueName ] ,
600+ markdownFileName : recommendName ,
562601 } ) ,
563602 // Diagrams must be downloaded one by one
564603 downloadFiles ( diagrams , {
565604 batchSize : 1 ,
566605 signal,
606+ useUUID : settings [ SettingKey . DownloadFileWithUniqueName ] ,
607+ markdownFileName : recommendName ,
567608 } ) ,
568609 downloadFiles ( files , {
569610 onProgress : progress => {
@@ -580,6 +621,8 @@ const main = async (options: { signal?: AbortSignal } = {}) => {
580621 Toast . remove ( TranslationKey . FILE )
581622 } ,
582623 signal,
624+ useUUID : settings [ SettingKey . DownloadFileWithUniqueName ] ,
625+ markdownFileName : recommendName ,
583626 } ) ,
584627 ] )
585628 results . flat ( 1 ) . forEach ( ( { filename, content } ) => {
0 commit comments