refactor(api): replace URLSearchParams param with structured object in listMessages
This commit is contained in:
@@ -29,8 +29,9 @@ export function useMessages() {
|
|||||||
const [cursor, setCursor] = useState<string | null>(null);
|
const [cursor, setCursor] = useState<string | null>(null);
|
||||||
const [hasMore, setHasMore] = useState(false);
|
const [hasMore, setHasMore] = useState(false);
|
||||||
const currentGuild = useRef<string | null>(null);
|
const currentGuild = useRef<string | null>(null);
|
||||||
|
const currentChannel = useRef<string | undefined>(undefined);
|
||||||
|
|
||||||
const fetchMessages = useCallback(async (guildId?: string) => {
|
const fetchMessages = useCallback(async (guildId?: string, channelId?: string) => {
|
||||||
if (!guildId) {
|
if (!guildId) {
|
||||||
setMessages([]);
|
setMessages([]);
|
||||||
setCursor(null);
|
setCursor(null);
|
||||||
@@ -38,14 +39,15 @@ export function useMessages() {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
currentGuild.current = guildId;
|
currentGuild.current = guildId;
|
||||||
|
currentChannel.current = channelId;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
try {
|
try {
|
||||||
const params = new URLSearchParams({
|
const result = await listMessages({
|
||||||
limit: String(PAGE_SIZE),
|
|
||||||
guildId,
|
guildId,
|
||||||
|
channelId,
|
||||||
|
limit: PAGE_SIZE,
|
||||||
});
|
});
|
||||||
const result = await listMessages(params);
|
|
||||||
if (currentGuild.current === guildId) {
|
if (currentGuild.current === guildId) {
|
||||||
setMessages(result.data);
|
setMessages(result.data);
|
||||||
setCursor(result.nextCursor);
|
setCursor(result.nextCursor);
|
||||||
@@ -65,12 +67,12 @@ export function useMessages() {
|
|||||||
if (!cursor || !currentGuild.current || loadingMore) return;
|
if (!cursor || !currentGuild.current || loadingMore) return;
|
||||||
setLoadingMore(true);
|
setLoadingMore(true);
|
||||||
try {
|
try {
|
||||||
const params = new URLSearchParams({
|
const result = await listMessages({
|
||||||
limit: String(PAGE_SIZE),
|
|
||||||
guildId: currentGuild.current,
|
guildId: currentGuild.current,
|
||||||
|
channelId: currentChannel.current,
|
||||||
cursor,
|
cursor,
|
||||||
|
limit: PAGE_SIZE,
|
||||||
});
|
});
|
||||||
const result = await listMessages(params);
|
|
||||||
setMessages((prev) => [...prev, ...result.data]);
|
setMessages((prev) => [...prev, ...result.data]);
|
||||||
setCursor(result.nextCursor);
|
setCursor(result.nextCursor);
|
||||||
setHasMore(!!result.nextCursor);
|
setHasMore(!!result.nextCursor);
|
||||||
|
|||||||
@@ -151,10 +151,19 @@ export type DashboardTab = "live" | "messages" | "analytics";
|
|||||||
|
|
||||||
// ─── Messages ────────────────────────────────────────────────────────────────
|
// ─── Messages ────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
export function listMessages(
|
export function listMessages(params: {
|
||||||
params: URLSearchParams,
|
guildId: string;
|
||||||
): Promise<PageResult<MessageRecord>> {
|
channelId?: string;
|
||||||
return request<PageResult<MessageRecord>>(`/api/messages?${params}`);
|
limit?: number;
|
||||||
|
cursor?: string;
|
||||||
|
}): Promise<PageResult<MessageRecord>> {
|
||||||
|
const sp = new URLSearchParams({
|
||||||
|
guildId: params.guildId,
|
||||||
|
limit: String(params.limit ?? 100),
|
||||||
|
...(params.channelId && { channelId: params.channelId }),
|
||||||
|
...(params.cursor && { cursor: params.cursor }),
|
||||||
|
});
|
||||||
|
return request<PageResult<MessageRecord>>(`/api/messages?${sp}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function listReview(
|
export function listReview(
|
||||||
|
|||||||
Reference in New Issue
Block a user