chore: codify React component style
This commit is contained in:
@@ -2,7 +2,7 @@ import { MantineProvider } from "@mantine/core";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { renderHook, waitFor } from "@testing-library/react";
|
||||
import { HttpResponse, http } from "msw";
|
||||
import type { ReactNode } from "react";
|
||||
import type { FC, PropsWithChildren } from "react";
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { server } from "@/test/server";
|
||||
import { useAuthenticatedQuery } from "./authenticated-query";
|
||||
@@ -10,11 +10,17 @@ import { apiQueryClient, configureAuthClient } from "./client";
|
||||
|
||||
function createWrapper() {
|
||||
const client = new QueryClient();
|
||||
return ({ children }: { children: ReactNode }) => (
|
||||
<MantineProvider>
|
||||
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
||||
</MantineProvider>
|
||||
);
|
||||
const TestWrapper: FC<PropsWithChildren> = (props) => {
|
||||
const { children } = props;
|
||||
|
||||
return (
|
||||
<MantineProvider>
|
||||
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
||||
</MantineProvider>
|
||||
);
|
||||
};
|
||||
|
||||
return TestWrapper;
|
||||
}
|
||||
|
||||
describe("useAuthenticatedQuery", () => {
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
subscribeAuthenticatedSession,
|
||||
} from "./client";
|
||||
|
||||
export function useAuthenticatedQuery<
|
||||
function useAuthenticatedQuery<
|
||||
TQueryFnData = unknown,
|
||||
TError = Error,
|
||||
TData = TQueryFnData,
|
||||
@@ -32,3 +32,5 @@ export function useAuthenticatedQuery<
|
||||
(typeof enabled === "function" ? enabled(query) : (enabled ?? true)),
|
||||
});
|
||||
}
|
||||
|
||||
export { useAuthenticatedQuery };
|
||||
|
||||
@@ -21,16 +21,16 @@ function setAuthenticatedSession(next: boolean) {
|
||||
for (const listener of authSessionListeners) listener();
|
||||
}
|
||||
|
||||
export function configureAuthClient(handlers: AuthHandlers | null) {
|
||||
function configureAuthClient(handlers: AuthHandlers | null) {
|
||||
auth = handlers;
|
||||
setAuthenticatedSession(Boolean(auth?.accessToken()));
|
||||
}
|
||||
|
||||
export function getAuthenticatedSessionSnapshot() {
|
||||
function getAuthenticatedSessionSnapshot() {
|
||||
return hasAuthenticatedSession;
|
||||
}
|
||||
|
||||
export function subscribeAuthenticatedSession(listener: () => void) {
|
||||
function subscribeAuthenticatedSession(listener: () => void) {
|
||||
authSessionListeners.add(listener);
|
||||
return () => authSessionListeners.delete(listener);
|
||||
}
|
||||
@@ -71,10 +71,18 @@ async function authenticatedFetch(request: Request): Promise<Response> {
|
||||
: response;
|
||||
}
|
||||
|
||||
export const apiClient = createClient<paths>({
|
||||
const apiClient = createClient<paths>({
|
||||
baseUrl: apiBaseUrl,
|
||||
credentials: "include",
|
||||
fetch: authenticatedFetch,
|
||||
});
|
||||
|
||||
export const apiQueryClient = createQueryClient(apiClient);
|
||||
const apiQueryClient = createQueryClient(apiClient);
|
||||
|
||||
export {
|
||||
apiClient,
|
||||
apiQueryClient,
|
||||
configureAuthClient,
|
||||
getAuthenticatedSessionSnapshot,
|
||||
subscribeAuthenticatedSession,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user