import { computed, watch } from "vue" import { useFile } from "@/hooks/useFile.hook" import { resolvePath } from "@/modules/repo/services/resolvePath" import { useUserRepoStore } from "@/modules/repo/store/userRepo.store" const SRC_PREFIX = "data:image/jpeg;charset=utf-8;base64," export const useImages = (sha: string) => { const store = useUserRepoStore() const currentFilePath = computed( () => store.files.find((file) => file.sha === sha)?.path ) watch( currentFilePath, (filePath) => { if (!filePath) { return } const images = document.querySelectorAll(`.note-${sha} img`) images.forEach(async (image) => { const src = image.getAttribute("src") if (!src || src.startsWith(SRC_PREFIX)) { return } const imageFilePath = resolvePath( filePath, image.getAttribute("src") ?? "" ) const imageFile = store.files.find( (file) => file.path === imageFilePath ) if (!imageFile?.sha) { return } const { getCachedFileContent } = useFile(imageFile.sha, false) const fileContent = await getCachedFileContent() image.setAttribute("src", `${SRC_PREFIX} ${fileContent}`) }) }, { immediate: true } ) }