chore: codify React component style

This commit is contained in:
2026-08-25 15:33:20 +03:00
parent 268acdf2e1
commit d10e1dd182
65 changed files with 711 additions and 365 deletions
+12 -6
View File
@@ -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", () => {
+3 -1
View File
@@ -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 };
+13 -5
View File
@@ -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,
};