1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-07-16 00:14:34 +02:00

Chore: Refactor renderer package: Limit dependency on @joplin/lib and improve type safety (#9701)

This commit is contained in:
Henry Heino
2024-01-18 03:20:10 -08:00
committed by GitHub
parent 352ee6496e
commit f5e1e45f6f
32 changed files with 457 additions and 393 deletions

View File

@ -7,9 +7,9 @@ import markdownUtils from '../markdownUtils';
import { _ } from '../locale';
import { ResourceEntity, ResourceLocalStateEntity, ResourceOcrStatus, SqlQuery } from '../services/database/types';
import ResourceLocalState from './ResourceLocalState';
const pathUtils = require('../path-utils');
import * as pathUtils from '../path-utils';
import { safeFilename } from '../path-utils';
const { mime } = require('../mime-utils.js');
const { filename, safeFilename } = require('../path-utils');
const { FsDriverDummy } = require('../fs-driver-dummy.js');
import JoplinError from '../JoplinError';
import itemCanBeEncrypted from './utils/itemCanBeEncrypted';
@ -23,6 +23,7 @@ import { RecognizeResultLine } from '../services/ocr/utils/types';
import eventManager, { EventName } from '../eventManager';
import { unique } from '../array';
import isSqliteSyntaxError from '../services/database/isSqliteSyntaxError';
import { internalUrl, isResourceUrl, isSupportedImageMimeType, resourceFilename, resourceFullPath, resourcePathToId, resourceRelativePath, resourceUrlToId } from './utils/resourceUtils';
export default class Resource extends BaseItem {
@ -56,8 +57,7 @@ export default class Resource extends BaseItem {
}
public static isSupportedImageMimeType(type: string) {
const imageMimeTypes = ['image/jpg', 'image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp', 'image/avif'];
return imageMimeTypes.indexOf(type.toLowerCase()) >= 0;
return isSupportedImageMimeType(type);
}
public static fetchStatuses(resourceIds: string[]): Promise<any[]> {
@ -121,10 +121,7 @@ export default class Resource extends BaseItem {
}
public static filename(resource: ResourceEntity, encryptedBlob = false) {
let extension = encryptedBlob ? 'crypted' : resource.file_extension;
if (!extension) extension = resource.mime ? mime.toFileExtension(resource.mime) : '';
extension = extension ? `.${extension}` : '';
return resource.id + extension;
return resourceFilename(resource, encryptedBlob);
}
public static friendlySafeFilename(resource: ResourceEntity) {
@ -137,11 +134,11 @@ export default class Resource extends BaseItem {
}
public static relativePath(resource: ResourceEntity, encryptedBlob = false) {
return `${Setting.value('resourceDirName')}/${this.filename(resource, encryptedBlob)}`;
return resourceRelativePath(resource, this.baseRelativeDirectoryPath(), encryptedBlob);
}
public static fullPath(resource: ResourceEntity, encryptedBlob = false) {
return `${Setting.value('resourceDir')}/${this.filename(resource, encryptedBlob)}`;
return resourceFullPath(resource, this.baseDirectoryPath(), encryptedBlob);
}
public static async isReady(resource: ResourceEntity) {
@ -270,11 +267,11 @@ export default class Resource extends BaseItem {
}
public static internalUrl(resource: ResourceEntity) {
return `:/${resource.id}`;
return internalUrl(resource);
}
public static pathToId(path: string) {
return filename(path);
return resourcePathToId(path);
}
public static async content(resource: ResourceEntity) {
@ -282,12 +279,11 @@ export default class Resource extends BaseItem {
}
public static isResourceUrl(url: string) {
return url && url.length === 34 && url[0] === ':' && url[1] === '/';
return isResourceUrl(url);
}
public static urlToId(url: string) {
if (!this.isResourceUrl(url)) throw new Error(`Not a valid resource URL: ${url}`);
return url.substr(2);
return resourceUrlToId(url);
}
public static async localState(resourceOrId: any): Promise<ResourceLocalStateEntity> {