UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

66 lines (53 loc) 1.9 kB
import { t } from 'i18next'; import { enableAuth, enableClerk, enableNextAuth } from '@/const/auth'; import { BRANDING_NAME } from '@/const/branding'; import { isDesktop } from '@/const/version'; import { UserStore } from '@/store/user'; import { LobeUser } from '@/types/user'; const DEFAULT_USERNAME = BRANDING_NAME; const nickName = (s: UserStore) => { const defaultNickName = s.user?.fullName || s.user?.username; if (!enableAuth) { if (isDesktop) { return defaultNickName; } return t('userPanel.defaultNickname', { ns: 'common' }); } if (s.isSignedIn) return defaultNickName; return t('userPanel.anonymousNickName', { ns: 'common' }); }; const username = (s: UserStore) => { if (!enableAuth) { if (isDesktop) { return s.user?.username; } return DEFAULT_USERNAME; } if (s.isSignedIn) return s.user?.username; return 'anonymous'; }; export const userProfileSelectors = { displayUserName: (s: UserStore): string => username(s) || s.user?.email || '', email: (s: UserStore): string => s.user?.email || '', fullName: (s: UserStore): string => s.user?.fullName || '', nickName, userAvatar: (s: UserStore): string => s.user?.avatar || '', userId: (s: UserStore) => s.user?.id, userProfile: (s: UserStore): LobeUser | null | undefined => s.user, username, }; /** * 使用此方法可以兼容不需要登录鉴权的情况 */ const isLogin = (s: UserStore) => { // 如果没有开启鉴权,说明不需要登录,默认是登录态 if (!enableAuth) return true; return s.isSignedIn; }; export const authSelectors = { isLoaded: (s: UserStore) => s.isLoaded, isLogin, isLoginWithAuth: (s: UserStore) => s.isSignedIn, isLoginWithClerk: (s: UserStore): boolean => (s.isSignedIn && enableClerk) || false, isLoginWithNextAuth: (s: UserStore): boolean => (s.isSignedIn && !!enableNextAuth) || false, };