Skip to content

Commit cd0939b

Browse files
authored
Merge pull request #1403 from chhsiao1981/refactor-server-api
refactor api.serverApi and api.types.
2 parents ee903fe + fe4abd8 commit cd0939b

File tree

29 files changed

+700
-569
lines changed

29 files changed

+700
-569
lines changed

src/api/api.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import config from "config";
22
import { Cookies } from "react-cookie";
3+
import type { List } from "../api/types";
34
import { STATUS_UNAUTHORIZED } from "./constants";
45

56
export type Query = Record<string, any>;
@@ -76,7 +77,10 @@ const collectionJsonLinkToJson = (links: any[]) => {
7677
}, {});
7778
};
7879

79-
export const collectionJsonToJson = (theData: any, isLink = false) => {
80+
export const collectionJsonToJson = <T>(
81+
theData: any,
82+
isLink = false,
83+
): T | T[] | List<T> => {
8084
if (isLink) {
8185
return collectionJsonLinkToJson(theData.collection.links);
8286
}

src/api/serverApi.ts

Lines changed: 0 additions & 296 deletions
This file was deleted.

src/api/serverApi/data.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import api, { type ApiResult } from "../api";
2+
import type { Data } from "../types";
3+
import { createPkgInstance } from "./pkgInstance";
4+
5+
export const getData = (dataID: number) =>
6+
api<Data>({
7+
endpoint: `/${dataID}/`,
8+
method: "get",
9+
});
10+
11+
export const updateDataName = (dataID: number, dataName: string) =>
12+
api<Data>({
13+
endpoint: `/${dataID}/`,
14+
method: "put",
15+
json: {
16+
name: dataName,
17+
},
18+
});
19+
20+
export const updateDataPublic = (dataID: number, isPublic = true) =>
21+
api<Data>({
22+
endpoint: `/${dataID}/`,
23+
method: "put",
24+
json: {
25+
public: isPublic,
26+
},
27+
});
28+
29+
export const createDataWithFilepath = async (
30+
filepath: string,
31+
theName: string,
32+
// biome-ignore lint/correctness/noUnusedFunctionParameters: not using tags for now.
33+
tags?: string[],
34+
isPublic: boolean = false,
35+
): Promise<ApiResult<Data>> => {
36+
const { status, data, errmsg } = await createPkgInstance(1, [filepath]);
37+
if (!data) {
38+
return {
39+
errmsg,
40+
status,
41+
};
42+
}
43+
44+
const { feed_id: dataID } = data;
45+
46+
await updateDataName(dataID, theName);
47+
48+
if (isPublic) {
49+
await updateDataPublic(dataID, true);
50+
}
51+
52+
const dataResult = await getData(dataID);
53+
54+
return dataResult;
55+
};

0 commit comments

Comments
 (0)