feat: allowing user to get a list of their images

feat: UI to show and organise user images
This commit is contained in:
2025-05-05 15:38:23 +01:00
parent 9c325c7799
commit 07b83aa728
8 changed files with 199 additions and 80 deletions

View File

@@ -4,6 +4,7 @@ import {
type InferOutput,
array,
literal,
null_,
nullable,
parse,
pipe,
@@ -84,6 +85,7 @@ export const sendImage = async (
const locationValidator = strictObject({
ID: pipe(string(), uuid()),
CreatedAt: pipe(string()),
Name: string(),
Address: nullable(string()),
Description: nullable(string()),
@@ -92,6 +94,7 @@ const locationValidator = strictObject({
const contactValidator = strictObject({
ID: pipe(string(), uuid()),
CreatedAt: pipe(string()),
Name: string(),
Description: nullable(string()),
PhoneNumber: nullable(string()),
@@ -101,6 +104,7 @@ const contactValidator = strictObject({
const eventValidator = strictObject({
ID: pipe(string(), uuid()),
CreatedAt: pipe(string()),
Name: string(),
StartDateTime: nullable(pipe(string())),
EndDateTime: nullable(pipe(string())),
@@ -114,6 +118,7 @@ const eventValidator = strictObject({
const noteValidator = strictObject({
ID: pipe(string(), uuid()),
CreatedAt: pipe(string()),
Name: string(),
Description: nullable(string()),
Content: string(),
@@ -146,18 +151,36 @@ const dataTypeValidator = variant("type", [
noteDataType,
contactDataType,
]);
const getUserImagesResponseValidator = array(dataTypeValidator);
const userImageValidator = strictObject({
ID: pipe(string(), uuid()),
CreatedAt: pipe(string()),
ImageID: pipe(string(), uuid()),
UserID: pipe(string(), uuid()),
Image: strictObject({
ID: pipe(string(), uuid()),
ImageName: string(),
Image: null_(),
}),
});
export type UserImage = InferOutput<typeof dataTypeValidator>;
export const getUserImages = async (): Promise<UserImage[]> => {
const imageRequestValidator = strictObject({
UserImages: array(userImageValidator),
ImageProperties: array(dataTypeValidator),
});
export const getUserImages = async (): Promise<
InferOutput<typeof imageRequestValidator>
> => {
const request = getBaseAuthorizedRequest({ path: "image" });
const res = await fetch(request).then((res) => res.json());
console.log("BACKEND RESPONSE: ", res);
return parse(getUserImagesResponseValidator, res);
return parse(imageRequestValidator, res);
};
export const getImage = async (imageId: string): Promise<UserImage> => {