2025-11-22 19:28:55 +08:00

32 lines
882 B
TypeScript

import { useState } from 'react';
export function useStarToggle() {
const [updatingStars, setUpdatingStars] = useState<Set<string>>(new Set());
const toggleStar = async (recordId: string) => {
if (updatingStars.has(recordId)) return null;
try {
setUpdatingStars(prev => new Set(prev).add(recordId));
const response = await fetch(`/api/records/${recordId}/star`, {
method: 'PATCH'
});
if (!response.ok) throw new Error('切换星标状态失败');
const data = await response.json();
return data.isStarred as boolean;
} catch (error) {
console.error('切换星标状态失败:', error);
return null;
} finally {
setUpdatingStars(prev => {
const newSet = new Set(prev);
newSet.delete(recordId);
return newSet;
});
}
};
return { updatingStars, toggleStar };
}