mirror of
https://github.com/luxfhe/research-ocp-fhe.git
synced 2026-11-03 06:05:38 +00:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
import type { PredefinedWallet } from '@/lib/types/wallet';
|
|
import { PREDEFINED_WALLETS } from '@/lib/constants/wallets';
|
|
|
|
export type Role = 'FOUNDER' | 'INVESTOR' | 'PUBLIC' | 'ADMIN';
|
|
|
|
interface RoleState {
|
|
role: Role;
|
|
selectedWallet: PredefinedWallet | null;
|
|
isOwnWallet: boolean;
|
|
setRole: (role: Role) => void;
|
|
setWallet: (wallet: PredefinedWallet | null, isOwnWallet?: boolean) => void;
|
|
switchToPredefinedWallet: (wallet: PredefinedWallet) => void;
|
|
switchToOwnWallet: () => void;
|
|
}
|
|
|
|
// Default wallet - Founder (Acme Inc)
|
|
const DEFAULT_WALLET: PredefinedWallet = PREDEFINED_WALLETS[0];
|
|
|
|
export const useRoleStore = create<RoleState>()(
|
|
persist(
|
|
set => ({
|
|
role: DEFAULT_WALLET.role,
|
|
selectedWallet: DEFAULT_WALLET,
|
|
isOwnWallet: false,
|
|
setRole: (role: Role) => set({ role }),
|
|
setWallet: (wallet: PredefinedWallet | null, isOwnWallet = false) =>
|
|
set({ selectedWallet: wallet, isOwnWallet }),
|
|
switchToPredefinedWallet: (wallet: PredefinedWallet) =>
|
|
set({
|
|
selectedWallet: wallet,
|
|
role: wallet.role,
|
|
isOwnWallet: false,
|
|
}),
|
|
switchToOwnWallet: () =>
|
|
set({
|
|
selectedWallet: null,
|
|
isOwnWallet: true,
|
|
role: 'FOUNDER',
|
|
// Keep current role when switching to own wallet
|
|
}),
|
|
}),
|
|
{
|
|
name: 'app-role', // localStorage key
|
|
}
|
|
)
|
|
);
|