fixed typescript error

This commit is contained in:
lloydzhou 2024-07-15 21:21:50 +08:00
parent a1117cd4ee
commit b3a324b6f5
3 changed files with 21 additions and 7 deletions

View File

@ -152,7 +152,7 @@ export function Sd() {
db={fileDb}
src={item.img_data}
alt={item.id}
onClick={(data, e) => {
onClick={(data: any, e: any) => {
showImageModal(
data,
true,
@ -164,7 +164,6 @@ export function Sd() {
: { width: "100%", height: "100%" },
);
}}
isMobileScreen={isMobileScreen}
/>
) : item.status === "error" ? (
<div className={styles["pre-img"]}>

View File

@ -3,7 +3,6 @@ import { Analytics } from "@vercel/analytics/react";
import { Home } from "./components/home";
import { getServerSideConfig } from "./config/server";
import { SdDbInit } from "@/app/store/sd";
const serverConfig = getServerSideConfig();

View File

@ -42,13 +42,17 @@ export function base64Image2Blob(base64Data: string, contentType: string) {
return new Blob([byteArray], { type: contentType });
}
export function saveFileData(db, fileId, data) {
export function saveFileData(db: any, fileId: string, data: Blob | string) {
// save file content and return url start with `indexeddb://`
db.add({ id: fileId, data });
return `indexeddb://${StoreKey.File}@${fileId}`;
}
export async function getFileData(db, fileId, contentType = "image/png") {
export async function getFileData(
db: any,
fileId: string,
contentType = "image/png",
) {
const { data } = await db.getByID(fileId);
if (typeof data == "object") {
return URL.createObjectURL(data);
@ -56,14 +60,26 @@ export async function getFileData(db, fileId, contentType = "image/png") {
return `data:${contentType};base64,${data}`;
}
export function IndexDBImage({ src, alt, onClick, db, className }) {
export function IndexDBImage({
src,
alt,
onClick,
db,
className,
}: {
src: string;
alt: string;
onClick: any;
db: any;
className: string;
}) {
const [data, setData] = useState(src);
const imgId = useMemo(
() => src.replace("indexeddb://", "").split("@").pop(),
[src],
);
useEffect(() => {
getFileData(db, imgId)
getFileData(db, imgId as string)
.then((data) => setData(data))
.catch((e) => setData(src));
}, [src, imgId]);