Skip to content

Commit 65ee673

Browse files
committed
fix(shopify): enhance error handling in client and server API fetchers
1 parent da350dc commit 65ee673

File tree

2 files changed

+82
-68
lines changed

2 files changed

+82
-68
lines changed

clients/trieve-shopify-extension/app/loaders/clientLoader.ts

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,51 @@ const buildClientAdminApiFetcher = () => {
2020
query: string,
2121
opts: { variables?: any } = {},
2222
): Promise<Result<T>> => {
23-
const result = await tryCatch(
24-
fetch("shopify:admin/api/2025-01/graphql.json", {
25-
method: "POST",
26-
body: JSON.stringify({
27-
query,
28-
variables: opts.variables,
23+
try {
24+
const result = await tryCatch(
25+
fetch("shopify:admin/api/2025-01/graphql.json", {
26+
method: "POST",
27+
body: JSON.stringify({
28+
query,
29+
variables: opts.variables,
30+
}),
2931
}),
30-
}),
31-
);
32+
);
3233

33-
if (result.error) {
34-
return result;
35-
} else {
36-
const data = result.data;
37-
const parsed = await tryCatch(data.json());
34+
if (result.error) {
35+
return result;
36+
} else {
37+
const data = result.data;
38+
const parsed = await tryCatch(data.json());
3839

39-
if (parsed.error) {
40-
return parsed;
41-
}
40+
if (parsed.error) {
41+
return parsed;
42+
}
4243

43-
if (parsed.data.errors) {
44-
return {
45-
error: new Error(JSON.stringify(parsed.data.errors)),
46-
data: null,
47-
};
48-
}
44+
if (parsed.data.errors) {
45+
return {
46+
error: new Error(JSON.stringify(parsed.data.errors)),
47+
data: null,
48+
};
49+
}
4950

50-
if (parsed.data.data) {
51-
return {
52-
data: parsed.data.data,
53-
error: null,
54-
};
55-
} else {
56-
return {
57-
data: null,
58-
error: new Error("No data in response"),
59-
};
51+
if (parsed.data.data) {
52+
return {
53+
data: parsed.data.data,
54+
error: null,
55+
};
56+
} else {
57+
return {
58+
data: null,
59+
error: new Error("No data in response"),
60+
};
61+
}
6062
}
63+
} catch (err) {
64+
return {
65+
data: null,
66+
error: err instanceof Error ? err : new Error(String(err)),
67+
};
6168
}
6269
};
6370
};

clients/trieve-shopify-extension/app/loaders/serverLoader.ts

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -30,48 +30,55 @@ export const buildAdminApiFetcherForServer = (
3030
query: string,
3131
opts: { variables?: any } = {},
3232
): Promise<Result<T>> => {
33-
const result = await tryCatch(
34-
fetch(`https://${storeName}/admin/api/2025-01/graphql.json`, {
35-
method: "POST",
36-
headers: {
37-
"Content-Type": "application/json",
38-
"X-Shopify-Access-Token": accessToken,
39-
},
40-
body: JSON.stringify({
41-
query,
42-
variables: opts.variables,
33+
try {
34+
const result = await tryCatch(
35+
fetch(`https://${storeName}/admin/api/2025-01/graphql.json`, {
36+
method: "POST",
37+
headers: {
38+
"Content-Type": "application/json",
39+
"X-Shopify-Access-Token": accessToken,
40+
},
41+
body: JSON.stringify({
42+
query,
43+
variables: opts.variables,
44+
}),
4345
}),
44-
}),
45-
);
46+
);
4647

47-
if (result.error) {
48-
return result;
49-
} else {
50-
const data = result.data;
51-
const parsed = await tryCatch(data.json());
48+
if (result.error) {
49+
return result;
50+
} else {
51+
const data = result.data;
52+
const parsed = await tryCatch(data.json());
5253

53-
if (parsed.error) {
54-
return parsed;
55-
}
54+
if (parsed.error) {
55+
return parsed;
56+
}
5657

57-
if (parsed.data.errors) {
58-
return {
59-
error: new Error(JSON.stringify(parsed.data.errors)),
60-
data: null,
61-
};
62-
}
58+
if (parsed.data.errors) {
59+
return {
60+
error: new Error(JSON.stringify(parsed.data.errors)),
61+
data: null,
62+
};
63+
}
6364

64-
if (parsed.data.data) {
65-
return {
66-
data: parsed.data.data,
67-
error: null,
68-
};
69-
} else {
70-
return {
71-
data: null,
72-
error: new Error(JSON.stringify(parsed.data.errors)),
73-
};
65+
if (parsed.data.data) {
66+
return {
67+
data: parsed.data.data,
68+
error: null,
69+
};
70+
} else {
71+
return {
72+
data: null,
73+
error: new Error(JSON.stringify(parsed.data.errors)),
74+
};
75+
}
7476
}
77+
} catch (err) {
78+
return {
79+
data: null,
80+
error: err instanceof Error ? err : new Error(String(err)),
81+
};
7582
}
7683
};
7784
};

0 commit comments

Comments
 (0)