ae8134fd64
Release package / release (push) Failing after 7m21s
Co-authored-by: TakahashiNg <83152264+TakahashiNguyen@users.noreply.github.com> Reviewed-on: #38
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import {
|
|
ApolloClient,
|
|
ApolloLink,
|
|
HttpLink,
|
|
InMemoryCache,
|
|
Observable,
|
|
} from "@apollo/client";
|
|
|
|
const responseWrapperLink = new ApolloLink((operation, forward) => {
|
|
return new Observable((observer) => {
|
|
const handle = forward(operation).subscribe({
|
|
next: (response) => {
|
|
// Kiểm tra nếu dữ liệu trả về bị "trần" (thiếu data property)
|
|
if (
|
|
response &&
|
|
!Object.prototype.hasOwnProperty.call(response, "data")
|
|
) {
|
|
// Khởi tạo một object mới theo chuẩn GraphQL
|
|
const formattedResponse = {
|
|
data: response,
|
|
errors: (response as any).errors,
|
|
};
|
|
observer.next(formattedResponse);
|
|
} else {
|
|
observer.next(response);
|
|
}
|
|
},
|
|
error: observer.error.bind(observer),
|
|
complete: observer.complete.bind(observer),
|
|
});
|
|
|
|
return () => {
|
|
if (handle) handle.unsubscribe();
|
|
};
|
|
});
|
|
});
|
|
|
|
export const cartClient = new ApolloClient({
|
|
link: ApolloLink.from([
|
|
responseWrapperLink,
|
|
new HttpLink({ uri: "/api/cart/graphql" }),
|
|
]),
|
|
cache: new InMemoryCache(),
|
|
});
|
|
|
|
export const eateryClient = new ApolloClient({
|
|
link: ApolloLink.from([
|
|
responseWrapperLink,
|
|
new HttpLink({ uri: "/api/eatery/graphql" }),
|
|
]),
|
|
cache: new InMemoryCache(),
|
|
});
|