import { useState, useCallback, useEffect } from 'react';
import Taro from '@tarojs/taro';

/**
 * 管理员模式Hook
 * 用于管理管理员用户的模式切换（普通用户模式 vs 管理员模式）
 */
export function useAdminMode() {
  const [isAdminMode, setIsAdminMode] = useState<boolean>(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
  };
}
