Skip to content

Commit b08cbad

Browse files
committed
refactored api module
1 parent c6b404b commit b08cbad

15 files changed

+124
-111
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { Input } from "@/lib/types/model/channel";
22
import type { ContributionState } from "@/lib/types/state/contribution";
33
import type { ComponentState } from "@/lib/types/state/component";
4-
import { isSubscriptable } from "@/lib/utils/isSubscriptable";
54
import { isContainerState } from "@/lib/actions/helpers/isContainerState";
65
import { getValue } from "@/lib/utils/objPath";
6+
import { isObject } from "@/lib/utils/isObject";
77

88
export function getInputValues<S extends object = object>(
99
inputs: Input[],
@@ -67,10 +67,10 @@ export function getInputValueFromState(
6767
state: unknown,
6868
): unknown | undefined {
6969
let inputValue: unknown = state;
70-
if (input.id && isSubscriptable(inputValue)) {
70+
if (input.id && isObject(inputValue)) {
7171
inputValue = inputValue[input.id];
7272
}
73-
if (isSubscriptable(inputValue)) {
73+
if (isObject(inputValue)) {
7474
inputValue = getValue(inputValue, input.property);
7575
}
7676
return inputValue;

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

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { store } from "@/lib/store";
22
import type { CallbackRequest } from "@/lib/types/model/callback";
3-
import { fetchApiResult } from "@/lib/utils/fetchApiResult";
4-
import { fetchStateChangeRequests } from "@/lib/api/fetchStateChangeRequests";
3+
import { fetchCallback } from "@/lib/api/fetchCallback";
54
import { applyStateChangeRequests } from "@/lib/actions/helpers/applyStateChangeRequests";
65

76
export function invokeCallbacks(callbackRequests: CallbackRequest[]) {
@@ -13,28 +12,26 @@ export function invokeCallbacks(callbackRequests: CallbackRequest[]) {
1312
if (import.meta.env.DEV) {
1413
console.debug(`invokeCallbacks (${invocationId})-->`, callbackRequests);
1514
}
16-
fetchApiResult(
17-
fetchStateChangeRequests,
18-
callbackRequests,
19-
configuration.api,
20-
).then((changeRequestsResult) => {
21-
if (changeRequestsResult.data) {
22-
if (import.meta.env.DEV) {
23-
console.debug(
24-
`invokeCallbacks <--(${invocationId})`,
25-
changeRequestsResult.data,
15+
fetchCallback(callbackRequests, configuration.api).then(
16+
(changeRequestsResult) => {
17+
if (changeRequestsResult.data) {
18+
if (import.meta.env.DEV) {
19+
console.debug(
20+
`invokeCallbacks <--(${invocationId})`,
21+
changeRequestsResult.data,
22+
);
23+
}
24+
applyStateChangeRequests(changeRequestsResult.data);
25+
} else {
26+
console.error(
27+
"callback failed:",
28+
changeRequestsResult.error,
29+
"for call requests:",
30+
callbackRequests,
2631
);
2732
}
28-
applyStateChangeRequests(changeRequestsResult.data);
29-
} else {
30-
console.error(
31-
"callback failed:",
32-
changeRequestsResult.error,
33-
"for call requests:",
34-
callbackRequests,
35-
);
36-
}
37-
});
33+
},
34+
);
3835
}
3936

4037
let invocationCounter = 0;

dashi/src/lib/actions/initializeContributions.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { store } from "@/lib/store";
2-
import { type ApiResult, fetchApiResult } from "@/lib/utils/fetchApiResult";
2+
import { type ApiResult } from "@/lib/api/types";
33
import { fetchContributions } from "@/lib/api/fetchContributions";
44
import { type Contribution } from "@/lib/types/model/contribution";
55
import { type ContributionState } from "@/lib/types/state/contribution";
@@ -16,9 +16,7 @@ export function initializeContributions<S extends object = object>(
1616
}
1717
const { configuration } = store.getState();
1818
store.setState({ contributionsResult: { status: "pending" } });
19-
fetchApiResult(fetchContributions, configuration.api).then(
20-
initializeContributionsLater,
21-
);
19+
fetchContributions(configuration.api).then(initializeContributionsLater);
2220
}
2321

2422
function initializeContributionsLater(

dashi/src/lib/actions/updateContributionContainer.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { store } from "@/lib/store";
2-
import { fetchInitialComponentState } from "@/lib/api/fetchInitialComponentState";
3-
import { fetchApiResult } from "@/lib/utils/fetchApiResult";
2+
import { fetchLayout } from "@/lib/api/fetchLayout";
43
import { getInputValues } from "@/lib/actions/helpers/getInputValues";
54
import { updateArray } from "@/lib/utils/updateArray";
65
import type { ContribPoint } from "@/lib/types/model/extension";
@@ -30,8 +29,7 @@ export function updateContributionContainer<S extends object = object>(
3029
componentResult: { status: "pending" },
3130
});
3231
const inputValues = getLayoutInputValues(contribPoint, contribIndex);
33-
fetchApiResult(
34-
fetchInitialComponentState,
32+
fetchLayout(
3533
contribPoint,
3634
contribIndex,
3735
inputValues,

dashi/src/lib/api/common.ts

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

dashi/src/lib/api/fetchCallback.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {
2+
type CallbackRequest,
3+
type StateChangeRequest,
4+
} from "@/lib/types/model/callback";
5+
import { makeUrl, callApi, fetchApiResult } from "./helpers";
6+
import type { ApiOptions, ApiResult } from "./types";
7+
8+
export async function fetchCallback(
9+
callbackRequests: CallbackRequest[],
10+
options?: ApiOptions,
11+
): Promise<ApiResult<StateChangeRequest[]>> {
12+
return fetchApiResult(_fetchCallback, callbackRequests, options);
13+
}
14+
15+
async function _fetchCallback(
16+
callbackRequests: CallbackRequest[],
17+
options?: ApiOptions,
18+
): Promise<StateChangeRequest[]> {
19+
return callApi(makeUrl("callback", options), {
20+
body: JSON.stringify({ callbackRequests }),
21+
method: "post",
22+
});
23+
}

dashi/src/lib/api/fetchContributions.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import { type Contributions } from "@/lib/types/model/extension";
22
import { type Callback } from "@/lib/types/model/callback";
3-
import { callApi } from "@/lib/utils/fetchApiResult";
43
import { toObjPath } from "@/lib/utils/objPath";
54
import { mapObject } from "@/lib/utils/mapObject";
65
import type { Contribution } from "@/lib/types/model/contribution";
76
import type { Channel } from "@/lib/types/model/channel";
8-
import type { ApiOptions } from "@/lib/api/types";
9-
import { makeUrl } from "@/lib/api/common";
7+
import { makeUrl, callApi, fetchApiResult } from "./helpers";
8+
import type { ApiOptions, ApiResult } from "./types";
109

1110
export async function fetchContributions(
1211
options?: ApiOptions,
12+
): Promise<ApiResult<Contributions>> {
13+
return fetchApiResult(_fetchContributions, options);
14+
}
15+
16+
export async function _fetchContributions(
17+
options?: ApiOptions,
1318
): Promise<Contributions> {
1419
return callApi<Contributions>(
1520
makeUrl("contributions", options),

dashi/src/lib/api/fetchInitialComponentState.ts

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

dashi/src/lib/api/fetchLayout.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { type ComponentState } from "@/lib/types/state/component";
2+
import { type ContribPoint } from "@/lib/types/model/extension";
3+
import { makeUrl, callApi, fetchApiResult } from "./helpers";
4+
import type { ApiOptions, ApiResult } from "./types";
5+
6+
export async function fetchLayout(
7+
contribPoint: ContribPoint,
8+
contribIndex: number,
9+
inputValues: unknown[],
10+
options?: ApiOptions,
11+
): Promise<ApiResult<ComponentState>> {
12+
return fetchApiResult(
13+
_fetchLayout,
14+
contribPoint,
15+
contribIndex,
16+
inputValues,
17+
options,
18+
);
19+
}
20+
21+
async function _fetchLayout(
22+
contribPoint: ContribPoint,
23+
contribIndex: number,
24+
inputValues: unknown[],
25+
options?: ApiOptions,
26+
): Promise<ComponentState> {
27+
return callApi(makeUrl(`layout/${contribPoint}/${contribIndex}`, options), {
28+
body: JSON.stringify({ inputValues }),
29+
method: "post",
30+
});
31+
}

dashi/src/lib/api/fetchStateChangeRequests.ts

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

0 commit comments

Comments
 (0)