feat: sending images and receiving them is now working

This commit is contained in:
2025-03-08 13:13:05 +00:00
parent 03a4d49ee6
commit e5ac7061f4
4 changed files with 21 additions and 9 deletions

View File

@ -24,6 +24,8 @@ func SaveImageToProcess(userId string, imageName string, imageData []byte) (mode
stmt := UserImagesToProcess.INSERT(UserImagesToProcess.UserID, UserImagesToProcess.ImageID).VALUES(userId, image.ID).RETURNING(UserImagesToProcess.AllColumns) stmt := UserImagesToProcess.INSERT(UserImagesToProcess.UserID, UserImagesToProcess.ImageID).VALUES(userId, image.ID).RETURNING(UserImagesToProcess.AllColumns)
fmt.Println(stmt.DebugSql())
userImage := model.UserImagesToProcess{} userImage := model.UserImagesToProcess{}
err = stmt.Query(db, &userImage) err = stmt.Query(db, &userImage)

View File

@ -1,8 +1,10 @@
import { createSignal } from "solid-js"; import { createEffect, createResource, createSignal, For } from "solid-js";
import { Search } from "@kobalte/core/search"; import { Search } from "@kobalte/core/search";
import { IconSearch, IconRefresh } from "@tabler/icons-solidjs"; import { IconSearch, IconRefresh } from "@tabler/icons-solidjs";
import clsx from "clsx"; import clsx from "clsx";
import { ImageViewer } from "./components/ImageViewer"; import { ImageViewer } from "./components/ImageViewer";
import { getUserImages } from "./network";
import { image } from "@tauri-apps/api";
type Emoji = { type Emoji = {
emoji: string; emoji: string;
@ -13,6 +15,12 @@ function App() {
const [options, setOptions] = createSignal<Emoji[]>([]); const [options, setOptions] = createSignal<Emoji[]>([]);
const [emoji, setEmoji] = createSignal<Emoji | null>(null); const [emoji, setEmoji] = createSignal<Emoji | null>(null);
const [images] = createResource(getUserImages);
createEffect(() => {
console.log(images()?.map(image => image.ID))
});
const emojiData: Emoji[] = [ const emojiData: Emoji[] = [
{ emoji: "😀", name: "Grinning Face" }, { emoji: "😀", name: "Grinning Face" },
{ emoji: "😃", name: "Grinning Face with Big Eyes" }, { emoji: "😃", name: "Grinning Face with Big Eyes" },
@ -97,6 +105,11 @@ function App() {
<div class="col-span-3 row-span-3 bg-blue-200 rounded-xl" /> <div class="col-span-3 row-span-3 bg-blue-200 rounded-xl" />
<div class="col-span-3 row-span-3 bg-green-200 rounded-xl" /> <div class="col-span-3 row-span-3 bg-green-200 rounded-xl" />
<div class="col-span-6 row-span-3 bg-yellow-200 rounded-xl" /> <div class="col-span-6 row-span-3 bg-yellow-200 rounded-xl" />
<For each={images()}>
{(image) => (
<img src={`http://localhost:3040/image/${image.ID}`} class="col-span-3 row-span-3 rounded-xl" />
)}
</For>
</div> </div>
</div> </div>
</div> </div>

View File

@ -12,10 +12,8 @@ export function ImageViewer() {
console.log("Received processed PNG", event); console.log("Received processed PNG", event);
const base64Data = event.payload as string; const base64Data = event.payload as string;
const urlImage = `data:image/png;base64,${base64Data}`; setLatestImage(`data:image/png;base64,${base64Data}`);
setLatestImage(urlImage); sendImage("test-image.png", base64Data);
sendImage("test-image.png", urlImage);
}); });
return () => { return () => {

View File

@ -32,16 +32,15 @@ const sendImageResponseValidator = object({
export const sendImage = async ( export const sendImage = async (
imageName: string, imageName: string,
image: BlobPart, base64Image: string,
): Promise<InferOutput<typeof sendImageResponseValidator>> => { ): Promise<InferOutput<typeof sendImageResponseValidator>> => {
const data = new Blob([image]);
const request = getBaseRequest({ const request = getBaseRequest({
path: `image/${imageName}`, path: `image/${imageName}`,
body: data, body: base64Image,
method: "POST", method: "POST",
}); });
request.headers.set("Content-Type", "aplication/base64"); request.headers.set("Content-Type", "application/base64");
const res = await fetch(request).then((res) => res.json()); const res = await fetch(request).then((res) => res.json());