MCPcopy Create free account
hub / github.com/bytebase/bytebase / createSheetSlice

Function createSheetSlice

frontend/src/react/stores/app/sheet.ts:18–93  ·  view source on GitHub ↗
(set, get)

Source from the content-addressed store, hash-verified

16}
17
18export const createSheetSlice: AppSliceCreator<SheetSlice> = (set, get) => ({
19 sheetsByName: {},
20 sheetRequests: {},
21 sheetErrorsByName: {},
22
23 fetchSheet: async (name, raw = false) => {
24 if (!isValidSheetName(name)) return undefined;
25 if (!raw) {
26 const existing = get().sheetsByName[name];
27 if (existing) return existing;
28 }
29 const pending = get().sheetRequests[name];
30 if (pending) return pending;
31
32 const request = sheetServiceClientConnect
33 .getSheet(createProto(GetSheetRequestSchema, { name, raw }))
34 .then((sheet: Sheet) => {
35 set((state) => {
36 const { [name]: _, ...sheetRequests } = state.sheetRequests;
37 return {
38 sheetsByName: {
39 ...state.sheetsByName,
40 [sheet.name]: sheet,
41 },
42 sheetErrorsByName: {
43 ...state.sheetErrorsByName,
44 [name]: undefined,
45 },
46 sheetRequests,
47 };
48 });
49 return sheet;
50 })
51 .catch((error) => {
52 set((state) => {
53 const { [name]: _, ...sheetRequests } = state.sheetRequests;
54 return {
55 sheetErrorsByName: {
56 ...state.sheetErrorsByName,
57 [name]: toError(error),
58 },
59 sheetRequests,
60 };
61 });
62 return undefined;
63 });
64 set((state) => ({
65 sheetRequests: {
66 ...state.sheetRequests,
67 [name]: request,
68 },
69 }));
70 return request;
71 },
72
73 createSheet: async (parent, sheet) => {
74 const response = await sheetServiceClientConnect.createSheet(
75 createProto(CreateSheetRequestSchema, { parent, sheet })

Callers 1

createAppStoreFunction · 0.90

Calls 6

toErrorFunction · 0.90
isValidSheetNameFunction · 0.85
getFunction · 0.85
setFunction · 0.85
getSheetMethod · 0.80
createSheetMethod · 0.45

Tested by

no test coverage detected