Improve mime type handling using magic byes
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -17,7 +17,8 @@ import {
|
||||
allowedMimeTypes,
|
||||
deleteMeme,
|
||||
favoriteMeme,
|
||||
getMemeType,
|
||||
getMemeTypeFromMimeType,
|
||||
guessMimeType,
|
||||
noOp,
|
||||
validateMemeTitle,
|
||||
} from '../../utilities';
|
||||
@@ -47,6 +48,7 @@ const EditMeme = ({
|
||||
const [hasChanges, setHasChanges] = useState(false);
|
||||
|
||||
const [memeError, setMemeError] = useState<Error>();
|
||||
|
||||
const [memeTitle, setMemeTitle] = useState(validateMemeTitle(meme.title));
|
||||
const [memeTags, setMemeTags] = useState(
|
||||
new Map<string, Tag>(meme.tags.map(tag => [tag.id.toHexString(), tag])),
|
||||
@@ -104,10 +106,16 @@ const EditMeme = ({
|
||||
const file = await pickSingle({ type: allowedMimeTypes }).catch(noOp);
|
||||
if (!file) return;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const mimeType = file.type!;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const memeType = getMemeType(mimeType)!;
|
||||
const mimeType = await guessMimeType(file.uri, file.type);
|
||||
if (!mimeType) {
|
||||
setMemeError(
|
||||
new Error('Could not determine MIME type or file is not supported.'),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const memeType = getMemeTypeFromMimeType(mimeType);
|
||||
if (!memeType) return;
|
||||
|
||||
const fileExtension = extension(mimeType) as string;
|
||||
if (!fileExtension) return;
|
||||
@@ -122,7 +130,7 @@ const EditMeme = ({
|
||||
|
||||
realm.write(() => {
|
||||
meme.filename = filename;
|
||||
meme.type = memeType;
|
||||
meme.memeType = memeType;
|
||||
meme.mimeType = mimeType;
|
||||
meme.size = size;
|
||||
});
|
||||
|
Reference in New Issue
Block a user