☙◦ The Tablet ❀ GamerGirlandCo ◦❧
ba05134015
mainly intended to avoid repitition in long lists of data like stories, authors, and/or bands
79 lines
1.4 KiB
TypeScript
79 lines
1.4 KiB
TypeScript
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,
|
|
};
|