import { useState, useCallback, useEffect } from 'react'; import Taro from '@tarojs/taro'; /** * 管理员模式Hook * 用于管理管理员用户的模式切换(普通用户模式 vs 管理员模式) */ export function useAdminMode() { const [isAdminMode, setIsAdminMode] = useState(false); // 从本地存储加载管理员模式状态 useEffect(() => { try { const savedMode = Taro.getStorageSync('admin_mode'); if (savedMode !== undefined) { setIsAdminMode(savedMode === 'true' || savedMode === true); } } catch (error) { console.warn('Failed to load admin mode from storage:', error); } }, []); // 切换管理员模式 const toggleAdminMode = useCallback(() => { const newMode = !isAdminMode; setIsAdminMode(newMode); try { // 保存到本地存储 Taro.setStorageSync('admin_mode', newMode); // 显示切换提示 Taro.showToast({ title: newMode ? '已切换到管理员模式' : '已切换到普通用户模式', icon: 'success', duration: 1500 }); } catch (error) { console.error('Failed to save admin mode to storage:', error); } }, [isAdminMode]); // 设置管理员模式 const setAdminMode = useCallback((mode: boolean) => { if (mode !== isAdminMode) { setIsAdminMode(mode); try { Taro.setStorageSync('admin_mode', mode); } catch (error) { console.error('Failed to save admin mode to storage:', error); } } }, [isAdminMode]); // 重置为普通用户模式 const resetToUserMode = useCallback(() => { setAdminMode(false); }, [setAdminMode]); return { isAdminMode, toggleAdminMode, setAdminMode, resetToUserMode }; }