import { create } from 'zustand';
import { PageHeaderState } from '@pwc-ra/components';
import type { User } from '@pwc-ra/components';

// 租户类型
interface Tenant {
  id: string;
  code: string;
  name: string;
}

// 全局状态类型
interface GlobalState {
  // 用户信息
  currentUser: User | null;
  // 当前选择的租户
  selectedTenant: Tenant | null;
  // 加载状态
  loading: boolean;
  // 错误信息
  error: string | null;
  // 设置当前用户
  setCurrentUser: (user: User | null) => void;
  // 设置当前租户
  setSelectedTenant: (tenant: Tenant | null) => void;
  // 设置加载状态
  setLoading: (loading: boolean) => void;
  // 设置错误信息
  setError: (error: string | null) => void;
  // 初始化状态
  initialize: () => void;
}

// 创建全局状态管理器
const useGlobalStore = create<GlobalState>((set) => ({
  currentUser: PageHeaderState.getCurrentUser(),
  selectedTenant: PageHeaderState.getSelectedTenant(),
  loading: PageHeaderState.isLoading(),
  error: PageHeaderState.getError(),
  
  setCurrentUser: (user) => set({ currentUser: user }),
  setSelectedTenant: (tenant) => set({ selectedTenant: tenant }),
  setLoading: (loading) => set({ loading }),
  setError: (error) => set({ error }),
  
  // 初始化状态，从PageHeaderState获取初始值并订阅更新
  initialize: () => {
    // 从PageHeaderState获取初始值
    set({
      currentUser: PageHeaderState.getCurrentUser(),
      selectedTenant: PageHeaderState.getSelectedTenant(),
      loading: PageHeaderState.isLoading(),
      error: PageHeaderState.getError()
    });
    
    // 订阅PageHeaderState的更新
    PageHeaderState.subscribe((state) => {
      set({
        currentUser: state.currentUser,
        selectedTenant: state.selectedTenant,
        loading: state.loading,
        error: state.error
      });
    });
  }
}));

// 初始化全局状态
useGlobalStore.getState().initialize();

export default useGlobalStore; 