diff --git a/app/components/sd.tsx b/app/components/sd.tsx
index 02f94ae09..ece3e18a0 100644
--- a/app/components/sd.tsx
+++ b/app/components/sd.tsx
@@ -94,7 +94,46 @@ function getSdTaskStatus(item: any) {
);
}
-export async function Sd() {
+function IndexDBImage({ img_data, title, isMobileScreen }) {
+ const [src, setSrc] = useState(img_data);
+ const sdListDb = useIndexedDB(StoreKey.SdList);
+ const img_id = useMemo(
+ () => img_data.replace("indexeddb://", "").split("@").pop(),
+ [img_data],
+ );
+ useEffect(() => {
+ sdListDb
+ .getByID(img_id)
+ .then(({ data }) => {
+ setSrc(data);
+ })
+ .catch((e) => {
+ setSrc(img_data);
+ });
+ }, [img_data, img_id]);
+
+ return (
+ {
+ showImageModal(
+ getBase64ImgUrl(src, "image/png"),
+ true,
+ isMobileScreen
+ ? { width: "100%", height: "fit-content" }
+ : { maxWidth: "100%", maxHeight: "100%" },
+ isMobileScreen
+ ? { width: "100%", height: "fit-content" }
+ : { width: "100%", height: "100%" },
+ );
+ }}
+ />
+ );
+}
+
+export function Sd() {
const isMobileScreen = useMobileScreen();
const navigate = useNavigate();
const clientConfig = useMemo(() => getClientConfig(), []);
@@ -109,35 +148,6 @@ export async function Sd() {
setSdImages(sdStore.draw);
}, [sdStore.currentId]);
- const useIndexeddb: any = {};
-
- async function getImageData(item: any) {
- let id = item.img_data;
- if (id.indexOf("indexeddb://")) {
- id = id.replace("indexeddb://", "");
- }
- const link = id.split("@");
- if (link.length != 2) {
- return id;
- }
- let db = useIndexeddb[link[0]];
- if (!db) {
- // eslint-disable-next-line react-hooks/rules-of-hooks
- db = useIndexedDB(link[0]);
- useIndexeddb[link[0]] = db;
- }
- db.getByID(link[1]).then((data: any) => {
- console.log(data);
- item.img = data;
- });
- }
-
- sdImages.forEach((item: any) => {
- if (item.status === "success") {
- getImageData(item);
- }
- });
-
return (