Skip to content

Commit 6b4fb6f

Browse files
authored
refactor: admin UI module (#249)
1 parent 5653aaa commit 6b4fb6f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+544
-503
lines changed

src/modules/access/fetchAuthState.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { verifySession } from "@/session";
22
import { createServerFn } from "@tanstack/react-start";
33
import { getUserLanguagesReadModel } from "../languages/read-models/getUserLanguagesReadModel";
4-
import { LanguageReadModel } from "../languages/read-models/getAllLanguagesReadModel";
54
import { SystemRoleRaw } from "@/modules/users/types";
5+
import { UserLanguageReadModel } from "../languages/read-models/getUserLanguagesReadModel";
66

77
export interface AuthState {
88
user?: { id: string; name: string };
@@ -14,7 +14,7 @@ export const fetchAuthState = createServerFn().handler(
1414
async (): Promise<AuthState> => {
1515
const session = await verifySession();
1616

17-
let languages: LanguageReadModel[] = [];
17+
let languages: UserLanguageReadModel[] = [];
1818
if (session) {
1919
languages = await getUserLanguagesReadModel(session.user.id);
2020
}

src/modules/reporting/index.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,3 @@ export {
77
type BookProgressRow,
88
type BookProgressContributor,
99
} from "./read-models/getLanguageBookProgressReadModel";
10-
export {
11-
getLanguageDashboardBooksReadModel,
12-
type LanguageDashboardBookReadModel,
13-
} from "./read-models/getLanguageDashboardBooksReadModel";
14-
export {
15-
getLanguageDashboardMembersReadModel,
16-
type LanguageDashboardMemberReadModel,
17-
} from "./read-models/getLanguageDashboardMembersReadModel";
18-
export {
19-
getLanguageDashboardContributionsReadModel,
20-
type LanguageDashboardContributionReadModel,
21-
} from "./read-models/getLanguageDashboardContributionsReadModel";
22-
export {
23-
getLanguageDashboardActivityReadModel,
24-
type LanguageDashboardActivityEntryReadModel,
25-
} from "./read-models/getLanguageDashboardActivityReadModel";
26-
export {
27-
getLanguageApprovalActivityReadModel,
28-
type LanguageApprovalActivityReadModel,
29-
} from "./read-models/getLanguageApprovalActivityReadModel";

src/routeTree.gen.ts

Lines changed: 188 additions & 155 deletions
Large diffs are not rendered by default.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {
2+
defineVirtualSubtreeConfig,
3+
physical,
4+
} from "@tanstack/virtual-file-routes";
5+
6+
export default defineVirtualSubtreeConfig([
7+
physical("../../../ui/admin/routes"),
8+
]);

src/modules/translation/ui/AIGlossesImportForm.tsx renamed to src/ui/admin/components/AIGlossesImportForm.tsx

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,10 @@
11
import { Icon } from "@/components/Icon";
2-
import { createPolicyMiddleware, Policy } from "@/modules/access";
3-
import { importAIGlosses } from "../actions/importAIGlosses";
4-
import { getAIGlossImportJobReadModel } from "../read-models/getAIGlossImportJobReadModel";
5-
import { getAIGlossImportLanguagesReadModel } from "../read-models/getAIGlossImportLanguagesReadModel";
2+
import { importAIGlosses } from "@/modules/translation/actions/importAIGlosses";
63
import JobStatusPoller from "@/shared/jobs/ui/JobStatusPoller";
74
import { JobStatus } from "@/shared/jobs/model";
85
import { useSuspenseQuery } from "@tanstack/react-query";
9-
import { createServerFn } from "@tanstack/react-start";
10-
import * as z from "zod";
116
import Button from "@/components/Button";
12-
13-
const requestSchema = z.object({
14-
code: z.string(),
15-
});
16-
17-
const policy = new Policy({
18-
systemRoles: [Policy.SystemRole.Admin],
19-
languageMember: true,
20-
});
21-
22-
export const getAIGlossesImportFormData = createServerFn()
23-
.inputValidator(requestSchema)
24-
.middleware([
25-
createPolicyMiddleware({
26-
policy,
27-
languageCodeField: "code",
28-
}),
29-
])
30-
.handler(async ({ data }) => {
31-
const [job, availableLanguages] = await Promise.all([
32-
getAIGlossImportJobReadModel(data.code),
33-
getAIGlossImportLanguagesReadModel(),
34-
]);
35-
36-
const language = availableLanguages.find(
37-
(entry) => entry.code === data.code,
38-
);
39-
40-
return { job, languageAvailable: !!language };
41-
});
7+
import { getAIGlossesImportFormData } from "@/ui/admin/serverFns/getAIGlossesImportFormData";
428

439
export default function AIGlossesImportForm({ code }: { code: string }) {
4410
const { data, refetch } = useSuspenseQuery({

src/modules/languages/ui/ActivityChart.tsx renamed to src/ui/admin/components/ActivityChart.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ function ActivityChartSVG({
163163
const xScaleRef = useRef<d3.ScaleTime<number, number, never> | null>(null);
164164

165165
// Unique IDs so multiple charts on the same page don't share gradient defs
166-
const uid = useId().replace(/:/g, "");
167-
const gradientId = `activity-gradient-${uid}`;
168-
const clipId = `activity-clip-${uid}`;
166+
const chartId = useId().replace(/:/g, "");
167+
const gradientId = `activity-gradient-${chartId}`;
168+
const clipId = `activity-clip-${chartId}`;
169169

170170
const [elementRef, size] = useElementDimensions<HTMLDivElement>();
171171

src/modules/languages/ui/BookProgressDetailsModal.tsx renamed to src/ui/admin/components/BookProgressDetailsModal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import ActivityChart, {
66
ActivityChartProvider,
77
type ActivityChartEntry,
88
type ActivityChartRange,
9-
} from "@/modules/languages/ui/ActivityChart";
10-
import ProgressBar from "@/modules/languages/ui/ProgressBar";
11-
import RangeToggle from "@/modules/languages/ui/RangeToggle";
9+
} from "@/ui/admin/components/ActivityChart";
10+
import ProgressBar from "@/ui/admin/components/ProgressBar";
11+
import RangeToggle from "@/ui/admin/components/RangeToggle";
1212
import Button from "@/components/Button";
1313

1414
export interface BookProgressDetails {
File renamed without changes.
File renamed without changes.

src/modules/export/ui/InterlinearExportPanel.tsx renamed to src/ui/admin/components/InterlinearExportPanel.tsx

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,11 @@
11
import { requestInterlinearExport } from "@/modules/export/actions/requestInterlinearExport";
2-
import { createPolicyMiddleware, Policy } from "@/modules/access";
32
import { JobStatus } from "@/shared/jobs/model";
43
import Button from "@/components/Button";
54
import { Icon } from "@/components/Icon";
6-
import exportJobQueryService from "../data-access/ExportJobQueryService";
75
import JobStatusPoller from "@/shared/jobs/ui/JobStatusPoller";
86
import { useTranslations } from "use-intl";
97
import { useSuspenseQuery } from "@tanstack/react-query";
10-
import { createServerFn } from "@tanstack/react-start";
11-
import * as z from "zod";
12-
13-
const requestSchema = z.object({
14-
languageCode: z.string().min(1),
15-
});
16-
17-
const policy = new Policy({
18-
systemRoles: [Policy.SystemRole.Admin],
19-
languageMember: true,
20-
});
21-
22-
export const getInterlinearExportPanelData = createServerFn()
23-
.inputValidator(requestSchema)
24-
.middleware([
25-
createPolicyMiddleware({
26-
policy,
27-
}),
28-
])
29-
.handler(async ({ data }) => {
30-
const [jobs, pendingJob] = await Promise.all([
31-
exportJobQueryService.findRecentForLanguage(data.languageCode),
32-
exportJobQueryService.findPendingForLanguage(data.languageCode),
33-
]);
34-
35-
return { jobs, pendingJob };
36-
});
8+
import { getInterlinearExportPanelData } from "@/ui/admin/serverFns/getInterlinearExportPanelData";
379

3810
export default function InterlinearExportPanel({
3911
languageCode,

0 commit comments

Comments
 (0)