Skip to content

Commit 0d7067e

Browse files
committed
split api.ts
1 parent 253674c commit 0d7067e

File tree

10 files changed

+109
-130
lines changed

10 files changed

+109
-130
lines changed

dashi/src/lib/actions/helpers/invokeCallbacks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { store } from "@/lib/store";
22
import type { CallbackRequest } from "@/lib/types/model/callback";
33
import { fetchApiResult } from "@/lib/utils/fetchApiResult";
4-
import { fetchStateChangeRequests } from "@/lib/api";
4+
import { fetchStateChangeRequests } from "@/lib/api/fetchStateChangeRequests";
55
import { applyStateChangeRequests } from "@/lib/actions/helpers/applyStateChangeRequests";
66

77
export function invokeCallbacks(callbackRequests: CallbackRequest[]) {

dashi/src/lib/actions/initializeContributions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { store } from "@/lib/store";
22
import { type ApiResult, fetchApiResult } from "@/lib/utils/fetchApiResult";
3-
import { fetchContributions } from "@/lib/api";
3+
import { fetchContributions } from "@/lib/api/fetchContributions";
44
import { type Contribution } from "@/lib/types/model/contribution";
55
import { type ContributionState } from "@/lib/types/state/contribution";
66
import {

dashi/src/lib/actions/updateContributionContainer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { store } from "@/lib/store";
2-
import { fetchInitialComponentState } from "@/lib/api";
2+
import { fetchInitialComponentState } from "@/lib/api/fetchInitialComponentState";
33
import { fetchApiResult } from "@/lib/utils/fetchApiResult";
44
import { getInputValues } from "@/lib/actions/helpers/getInputValues";
55
import { updateArray } from "@/lib/utils/updateArray";

dashi/src/lib/api.ts

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

dashi/src/lib/api/common.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { ApiOptions } from "@/lib/api/types";
2+
3+
const defaultServerUrl = "http://localhost:8888";
4+
const defaultEndpointName = "dashi";
5+
6+
export function makeUrl(path: string, options?: ApiOptions): string {
7+
const serverUrl = options?.serverUrl || defaultServerUrl;
8+
const endpointName = options?.endpointName || defaultEndpointName;
9+
return `${serverUrl}/${endpointName}/${path}`;
10+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { type Contributions } from "@/lib/types/model/extension";
2+
import { type Callback } from "@/lib/types/model/callback";
3+
import { callApi } from "@/lib/utils/fetchApiResult";
4+
import { toObjPath } from "@/lib/utils/objPath";
5+
import { mapObject } from "@/lib/utils/mapObject";
6+
import type { Contribution } from "@/lib/types/model/contribution";
7+
import type { Channel } from "@/lib/types/model/channel";
8+
import type { ApiOptions } from "@/lib/api/types";
9+
import { makeUrl } from "@/lib/api/common";
10+
11+
export async function fetchContributions(
12+
options?: ApiOptions,
13+
): Promise<Contributions> {
14+
return callApi<Contributions>(
15+
makeUrl("contributions", options),
16+
undefined,
17+
(contributions: Contributions) => ({
18+
...contributions,
19+
contributions: mapObject(
20+
contributions.contributions,
21+
(contributions: Contribution[]) =>
22+
contributions.map(
23+
(contribution): Contribution => ({
24+
...contribution,
25+
layout: contribution.layout
26+
? normalizeCallback(contribution.layout)
27+
: undefined,
28+
callbacks: normalizeCallbacks(contribution.callbacks),
29+
}),
30+
),
31+
),
32+
}),
33+
);
34+
}
35+
36+
function normalizeCallbacks(callbacks: Callback[] | undefined): Callback[] {
37+
return callbacks ? callbacks.map(normalizeCallback) : [];
38+
}
39+
40+
function normalizeCallback(callback: Callback): Callback {
41+
return {
42+
...callback,
43+
inputs: callback.inputs ? normalizeChannels(callback.inputs) : [],
44+
outputs: callback.outputs ? normalizeChannels(callback.outputs) : [],
45+
};
46+
}
47+
48+
function normalizeChannels<S extends Channel>(channels: S[]): S[] {
49+
return channels ? channels.map(normalizeChannel) : [];
50+
}
51+
52+
function normalizeChannel<S extends Channel>(channel: S): S {
53+
return {
54+
...channel,
55+
property: toObjPath(channel.property),
56+
};
57+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { type ComponentState } from "@/lib/types/state/component";
2+
import { type ContribPoint } from "@/lib/types/model/extension";
3+
import { callApi } from "@/lib/utils/fetchApiResult";
4+
import type { ApiOptions } from "@/lib/api/types";
5+
import { makeUrl } from "@/lib/api/common";
6+
7+
export async function fetchInitialComponentState(
8+
contribPoint: ContribPoint,
9+
contribIndex: number,
10+
inputValues: unknown[],
11+
options?: ApiOptions,
12+
): Promise<ComponentState> {
13+
return callApi(makeUrl(`layout/${contribPoint}/${contribIndex}`, options), {
14+
body: JSON.stringify({ inputValues }),
15+
method: "post",
16+
});
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {
2+
type CallbackRequest,
3+
type StateChangeRequest,
4+
} from "@/lib/types/model/callback";
5+
import { callApi } from "@/lib/utils/fetchApiResult";
6+
import type { ApiOptions } from "@/lib/api/types";
7+
import { makeUrl } from "@/lib/api/common";
8+
9+
export async function fetchStateChangeRequests(
10+
callbackRequests: CallbackRequest[],
11+
options?: ApiOptions,
12+
): Promise<StateChangeRequest[]> {
13+
return callApi(makeUrl("callback", options), {
14+
body: JSON.stringify({ callbackRequests }),
15+
method: "post",
16+
});
17+
}

dashi/src/lib/api/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface ApiOptions {
2+
serverUrl?: string;
3+
endpointName?: string;
4+
}

dashi/src/lib/types/state/store.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type {
55
} from "@/lib/types/model/extension";
66
import type { ApiResult } from "@/lib/utils/fetchApiResult";
77
import type { ContributionState } from "@/lib/types/state/contribution";
8-
import type { ApiOptions } from "@/lib/api";
8+
import type { ApiOptions } from "@/lib/api/types";
99
import type { LoggingOptions } from "@/lib/actions/helpers/configureLogging";
1010
import type { StoreApi } from "zustand";
1111

0 commit comments

Comments
 (0)