feat: deleting column from frontend
This commit is contained in:
@ -147,10 +147,10 @@ func (h *StackHandler) deleteImageFromStack(w http.ResponseWriter, r *http.Reque
|
|||||||
func (h *StackHandler) deleteImageStackSchemaItem(w http.ResponseWriter, r *http.Request) {
|
func (h *StackHandler) deleteImageStackSchemaItem(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
stringImageID := chi.URLParam(r, "stackID")
|
stringStackID := chi.URLParam(r, "stackID")
|
||||||
stringSchemaItemID := chi.URLParam(r, "schemaItemID")
|
stringSchemaItemID := chi.URLParam(r, "schemaItemID")
|
||||||
|
|
||||||
imageID, err := uuid.Parse(stringImageID)
|
stackID, err := uuid.Parse(stringStackID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
@ -169,8 +169,9 @@ func (h *StackHandler) deleteImageStackSchemaItem(w http.ResponseWriter, r *http
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
stack, err := h.stackModel.Get(ctx, schemaItemID)
|
stack, err := h.stackModel.Get(ctx, stackID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
h.logger.Error("could not get stack model", "err", err)
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -185,7 +186,7 @@ func (h *StackHandler) deleteImageStackSchemaItem(w http.ResponseWriter, r *http
|
|||||||
// manipulations. So we could create a middleware.
|
// manipulations. So we could create a middleware.
|
||||||
// If you repeat this 3 times, then organise it :)
|
// If you repeat this 3 times, then organise it :)
|
||||||
|
|
||||||
err = h.stackModel.DeleteSchemaItem(ctx, schemaItemID, imageID)
|
err = h.stackModel.DeleteSchemaItem(ctx, stackID, schemaItemID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.logger.Warn("failed to delete image from list", "error", err)
|
h.logger.Warn("failed to delete image from list", "error", err)
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
@ -7,7 +7,13 @@ import {
|
|||||||
createResource,
|
createResource,
|
||||||
useContext,
|
useContext,
|
||||||
} from "solid-js";
|
} from "solid-js";
|
||||||
import { deleteImage, deleteImageFromStack, getUserImages, JustTheImageWhatAreTheseNames } from "../network";
|
import {
|
||||||
|
deleteImage,
|
||||||
|
deleteImageFromStack,
|
||||||
|
deleteStackItem,
|
||||||
|
getUserImages,
|
||||||
|
JustTheImageWhatAreTheseNames,
|
||||||
|
} from "../network";
|
||||||
|
|
||||||
export type SearchImageStore = {
|
export type SearchImageStore = {
|
||||||
imagesByDate: Accessor<
|
imagesByDate: Accessor<
|
||||||
@ -21,14 +27,16 @@ export type SearchImageStore = {
|
|||||||
onRefetchImages: () => void;
|
onRefetchImages: () => void;
|
||||||
onDeleteImage: (imageID: string) => void;
|
onDeleteImage: (imageID: string) => void;
|
||||||
onDeleteImageFromStack: (stackID: string, imageID: string) => void;
|
onDeleteImageFromStack: (stackID: string, imageID: string) => void;
|
||||||
|
onDeleteStackItem: (stackID: string, schemaItemID: string) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
const SearchImageContext = createContext<SearchImageStore>();
|
const SearchImageContext = createContext<SearchImageStore>();
|
||||||
export const SearchImageContextProvider: Component<ParentProps> = (props) => {
|
export const SearchImageContextProvider: Component<ParentProps> = (props) => {
|
||||||
const [data, { refetch }] = createResource(getUserImages);
|
const [data, { refetch }] = createResource(getUserImages);
|
||||||
|
|
||||||
const sortedImages = createMemo<ReturnType<SearchImageStore["imagesByDate"]>>(
|
const sortedImages = createMemo<
|
||||||
() => {
|
ReturnType<SearchImageStore["imagesByDate"]>
|
||||||
|
>(() => {
|
||||||
const d = data();
|
const d = data();
|
||||||
if (d == null) {
|
if (d == null) {
|
||||||
return [];
|
return [];
|
||||||
@ -53,8 +61,7 @@ export const SearchImageContextProvider: Component<ParentProps> = (props) => {
|
|||||||
return Object.entries(buckets)
|
return Object.entries(buckets)
|
||||||
.map(([date, images]) => ({ date: new Date(date), images }))
|
.map(([date, images]) => ({ date: new Date(date), images }))
|
||||||
.sort((a, b) => b.date.getTime() - a.date.getTime());
|
.sort((a, b) => b.date.getTime() - a.date.getTime());
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SearchImageContext.Provider
|
<SearchImageContext.Provider
|
||||||
@ -68,7 +75,10 @@ export const SearchImageContextProvider: Component<ParentProps> = (props) => {
|
|||||||
},
|
},
|
||||||
onDeleteImageFromStack: (stackID: string, imageID: string) => {
|
onDeleteImageFromStack: (stackID: string, imageID: string) => {
|
||||||
deleteImageFromStack(stackID, imageID).then(refetch);
|
deleteImageFromStack(stackID, imageID).then(refetch);
|
||||||
}
|
},
|
||||||
|
onDeleteStackItem: (stackID: string, schemaItemID: string) => {
|
||||||
|
deleteStackItem(stackID, schemaItemID).then(refetch);
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{props.children}
|
{props.children}
|
||||||
|
@ -121,6 +121,18 @@ export const deleteImageFromStack = async (listID: string, imageID: string): Pro
|
|||||||
await fetch(request);
|
await fetch(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const deleteStackItem = async (
|
||||||
|
stackID: string,
|
||||||
|
schemaItemID: string,
|
||||||
|
): Promise<void> => {
|
||||||
|
const request = await getBaseAuthorizedRequest({
|
||||||
|
path: `stacks/${stackID}/${schemaItemID}`,
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
|
||||||
|
await fetch(request);
|
||||||
|
}
|
||||||
|
|
||||||
export const deleteList = async (listID: string): Promise<void> => {
|
export const deleteList = async (listID: string): Promise<void> => {
|
||||||
const request = await getBaseAuthorizedRequest({
|
const request = await getBaseAuthorizedRequest({
|
||||||
path: `stacks/${listID}`,
|
path: `stacks/${listID}`,
|
||||||
|
Reference in New Issue
Block a user