不知道该说什么。
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
back/data/
|
||||
back/data/
|
||||
back/__pycache__/
|
||||
@@ -120,7 +120,7 @@ const remarkTagPlugin = () => {
|
||||
const CreatePost: React.FC = () => {
|
||||
const styles = useStyles();
|
||||
const navigate = useNavigate();
|
||||
const { isDarkMode, toasterId } = useLayout();
|
||||
const { isDarkMode, toasterId, triggerRefresh } = useLayout();
|
||||
const { dispatchToast } = useToastController(toasterId);
|
||||
const [value, setValue] = useState<string | undefined>("");
|
||||
const [lastSaved, setLastSaved] = useState<string>(() => new Date().toLocaleTimeString('zh-CN', { hour12: false }));
|
||||
@@ -170,6 +170,7 @@ const CreatePost: React.FC = () => {
|
||||
{ intent: 'success' }
|
||||
);
|
||||
|
||||
triggerRefresh();
|
||||
navigate('/');
|
||||
} else if (response.code === 2005) {
|
||||
dispatchToast(
|
||||
|
||||
@@ -76,7 +76,7 @@ const useStyles = makeStyles({
|
||||
|
||||
const StatusDisplay: React.FC = () => {
|
||||
const styles = useStyles();
|
||||
const { toasterId } = useLayout();
|
||||
const { toasterId, refreshTrigger } = useLayout();
|
||||
const { dispatchToast } = useToastController(toasterId);
|
||||
const [isApiOnline, setIsApiOnline] = useState<boolean | null>(null);
|
||||
const [statics, setStatics] = useState<StaticsData | null>(null);
|
||||
@@ -121,6 +121,13 @@ const StatusDisplay: React.FC = () => {
|
||||
};
|
||||
}, [checkStatus, refreshStatics]);
|
||||
|
||||
// Listen for global refresh trigger
|
||||
useEffect(() => {
|
||||
if (refreshTrigger > 0) {
|
||||
refreshStatics(false);
|
||||
}
|
||||
}, [refreshTrigger, refreshStatics]);
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<Card className={styles.card}>
|
||||
|
||||
@@ -10,6 +10,8 @@ interface LayoutContextType {
|
||||
isDarkMode: boolean;
|
||||
toggleTheme: () => void;
|
||||
toasterId: string;
|
||||
refreshTrigger: number;
|
||||
triggerRefresh: () => void;
|
||||
}
|
||||
|
||||
const LayoutContext = createContext<LayoutContextType | undefined>(undefined);
|
||||
@@ -18,6 +20,7 @@ export const LayoutProvider: React.FC<{ children: React.ReactNode; toasterId: st
|
||||
const [settings, setSettings] = useState<SiteSettings | null>(null);
|
||||
const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false);
|
||||
const [isDarkMode, setIsDarkMode] = useState(false);
|
||||
const [refreshTrigger, setRefreshTrigger] = useState(0);
|
||||
const { dispatchToast } = useToastController(toasterId);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -47,9 +50,10 @@ export const LayoutProvider: React.FC<{ children: React.ReactNode; toasterId: st
|
||||
|
||||
const toggleSidebar = () => setIsSidebarCollapsed(prev => !prev);
|
||||
const toggleTheme = () => setIsDarkMode(prev => !prev);
|
||||
const triggerRefresh = () => setRefreshTrigger(prev => prev + 1);
|
||||
|
||||
return (
|
||||
<LayoutContext.Provider value={{ settings, isSidebarCollapsed, toggleSidebar, isDarkMode, toggleTheme, toasterId }}>
|
||||
<LayoutContext.Provider value={{ settings, isSidebarCollapsed, toggleSidebar, isDarkMode, toggleTheme, toasterId, refreshTrigger, triggerRefresh }}>
|
||||
{children}
|
||||
</LayoutContext.Provider>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user