diff --git a/src/components/subtitleuploader/subtitleuploader.js b/src/components/subtitleuploader/subtitleuploader.js index 5bfc27011..6cd3f1ff2 100644 --- a/src/components/subtitleuploader/subtitleuploader.js +++ b/src/components/subtitleuploader/subtitleuploader.js @@ -15,6 +15,7 @@ import '../../elements/emby-button/emby-button'; import '../../elements/emby-select/emby-select'; import '../formdialog.scss'; import './style.scss'; +import { readFileAsBase64 } from 'utils/file'; let currentItemId; let currentServerId; @@ -77,19 +78,6 @@ function setFiles(page, files) { reader.readAsDataURL(file); } -function getStringFromFile(file) { - return new Promise(function (resolve, reject) { - const reader = new FileReader(); - reader.onload = (e) => { - // Split by a comma to remove the url: prefix - const data = e.target.result.split(',')[1]; - resolve(data); - }; - reader.onerror = reject; - reader.readAsDataURL(file); - }); -} - async function onSubmit(e) { const file = currentFile; @@ -108,7 +96,7 @@ async function onSubmit(e) { const subtitleApi = getSubtitleApi(toApi(ServerConnections.getApiClient(currentServerId))); - const data = await getStringFromFile(file); + const data = await readFileAsBase64(file); const format = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase(); subtitleApi.uploadSubtitle({ diff --git a/src/utils/file.ts b/src/utils/file.ts new file mode 100644 index 000000000..b85178e2f --- /dev/null +++ b/src/utils/file.ts @@ -0,0 +1,15 @@ +/** + * Reads and returns the file encoded in base64 + */ +export function readFileAsBase64(file: File): Promise { + return new Promise(function (resolve, reject) { + const reader = new FileReader(); + reader.onload = (e) => { + // Split by a comma to remove the url: prefix + const data = (e.target?.result as string)?.split?.(',')[1]; + resolve(data); + }; + reader.onerror = reject; + reader.readAsDataURL(file); + }); +}