refactor: remove additional dead exports and unused actions
CI / check (push) Successful in 26s
CI / release (push) Skipped
CI / deploy (push) Successful in 59s

Remove buildFontUrl, measureText, uncached, invalidateCache, fetchJsonWithFlareSolver, upsertPermission, deletePermission, bulkImportPermissions, clearAllPermissions, bulkDeletePermissions, bulkDeletePhotos, userReplyTicket, closeTicketByUser. Update staff-smoke-contract test for bulkDeletePhotos removal.
This commit is contained in:
openhands committed 2026-08-07 19:19:05 +02:00
1 parent 24bf8eabb9
commit 6a67fb6e83
10 files changed
+3 -187

No files matched your search

-24
View File
@@ -18,20 +18,6 @@ async function rejectLegacyHousekeepingWrite(): Promise<never> {
);
}
export async function upsertPermission(_formData: FormData): Promise<void> {
return rejectLegacyHousekeepingWrite();
}
export async function deletePermission(_formData: FormData): Promise<void> {
return rejectLegacyHousekeepingWrite();
}
export async function bulkImportPermissions(
_formData: FormData,
): Promise<{ count: number; errors: string[] }> {
return rejectLegacyHousekeepingWrite();
}
export async function exportPermissions(): Promise<string> {
await requirePermission(PERMS.SETTINGS_VIEW);
@@ -55,13 +41,3 @@ export async function exportPermissions(): Promise<string> {
export async function applyPreset(_formData: FormData): Promise<void> {
return rejectLegacyHousekeepingWrite();
}
export async function clearAllPermissions(): Promise<void> {
return rejectLegacyHousekeepingWrite();
}
export async function bulkDeletePermissions(
_ids: bigint[],
): Promise<{ count: number }> {
return rejectLegacyHousekeepingWrite();
}
+1 -35
View File
@@ -1,6 +1,6 @@
"use server";
import { eq, inArray } from "drizzle-orm";
import { eq } from "drizzle-orm";
import { revalidatePath } from "next/cache";
import { requirePermission } from "@/lib/admin/guard";
import { tryRemoveLocalPhotoFile } from "@/lib/admin/photo-files";
@@ -34,37 +34,3 @@ export async function deletePhoto(formData: FormData): Promise<void> {
revalidatePath("/admin/photos");
revalidatePath("/photos");
}
export async function bulkDeletePhotos(formData: FormData): Promise<void> {
const staff = await requirePermission(PERMS.PAGES_EDIT);
const raw = String(formData.get("ids") ?? "");
const ids = raw
.split(",")
.map((s) => Number(s.trim()))
.filter((n) => Number.isFinite(n) && n > 0);
if (ids.length === 0) return;
const rows = await db
.select({ id: CameraWeb.id, url: CameraWeb.url })
.from(CameraWeb)
.where(inArray(CameraWeb.id, ids));
if (rows.length > 0) {
await db.delete(CameraWeb).where(
inArray(
CameraWeb.id,
rows.map((r) => r.id),
),
);
await Promise.all(rows.map((r) => tryRemoveLocalPhotoFile(r.url)));
await logStaffActivity({
staffId: staff.id,
action: "photo_bulk_delete",
description: `Deleted ${rows.length} camera photo(s)`,
targetType: "camera_web",
});
}
revalidatePath("/admin/photos");
revalidatePath("/photos");
}
-69
View File
@@ -53,75 +53,6 @@ export const createTicket = authAction(
},
);
export const userReplyTicket = authAction(
{
schema: replyTicketSchema,
rateLimitKey: "ticket-reply",
rateLimitMax: 10,
rateLimitWindowMs: 60_000,
},
async (ctx) => {
const [ticket] = await db
.select()
.from(WebsiteTicket)
.where(eq(WebsiteTicket.id, ctx.data.ticketId))
.limit(1);
if (!ticket) throw new ActionError("Ticket not found");
if (ticket.creatorId !== ctx.session.user.id)
throw new ActionError("Unauthorized");
if (ticket.status === "closed") throw new ActionError("Ticket is closed");
await db.insert(WebsiteTicketMessage).values({
ticketId: ctx.data.ticketId,
userId: ctx.session.user.id,
message: ctx.data.message,
isStaff: 0,
});
// If ticket was in "waiting" (waiting for user), move back to open
if (ticket.status === "waiting") {
await db
.update(WebsiteTicket)
.set({ status: "open", updatedAt: new Date() })
.where(eq(WebsiteTicket.id, ctx.data.ticketId));
}
return actionOk();
},
);
export const closeTicketByUser = authAction(
{
schema: replyTicketSchema.pick({ ticketId: true }),
rateLimitKey: "ticket-close",
rateLimitMax: 10,
rateLimitWindowMs: 60_000,
},
async (ctx) => {
const [ticket] = await db
.select()
.from(WebsiteTicket)
.where(eq(WebsiteTicket.id, ctx.data.ticketId))
.limit(1);
if (!ticket) throw new ActionError("Ticket not found");
if (ticket.creatorId !== ctx.session.user.id)
throw new ActionError("Unauthorized");
if (ticket.status === "closed")
throw new ActionError("Ticket is already closed");
await db
.update(WebsiteTicket)
.set({ status: "closed", closedAt: new Date(), updatedAt: new Date() })
.where(eq(WebsiteTicket.id, ctx.data.ticketId));
return actionOk();
},
);
// ── Admin actions ────────────────────────────────────────────────────
export const adminReplyTicket = adminAction(
{
permission: [PERMS.TICKETS_EDIT, PERMS.MOD_TICKETS_EDIT],