Make MediaUtil a static class (#1525)
This commit is contained in:
parent
06b02c3cf2
commit
52a4d874ea
@ -47,13 +47,11 @@ class Backend {
|
||||
});
|
||||
this._anki = new AnkiConnect();
|
||||
this._mecab = new Mecab();
|
||||
this._mediaUtil = new MediaUtil();
|
||||
this._clipboardReader = new ClipboardReader({
|
||||
// eslint-disable-next-line no-undef
|
||||
document: (typeof document === 'object' && document !== null ? document : null),
|
||||
pasteTargetSelector: '#clipboard-paste-target',
|
||||
imagePasteTargetSelector: '#clipboard-image-paste-target',
|
||||
mediaUtil: this._mediaUtil
|
||||
imagePasteTargetSelector: '#clipboard-image-paste-target'
|
||||
});
|
||||
this._clipboardMonitor = new ClipboardMonitor({
|
||||
japaneseUtil: this._japaneseUtil,
|
||||
@ -1750,7 +1748,7 @@ class Backend {
|
||||
return null;
|
||||
}
|
||||
|
||||
let extension = this._mediaUtil.getFileExtensionFromAudioMediaType(contentType);
|
||||
let extension = MediaUtil.getFileExtensionFromAudioMediaType(contentType);
|
||||
if (extension === null) { extension = '.mp3'; }
|
||||
let fileName = this._generateAnkiNoteMediaFileName('yomichan_audio', extension, timestamp, definitionDetails);
|
||||
fileName = fileName.replace(/\]/g, '');
|
||||
@ -1764,7 +1762,7 @@ class Backend {
|
||||
const dataUrl = await this._getScreenshot(tabId, frameId, format, quality);
|
||||
|
||||
const {mediaType, data} = this._getDataUrlInfo(dataUrl);
|
||||
const extension = this._mediaUtil.getFileExtensionFromImageMediaType(mediaType);
|
||||
const extension = MediaUtil.getFileExtensionFromImageMediaType(mediaType);
|
||||
if (extension === null) {
|
||||
throw new Error('Unknown media type for screenshot image');
|
||||
}
|
||||
@ -1782,7 +1780,7 @@ class Backend {
|
||||
}
|
||||
|
||||
const {mediaType, data} = this._getDataUrlInfo(dataUrl);
|
||||
const extension = this._mediaUtil.getFileExtensionFromImageMediaType(mediaType);
|
||||
const extension = MediaUtil.getFileExtensionFromImageMediaType(mediaType);
|
||||
if (extension === null) {
|
||||
throw new Error('Unknown media type for clipboard image');
|
||||
}
|
||||
|
@ -15,6 +15,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* global
|
||||
* MediaUtil
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class which can read text and images from the clipboard.
|
||||
*/
|
||||
@ -25,14 +29,13 @@ class ClipboardReader {
|
||||
* @param pasteTargetSelector The selector for the paste target element.
|
||||
* @param imagePasteTargetSelector The selector for the image paste target element.
|
||||
*/
|
||||
constructor({document=null, pasteTargetSelector=null, imagePasteTargetSelector=null, mediaUtil=null}) {
|
||||
constructor({document=null, pasteTargetSelector=null, imagePasteTargetSelector=null}) {
|
||||
this._document = document;
|
||||
this._browser = null;
|
||||
this._pasteTarget = null;
|
||||
this._pasteTargetSelector = pasteTargetSelector;
|
||||
this._imagePasteTarget = null;
|
||||
this._imagePasteTargetSelector = imagePasteTargetSelector;
|
||||
this._mediaUtil = mediaUtil;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -107,7 +110,6 @@ class ClipboardReader {
|
||||
// See browser-specific notes in getText
|
||||
if (
|
||||
this._isFirefox() &&
|
||||
this._mediaUtil !== null &&
|
||||
typeof navigator.clipboard !== 'undefined' &&
|
||||
typeof navigator.clipboard.read === 'function'
|
||||
) {
|
||||
@ -120,7 +122,7 @@ class ClipboardReader {
|
||||
}
|
||||
|
||||
for (const file of files) {
|
||||
if (this._mediaUtil.getFileExtensionFromImageMediaType(file.type) !== null) {
|
||||
if (MediaUtil.getFileExtensionFromImageMediaType(file.type) !== null) {
|
||||
return await this._readFileAsDataURL(file);
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class DictionaryImporter {
|
||||
constructor() {
|
||||
this._schemas = new Map();
|
||||
this._jsonSchemaValidator = new JsonSchemaValidator();
|
||||
this._mediaUtil = new MediaUtil();
|
||||
}
|
||||
|
||||
async importDictionary(dictionaryDatabase, archiveSource, details, onProgress) {
|
||||
@ -325,7 +324,7 @@ class DictionaryImporter {
|
||||
}
|
||||
|
||||
const content = await file.async('base64');
|
||||
const mediaType = this._mediaUtil.getImageMediaTypeFromFileName(path);
|
||||
const mediaType = MediaUtil.getImageMediaTypeFromFileName(path);
|
||||
if (mediaType === null) {
|
||||
throw new Error(`Could not determine media type for image at path ${JSON.stringify(path)} for ${errorSource}`);
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ class MediaUtil {
|
||||
* @returns The file extension, including the '.', or an empty string
|
||||
* if there is no file extension.
|
||||
*/
|
||||
getFileNameExtension(path) {
|
||||
static getFileNameExtension(path) {
|
||||
const match = /\.[^./\\]*$/.exec(path);
|
||||
return match !== null ? match[0] : '';
|
||||
}
|
||||
@ -37,7 +37,7 @@ class MediaUtil {
|
||||
* @returns The media type string if it can be determined from the file path,
|
||||
* otherwise null.
|
||||
*/
|
||||
getImageMediaTypeFromFileName(path) {
|
||||
static getImageMediaTypeFromFileName(path) {
|
||||
switch (this.getFileNameExtension(path).toLowerCase()) {
|
||||
case '.apng':
|
||||
return 'image/apng';
|
||||
@ -74,7 +74,7 @@ class MediaUtil {
|
||||
* @returns A file extension including the dot for the media type,
|
||||
* otherwise null.
|
||||
*/
|
||||
getFileExtensionFromImageMediaType(mediaType) {
|
||||
static getFileExtensionFromImageMediaType(mediaType) {
|
||||
switch (mediaType) {
|
||||
case 'image/apng':
|
||||
return '.apng';
|
||||
@ -105,7 +105,7 @@ class MediaUtil {
|
||||
* @returns A file extension including the dot for the media type,
|
||||
* otherwise null.
|
||||
*/
|
||||
getFileExtensionFromAudioMediaType(mediaType) {
|
||||
static getFileExtensionFromAudioMediaType(mediaType) {
|
||||
switch (mediaType) {
|
||||
case 'audio/mpeg':
|
||||
case 'audio/mp3':
|
||||
|
Loading…
Reference in New Issue
Block a user