feat: check if files are eligible for cast

This commit is contained in:
httpjamesm 2023-11-23 17:58:15 -05:00
parent c2c1ac13bd
commit dbbcd2b6bb
No known key found for this signature in database

View file

@ -1,11 +1,12 @@
// import { Inter } from 'next/font/google'; // import { Inter } from 'next/font/google';
import PairedSuccessfullyOverlay from 'components/PairedSuccessfullyOverlay'; import PairedSuccessfullyOverlay from 'components/PairedSuccessfullyOverlay';
import { FILE_TYPE } from 'constants/file';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { syncCollections } from 'services/collectionService'; import { syncCollections } from 'services/collectionService';
import { syncFiles } from 'services/fileService'; import { syncFiles } from 'services/fileService';
import { EnteFile } from 'types/file'; import { EnteFile } from 'types/file';
import { downloadFileAsBlob } from 'utils/file'; import { downloadFileAsBlob, isRawFileFromFileName } from 'utils/file';
export default function Slideshow() { export default function Slideshow() {
const [collectionFiles, setCollectionFiles] = useState<EnteFile[]>([]); const [collectionFiles, setCollectionFiles] = useState<EnteFile[]>([]);
@ -32,13 +33,34 @@ export default function Slideshow() {
file.collectionID === Number(requestedCollectionID) file.collectionID === Number(requestedCollectionID)
); );
setCollectionFiles(collectionFiles); setCollectionFiles(
collectionFiles.filter((file) =>
isFileEligibleForCast(file)
)
);
} }
} catch { } catch {
router.push('/'); router.push('/');
} }
}; };
const isFileEligibleForCast = (file: EnteFile) => {
const fileType = file.metadata.fileType;
if (fileType !== FILE_TYPE.IMAGE && fileType !== FILE_TYPE.VIDEO) {
return false;
}
const name = file.metadata.title;
if (fileType === FILE_TYPE.IMAGE) {
if (isRawFileFromFileName(name)) {
return false;
}
}
return true;
};
const router = useRouter(); const router = useRouter();
useEffect(() => { useEffect(() => {
@ -73,13 +95,17 @@ export default function Slideshow() {
const [renderableFileURL, setRenderableFileURL] = useState<string>(''); const [renderableFileURL, setRenderableFileURL] = useState<string>('');
const getRenderableFileURL = async () => { const getRenderableFileURL = async () => {
const blob = await downloadFileAsBlob(currentFile as EnteFile); try {
const blob = await downloadFileAsBlob(currentFile as EnteFile);
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
setRenderableFileURL(url); setRenderableFileURL(url);
} catch (e) {
setLoading(false); return;
} finally {
setLoading(false);
}
}; };
useEffect(() => { useEffect(() => {