diff --git a/packages/lib/models/Note.test.ts b/packages/lib/models/Note.test.ts index 886e1657a9..fe6867014d 100644 --- a/packages/lib/models/Note.test.ts +++ b/packages/lib/models/Note.test.ts @@ -284,8 +284,20 @@ describe('models_Note', function() { expect(externalToInternal).toBe(input); } - const result = await Note.replaceResourceExternalToInternalLinks(`[](joplin://${note1.id})`); - expect(result).toBe(`[](:/${note1.id})`); + { + const result = await Note.replaceResourceExternalToInternalLinks(`[](joplin://${note1.id})`); + expect(result).toBe(`[](:/${note1.id})`); + } + + { + // This is a regular file path that contains the resourceDirName + // inside but it shouldn't be changed. + // + // https://github.com/laurent22/joplin/issues/5034 + const noChangeInput = `[docs](file:///c:/foo/${resourceDirName}/docs)`; + const result = await Note.replaceResourceExternalToInternalLinks(noChangeInput, { useAbsolutePaths: false }); + expect(result).toBe(noChangeInput); + } })); it('should perform natural sorting', (async () => { diff --git a/packages/lib/models/Note.ts b/packages/lib/models/Note.ts index 217ec903f0..0790fdea91 100644 --- a/packages/lib/models/Note.ts +++ b/packages/lib/models/Note.ts @@ -208,9 +208,9 @@ export default class Note extends BaseItem { for (const basePath of pathsToTry) { const reStrings = [ // Handles file://path/to/abcdefg.jpg?t=12345678 - `${pregQuote(`${basePath}/`)}[a-zA-Z0-9.]+\\?t=[0-9]+`, + `${pregQuote(`${basePath}/`)}[a-zA-Z0-9]{32}\\.[a-zA-Z0-9]+\\?t=[0-9]+`, // Handles file://path/to/abcdefg.jpg - `${pregQuote(`${basePath}/`)}[a-zA-Z0-9.]+`, + `${pregQuote(`${basePath}/`)}[a-zA-Z0-9]{32}\\.[a-zA-Z0-9]+`, ]; for (const reString of reStrings) { const re = new RegExp(reString, 'gi');