Skip to content

Commit cd6b772

Browse files
committed
Support unmodified meta objects in frontend api
1 parent 29a4ac4 commit cd6b772

File tree

4 files changed

+36
-294
lines changed

4 files changed

+36
-294
lines changed

frontend/src/api/npm/base.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ function buildAuthHeader(): Record<string, string> | undefined {
2222
return {};
2323
}
2424

25-
function buildBody(data?: Record<string, any>) {
25+
function buildBody(data?: Record<string, any>, skipDecamelize = false) {
2626
if (data) {
27-
return JSON.stringify(decamelizeKeys(data));
27+
return JSON.stringify(skipDecamelize ? data : decamelizeKeys(data));
2828
}
2929
}
3030

@@ -57,10 +57,12 @@ export async function get(
5757
interface PostArgs {
5858
url: string;
5959
data?: any;
60+
skipCamelize?: boolean;
61+
skipDecamelize?: boolean;
6062
}
6163

6264
export async function post(
63-
{ url, data }: PostArgs,
65+
{ url, data, skipCamelize, skipDecamelize }: PostArgs,
6466
abortController?: AbortController,
6567
) {
6668
const apiUrl = buildUrl({ url });
@@ -70,17 +72,19 @@ export async function post(
7072
[contentTypeHeader]: "application/json",
7173
};
7274
const signal = abortController?.signal;
73-
const body = buildBody(data);
75+
const body = buildBody(data, skipDecamelize);
7476
const response = await fetch(apiUrl, { method, headers, body, signal });
75-
return processResponse(response);
77+
return processResponse(response, skipCamelize);
7678
}
7779

7880
interface PutArgs {
7981
url: string;
8082
data?: any;
83+
skipCamelize?: boolean;
84+
skipDecamelize?: boolean;
8185
}
8286
export async function put(
83-
{ url, data }: PutArgs,
87+
{ url, data, skipCamelize, skipDecamelize }: PutArgs,
8488
abortController?: AbortController,
8589
) {
8690
const apiUrl = buildUrl({ url });
@@ -90,7 +94,7 @@ export async function put(
9094
[contentTypeHeader]: "application/json",
9195
};
9296
const signal = abortController?.signal;
93-
const body = buildBody(data);
97+
const body = buildBody(data, skipDecamelize);
9498
const response = await fetch(apiUrl, { method, headers, body, signal });
95-
return processResponse(response);
99+
return processResponse(response, skipCamelize);
96100
}

frontend/src/api/npm/createDNSProvider.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
1+
import { decamelizeKeys } from "humps";
2+
13
import * as api from "./base";
24
import { DNSProvider } from "./models";
35

46
export async function createDNSProvider(
57
data: DNSProvider,
68
abortController?: AbortController,
79
): Promise<DNSProvider> {
10+
// Because the meta property of the data should not be decamelized,
11+
// we're going to decamelize the rest here instead of in base.ts
12+
let dcData: any = decamelizeKeys(data);
13+
if (typeof data.meta !== "undefined") {
14+
dcData.meta = data.meta;
15+
}
16+
817
const { result } = await api.post(
918
{
1019
url: "/dns-providers",
11-
data,
20+
data: dcData,
21+
skipCamelize: true,
22+
skipDecamelize: true,
1223
},
1324
abortController,
1425
);

frontend/src/api/npm/setDNSProvider.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { decamelizeKeys } from "humps";
2+
13
import * as api from "./base";
24
import { DNSProvider } from "./models";
35

@@ -9,9 +11,18 @@ export async function setDNSProvider(
911
delete data.id;
1012
}
1113

14+
// Because the meta property of the data should not be decamelized,
15+
// we're going to decamelize the rest here instead of in base.ts
16+
let dcData: any = decamelizeKeys(data);
17+
if (typeof data.meta !== "undefined") {
18+
dcData.meta = data.meta;
19+
}
20+
1221
const { result } = await api.put({
1322
url: `/dns-providers/${id}`,
14-
data,
23+
data: dcData,
24+
skipCamelize: true,
25+
skipDecamelize: true,
1526
});
1627
return result;
1728
}

frontend/src/modals/DNSProviderCreateModal copy.tsx

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

0 commit comments

Comments
 (0)