made it so media items display error, improved some scripts

This commit is contained in:
subnub
2025-01-07 00:52:07 -05:00
parent fcddd7d54a
commit 459dc6c2e7
6 changed files with 36 additions and 13 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ const serverStart = async () => {
const port = process.env.HTTP_PORT || process.env.PORT;
server.listen(port, process.env.URL, () => {
console.log("Development Server Running On Port:", port, process.env.URL);
console.log("Development Backend Server Running On Port:", port);
});
}
};
@@ -157,7 +157,7 @@ const createVideoThumbnail = (
}
})
.on("error", async (err, sdf, stderr) => {
console.log("thumbnail error attempting temp directory fix");
// console.log("thumbnail error attempting temp directory fix");
error = true;
@@ -22,7 +22,7 @@ const tempCreateVideoThumbnail = (
filename: string,
user: UserInterface
) => {
return new Promise<FileInterface>(async (resolve, reject) => {
return new Promise<FileInterface>((resolve, reject) => {
const password = user.getEncryptionKey();
let CIPHER_KEY = crypto.createHash("sha256").update(password!).digest();
+1 -1
View File
@@ -8,7 +8,7 @@
},
"scripts": {
"dev": "concurrently \"vite\" \"tsc -w -p ./backend/tsconfig.json\" \"npm run dev:backend\"",
"dev:backend": "NODE_ENV=development nodemon dist-backend/server/server-start.js",
"dev:backend": "NODE_ENV=development nodemon --quiet dist-backend/server/server-start.js",
"build:frontend": "vite build",
"build:backend": "tsc -p ./backend/tsconfig.json",
"build": "npm run build:frontend && npm run build:backend",
+16 -3
View File
@@ -10,17 +10,30 @@ const getKey = require("../dist-backend/key/get-key").default;
const waitForDatabase = () => {
return new Promise((resolve, reject) => {
// Wait for the database to be ready.
const timeoutWait = () => {
setTimeout(() => resolve(), 3000);
};
if (conn.readyState !== 1) {
conn.once("open", () => {
resolve();
timeoutWait();
});
} else {
resolve();
timeoutWait();
}
});
};
// Wait to be after anything else may be printed to the terminal
const terminalWait = () => {
return new Promise((resolve) => {
setTimeout(() => resolve(), 2000);
});
};
const updateDocs = async () => {
await terminalWait();
console.log(`Updating video thumbnails, env is ${process.env.NODE_ENV}`);
console.log("\nWaiting for database...");
@@ -48,7 +61,7 @@ const updateDocs = async () => {
try {
const currentFile = files[i];
console.log("current file", currentFile._id);
console.log(`Progress ${i + 1}/${files.length}`);
const user = await User.findById(currentFile.metadata.owner);
+16 -6
View File
@@ -1,4 +1,4 @@
import React, { memo, useRef } from "react";
import React, { memo, useRef, useState } from "react";
import { FileInterface } from "../../types/file";
import { useAppDispatch, useAppSelector } from "../../hooks/store";
import {
@@ -12,12 +12,14 @@ import { useContextMenu } from "../../hooks/contextMenu";
import ContextMenu from "../ContextMenu/ContextMenu";
import PlayButtonIcon from "../../icons/PlayIcon";
import getBackendURL from "../../utils/getBackendURL";
import AlertIcon from "../../icons/AlertIcon";
type MediaItemType = {
file: FileInterface;
};
const MediaItem: React.FC<MediaItemType> = memo(({ file }) => {
const [thumbnailError, setThumbnailError] = useState(false);
const elementSelected = useAppSelector((state) => {
if (state.selected.mainSection.type !== "file") return false;
return state.selected.mainSection.id === file._id;
@@ -105,15 +107,23 @@ const MediaItem: React.FC<MediaItemType> = memo(({ file }) => {
/>
</div>
)}
{file.metadata.isVideo && (
{file.metadata.isVideo && !thumbnailError && (
<div className="w-full h-full absolute flex justify-center items-center text-white">
<PlayButtonIcon className="w-[50px] h-[50px]" />
</div>
)}
<img
className="object-cover h-full w-full disable-force-touch"
src={thumbnail}
/>
{!thumbnailError && (
<img
className="object-cover h-full w-full disable-force-touch"
src={thumbnail}
onError={() => setThumbnailError(true)}
/>
)}
{thumbnailError && (
<div className="w-full h-full flex justify-center items-center">
<AlertIcon className="w-7 h-7 text-red-500" />
</div>
)}
</div>
);
});