WebHooker/app/utils/format.ts
RhenCloud e59b10f739
refactor(admin): unify webui fetch/copy/format helpers; fix audit tab load and delete-group count
- apiFetch + shared needLogin (any 401 shows the login card) replaces six
  duplicated fetch/401/error-handling blocks in the admin composables
- useCopy composable: clipboard + execCommand fallback with timed reset,
  used by MembersPanel and WebhookPanel
- utils/format.ts (fmtTime/splitList/parseMatch) removes inline duplicates
  across SendLogs, AuditLog, RouteEditor and GroupEditor
- fix: load the audit log when the audit tab becomes active (client-side
  navigation never remounted the page, leaving the list empty on first visit)
- fix: fetch the real route count for a group before confirming deletion
  instead of reusing the currently open group's route list
2026-08-14 07:18:55 +08:00

18 lines
556 B
TypeScript

/** Split a comma-separated input into trimmed non-empty parts. */
export function splitList(text: string): string[] {
return text
.split(",")
.map((s) => s.trim())
.filter(Boolean);
}
/** Comma-separated filter match → single value, list, or null when empty. */
export function parseMatch(text: string): string | string[] | null {
const parts = splitList(text);
if (!parts.length) return null;
return parts.length === 1 ? parts[0]! : parts;
}
export function fmtTime(ts: number): string {
return new Date(ts).toLocaleString();
}