refactor(client-side): create utilities
mainly intended to avoid repitition in long lists of data like stories, authors, and/or bands
This commit is contained in:
parent
00d4467b87
commit
ba05134015
78
lib/client/listActions.ts
Normal file
78
lib/client/listActions.ts
Normal file
@ -0,0 +1,78 @@
|
||||
import { ListGridType } from "ant-design-vue/es/list";
|
||||
import { FavPayload, HidePayload, SubPayload } from "./types/form/favSub";
|
||||
|
||||
const base = `/user/me`;
|
||||
|
||||
export const favourites = (
|
||||
values: (any & { _id: number })[],
|
||||
id: number,
|
||||
remove: boolean,
|
||||
type: "story" | "author",
|
||||
) => {
|
||||
values?.splice(
|
||||
values!.findIndex((a) => a._id == id),
|
||||
1,
|
||||
);
|
||||
const key = type === "story" ? "stories" : "authors";
|
||||
const todo = [id];
|
||||
useApiFetch(`${base}/favs`, {
|
||||
method: "put",
|
||||
body: {
|
||||
[key]: {
|
||||
pull: remove ? todo : [],
|
||||
push: !remove ? todo : [],
|
||||
},
|
||||
} as FavPayload,
|
||||
});
|
||||
};
|
||||
|
||||
export const subscriptions = (
|
||||
values: (any & { _id: number })[],
|
||||
id: number,
|
||||
action: "hide" | "subscribe" | "unsubscribe",
|
||||
type: "bands" | "authors",
|
||||
) => {
|
||||
values?.splice(
|
||||
values!.findIndex((a) => a._id == id),
|
||||
1,
|
||||
);
|
||||
if (action == "hide") {
|
||||
useApiFetch(`${base}/${action}`, {
|
||||
body: {
|
||||
push: {
|
||||
[type]: [id],
|
||||
},
|
||||
pull: {},
|
||||
} as HidePayload,
|
||||
method: "put",
|
||||
});
|
||||
} else if (action == "subscribe") {
|
||||
useApiFetch(`${base}/subscriptions`, {
|
||||
body: {
|
||||
push: {
|
||||
[type]: [id],
|
||||
},
|
||||
pull: {},
|
||||
} as SubPayload,
|
||||
method: "put",
|
||||
});
|
||||
} else if (action == "unsubscribe") {
|
||||
useApiFetch(`${base}/subscriptions`, {
|
||||
body: {
|
||||
pull: {
|
||||
[type]: [id],
|
||||
},
|
||||
push: {},
|
||||
} as SubPayload,
|
||||
method: "put",
|
||||
});
|
||||
}
|
||||
};
|
||||
export const bp: ListGridType = {
|
||||
gutter: 1,
|
||||
xs: 1,
|
||||
sm: 2,
|
||||
md: 3,
|
||||
lg: 4,
|
||||
xl: 5,
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user