feat(gmw): public features #7-14 — scam domains, top channels, hourly heatmap, category drill-down, coverage stats, channel culture glossary, term KB, edit history
ALSO fixes: dashboard.repository still JOINed dropped user_reputations table (listUsers/getUserDetail crash).
This commit is contained in:
1 parent
2a8f6d9062
commit
00e8d68ce5
38 files changed
+1542
-25
No files matched your search
@@ -2,7 +2,12 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
||||
import useSWR from "swr";
|
||||
import { moderationApi } from "@/lib/api";
|
||||
import type {
|
||||
CategoryAction,
|
||||
FlaggedChannel,
|
||||
FlaggedDomain,
|
||||
HourlyModeration,
|
||||
ModerationAction,
|
||||
ModerationCoverage,
|
||||
ModerationStats,
|
||||
ModerationTrends,
|
||||
} from "@/lib/types";
|
||||
@@ -82,3 +87,35 @@ export function useModerationTrends(days = 30, initialData?: ModerationTrends) {
|
||||
{ fallbackData: initialData },
|
||||
);
|
||||
}
|
||||
|
||||
export function useTopFlaggedDomains(days = 30) {
|
||||
return useSWR<FlaggedDomain[]>(["moderation-domains", days], () =>
|
||||
moderationApi.getTopDomains(days),
|
||||
);
|
||||
}
|
||||
|
||||
export function useTopFlaggedChannels(days = 30) {
|
||||
return useSWR<FlaggedChannel[]>(["moderation-channels", days], () =>
|
||||
moderationApi.getTopChannels(days),
|
||||
);
|
||||
}
|
||||
|
||||
export function useHourlyModeration(days = 30) {
|
||||
return useSWR<HourlyModeration[]>(["moderation-byhour", days], () =>
|
||||
moderationApi.getHourlyModeration(days),
|
||||
);
|
||||
}
|
||||
|
||||
export function useModerationByCategory(days = 30, category: string | null) {
|
||||
return useSWR<CategoryAction[]>(
|
||||
category ? ["moderation-bycategory", days, category] : null,
|
||||
() => moderationApi.getByCategory(days, category as string),
|
||||
{ keepPreviousData: true },
|
||||
);
|
||||
}
|
||||
|
||||
export function useModerationCoverage(days = 30) {
|
||||
return useSWR<ModerationCoverage>(["moderation-coverage", days], () =>
|
||||
moderationApi.getCoverage(days),
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user