refactor(lib): organize modules by feature
This commit is contained in:
@@ -72,7 +72,7 @@ import {
|
||||
getQuestionResponseSettings,
|
||||
getQuestionResponseType,
|
||||
type QuestionResponseType,
|
||||
} from "@/lib/question-response-type";
|
||||
} from "@/lib/form/question-response-type";
|
||||
import {
|
||||
SaveStatusIndicator,
|
||||
SortableQuestion,
|
||||
|
||||
@@ -11,7 +11,7 @@ import { toast } from "sonner";
|
||||
import { testDiscordWebhook, updateForm } from "@/app/admin/form/actions";
|
||||
import { Loader2, ChevronDown, Check, AlertCircle, Send } from "lucide-react";
|
||||
import { getGuildRoles } from "@/app/actions/discord";
|
||||
import type { DiscordRole } from "@/lib/discord";
|
||||
import type { DiscordRole } from "@/lib/discord/discord";
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuCheckboxItem,
|
||||
@@ -23,7 +23,7 @@ import { getErrorMessage } from "@/lib/utils";
|
||||
import {
|
||||
isValidDiscordWebhookUrl,
|
||||
previewWebhookTemplate,
|
||||
} from "@/lib/discord-webhook-settings";
|
||||
} from "@/lib/discord/discord-webhook-settings";
|
||||
import {
|
||||
useDebouncedAutoSave,
|
||||
type AutoSaveStatus,
|
||||
|
||||
@@ -2,14 +2,14 @@ import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
|
||||
import { FormAdminSidebar } from "@/components/form-admin-sidebar";
|
||||
import { Metadata } from "next";
|
||||
import { getServerSession } from "next-auth";
|
||||
import { authOptions } from "@/lib/auth-options";
|
||||
import { getSessionDiscordId } from "@/lib/auth";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord";
|
||||
import { authOptions } from "@/lib/auth/auth-options";
|
||||
import { getSessionDiscordId } from "@/lib/auth/auth";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord/discord";
|
||||
import { db } from "@/db";
|
||||
import { submissions } from "@/db/schema";
|
||||
import { asc, eq } from "drizzle-orm";
|
||||
import { notFound } from "next/navigation";
|
||||
import { isFormAcceptingSubmissions } from "@/lib/form-availability";
|
||||
import { isFormAcceptingSubmissions } from "@/lib/form/form-availability";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
|
||||
@@ -42,8 +42,8 @@ import {
|
||||
import Image from 'next/image';
|
||||
import { stripHtml } from "@/lib/utils";
|
||||
import { HtmlDisplay } from "@/components/html-display";
|
||||
import { formatStoredAnswer } from "@/lib/form-answer-values";
|
||||
import { normalizeStoredAnswerSnapshot } from "@/lib/submission-intake";
|
||||
import { formatStoredAnswer } from "@/lib/form/form-answer-values";
|
||||
import { normalizeStoredAnswerSnapshot } from "@/lib/form/submission-intake";
|
||||
import { updateSubmissionAdminNote } from "@/app/admin/form/actions";
|
||||
import {
|
||||
useDebouncedAutoSave,
|
||||
|
||||
@@ -6,7 +6,7 @@ import { ArrowLeft, ArrowRight } from "lucide-react";
|
||||
import SubmissionDetailClient from "./client";
|
||||
import { DeleteSubmissionButton } from "@/components/delete-buttons";
|
||||
import { RealtimeRefresh } from "@/components/realtime-refresh";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord/discord";
|
||||
|
||||
interface SubmissionDetailPageProps {
|
||||
params: Promise<{
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@
|
||||
import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination";
|
||||
import { DeleteAllSubmissionsButton, DeleteSubmissionButton } from "@/components/delete-buttons";
|
||||
import { ResultsFilters } from "@/components/results-filters";
|
||||
import type { DiscordMemberProfile } from "@/lib/discord";
|
||||
import type { DiscordMemberProfile } from "@/lib/discord/discord";
|
||||
|
||||
const RESULTS_PAGE_SIZE = 25;
|
||||
type ResultFilters = {
|
||||
|
||||
@@ -2,12 +2,12 @@ import { NextResponse } from "next/server";
|
||||
import { db } from "@/db";
|
||||
import { answers } from "@/db/schema";
|
||||
import { inArray } from "drizzle-orm";
|
||||
import { requireAdmin } from "@/lib/auth";
|
||||
import { requireAdmin } from "@/lib/auth/auth";
|
||||
import {
|
||||
getFilteredSubmissions,
|
||||
parseResultFilters,
|
||||
} from "@/lib/admin-form-results";
|
||||
import { answerCellValue } from "@/lib/form-answer-values";
|
||||
} from "@/lib/form/admin-form-results";
|
||||
import { answerCellValue } from "@/lib/form/form-answer-values";
|
||||
import { stripHtml } from "@/lib/utils";
|
||||
|
||||
function csvCell(value: unknown) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { parseResultFilters, getFilteredSubmissions } from "@/lib/admin-form-results";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord";
|
||||
import { parseResultFilters, getFilteredSubmissions } from "@/lib/form/admin-form-results";
|
||||
import { getDiscordMemberProfile } from "@/lib/discord/discord";
|
||||
import { RealtimeRefresh } from "@/components/realtime-refresh";
|
||||
import ResultsClient from "./client";
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ import { forms, submissions } from "@/db/schema";
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import { revalidatePath } from "next/cache";
|
||||
import { redirect } from "next/navigation";
|
||||
import { requireAdmin } from "@/lib/auth";
|
||||
import { requireAdmin } from "@/lib/auth/auth";
|
||||
import { sanitizeHtml } from "@/lib/sanitize-html";
|
||||
import { sse } from "@/lib/sse";
|
||||
import { isValidDiscordWebhookUrl } from "@/lib/discord-webhook-settings";
|
||||
import { sse } from "@/lib/realtime/sse";
|
||||
import { isValidDiscordWebhookUrl } from "@/lib/discord/discord-webhook-settings";
|
||||
|
||||
export async function createForm(formData: FormData) {
|
||||
await requireAdmin();
|
||||
|
||||
@@ -15,9 +15,9 @@ import { DeleteFormButton } from "@/components/delete-buttons";
|
||||
import { AdminShellServer } from "@/components/admin-shell-server";
|
||||
import { createDefaultForm } from "./actions";
|
||||
import { RealtimeRefresh } from "@/components/realtime-refresh";
|
||||
import { getFormSubmissionStats } from "@/lib/form-submission-stats";
|
||||
import { getFormSubmissionStats } from "@/lib/form/form-submission-stats";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { isFormAcceptingSubmissions } from "@/lib/form-availability";
|
||||
import { isFormAcceptingSubmissions } from "@/lib/form/form-availability";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user