refactor: drop sqlite fallback and admin mode

This commit is contained in:
icy
2025-11-06 17:52:30 +08:00
parent 579c73a81b
commit 8e7e50ef5f
27 changed files with 293 additions and 2123 deletions

View File

@@ -12,7 +12,6 @@ import AILearning from './components/AILearning'
import { LanguageProvider, useLanguage } from './contexts/LanguageContext'
import { AuthProvider, useAuth } from './contexts/AuthContext'
import { t, type Language } from './i18n/translations'
import { useSystemConfig } from './hooks/useSystemConfig'
import { AlertTriangle } from 'lucide-react'
import type {
SystemStatus,
@@ -42,7 +41,7 @@ function getModelDisplayName(modelId: string): string {
function App() {
const { language, setLanguage } = useLanguage()
const { user, token, logout, isLoading } = useAuth()
const { config: systemConfig, loading: configLoading } = useSystemConfig()
const configLoading = false
const [route, setRoute] = useState(window.location.pathname)
// 从URL路径读取初始页面状态支持刷新保持页面
@@ -243,7 +242,6 @@ function App() {
onLanguageChange={setLanguage}
user={user}
onLogout={logout}
isAdminMode={systemConfig?.admin_mode}
onPageChange={(page) => {
console.log('Competition page onPageChange called with:', page)
console.log('Current route:', route, 'Current page:', currentPage)
@@ -286,7 +284,7 @@ function App() {
}
// Show main app for authenticated users on other routes
if (!systemConfig?.admin_mode && (!user || !token)) {
if (!user || !token) {
// Default to landing page when not authenticated and no specific route
return <LandingPage />
}
@@ -303,7 +301,6 @@ function App() {
onLanguageChange={setLanguage}
user={user}
onLogout={logout}
isAdminMode={systemConfig?.admin_mode}
onPageChange={(page) => {
console.log('Main app onPageChange called with:', page)

View File

@@ -104,8 +104,8 @@ export default function AboutSection({ language }: AboutSectionProps) {
lines={[
'$ git clone https://github.com/tinkle-community/nofx.git',
'$ cd nofx',
'$ chmod +x start.sh',
'$ ./start.sh start --build',
'$ chmod +x scripts/start.sh',
'$ ./scripts/start.sh start --build',
t('startupMessages1', language),
t('startupMessages2', language),
t('startupMessages3', language),

View File

@@ -12,7 +12,6 @@ interface HeaderBarProps {
onLanguageChange?: (lang: Language) => void
user?: { email: string } | null
onLogout?: () => void
isAdminMode?: boolean
onPageChange?: (page: string) => void
}
@@ -24,7 +23,6 @@ export default function HeaderBar({
onLanguageChange,
user,
onLogout,
isAdminMode = false,
onPageChange,
}: HeaderBarProps) {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false)
@@ -363,7 +361,7 @@ export default function HeaderBar({
{user.email}
</div>
</div>
{!isAdminMode && onLogout && (
{onLogout && (
<button
onClick={() => {
onLogout()
@@ -763,7 +761,7 @@ export default function HeaderBar({
</div>
</div>
</div>
{!isAdminMode && onLogout && (
{onLogout && (
<button
onClick={() => {
onLogout()

View File

@@ -1,5 +1,4 @@
import React, { createContext, useContext, useState, useEffect } from 'react'
import { getSystemConfig } from '../lib/config'
interface User {
id: string
@@ -49,37 +48,15 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
const [isLoading, setIsLoading] = useState(true)
useEffect(() => {
// 先检查是否为管理员模式(使用带缓存的系统配置获取)
getSystemConfig()
.then((data) => {
if (data.admin_mode) {
// 管理员模式下模拟admin用户
setUser({ id: 'admin', email: 'admin@localhost' })
setToken('admin-mode')
} else {
// 非管理员模式检查本地存储中是否有token
const savedToken = localStorage.getItem('auth_token')
const savedUser = localStorage.getItem('auth_user')
const savedToken = localStorage.getItem('auth_token')
const savedUser = localStorage.getItem('auth_user')
if (savedToken && savedUser) {
setToken(savedToken)
setUser(JSON.parse(savedUser))
}
}
setIsLoading(false)
})
.catch((err) => {
console.error('Failed to fetch system config:', err)
// 发生错误时,继续检查本地存储
const savedToken = localStorage.getItem('auth_token')
const savedUser = localStorage.getItem('auth_user')
if (savedToken && savedUser) {
setToken(savedToken)
setUser(JSON.parse(savedUser))
}
if (savedToken && savedUser) {
setToken(savedToken)
setUser(JSON.parse(savedUser))
}
setIsLoading(false)
})
setIsLoading(false)
}, [])
const login = async (email: string, password: string) => {

View File

@@ -11,7 +11,6 @@ export const translations = {
competition: 'Competition',
running: 'RUNNING',
stopped: 'STOPPED',
adminMode: 'Admin Mode',
logout: 'Logout',
switchTrader: 'Switch Trader:',
view: 'View',
@@ -504,7 +503,6 @@ export const translations = {
competition: '竞赛',
running: '运行中',
stopped: '已停止',
adminMode: '管理员模式',
logout: '退出',
switchTrader: '切换交易员:',
view: '查看',

View File

@@ -1,6 +1,8 @@
export interface SystemConfig {
admin_mode: boolean
beta_mode: boolean
default_coins?: string[]
btc_eth_leverage?: number
altcoin_leverage?: number
}
let configPromise: Promise<SystemConfig> | null = null