[重构] 清除旧兼容层

This commit is contained in:
ryan
2026-03-11 17:05:22 +08:00
parent e1a9cc738e
commit 57ac8b6f7c
14 changed files with 4 additions and 136 deletions
-31
View File
@@ -5,7 +5,6 @@ import (
"atsflare/controller"
"atsflare/middleware"
"embed"
"fmt"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
"io/fs"
@@ -23,7 +22,6 @@ func setWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) {
router.Use(middleware.GlobalWebRateLimit())
fileDownloadRoute := router.Group("/")
fileDownloadRoute.GET("/upload/:file", middleware.DownloadRateLimit(), controller.DownloadFile)
registerLegacyWebRedirects(router)
router.Use(middleware.Cache())
router.Use(static.Serve("/", common.EmbedFolder(buildFS, "web/build")))
router.NoRoute(func(c *gin.Context) {
@@ -40,35 +38,6 @@ func setWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) {
})
}
func registerLegacyWebRedirects(router *gin.Engine) {
legacyRoutes := map[string]string{
"/proxy-route": "/proxy-routes",
"/config-version": "/config-versions",
"/node": "/nodes",
"/apply-log": "/apply-logs",
"/managed-domain": "/managed-domains",
"/tls-certificate": "/tls-certificates",
"/file": "/files",
"/user": "/users",
"/user/add": "/users?mode=create",
"/user/edit": "/users",
"/setting": "/settings",
}
for source, target := range legacyRoutes {
router.GET(source, func(target string) gin.HandlerFunc {
return func(c *gin.Context) {
c.Redirect(http.StatusFound, target)
}
}(target))
}
router.GET("/user/edit/:id", func(c *gin.Context) {
target := fmt.Sprintf("/users?edit=%s", c.Param("id"))
c.Redirect(http.StatusFound, target)
})
}
func serveExportedPage(c *gin.Context, buildFS fs.FS) bool {
requestPath := strings.Trim(c.Request.URL.Path, "/")
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyApplyLogRoute() {
return <LegacyRouteRedirect href='/apply-logs' />;
}
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyConfigVersionPage() {
return <LegacyRouteRedirect href='/config-versions' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyFilePage() {
return <LegacyRouteRedirect href='/files' />;
}
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyManagedDomainRoute() {
return <LegacyRouteRedirect href='/managed-domains' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyNodePage() {
return <LegacyRouteRedirect href='/nodes' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyProxyRoutePage() {
return <LegacyRouteRedirect href='/proxy-routes' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacySettingPage() {
return <LegacyRouteRedirect href='/settings' />;
}
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyTlsCertificateRoute() {
return <LegacyRouteRedirect href='/tls-certificates' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyUserAddPage() {
return <LegacyRouteRedirect href='/users?mode=create' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyUserEditPage() {
return <LegacyRouteRedirect href='/users' />;
}
-5
View File
@@ -1,5 +0,0 @@
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
export default function LegacyUserPage() {
return <LegacyRouteRedirect href='/users' />;
}
@@ -1,24 +0,0 @@
'use client';
import { useRouter } from 'next/navigation';
import { useEffect } from 'react';
import { LoadingState } from '@/components/feedback/loading-state';
interface LegacyRouteRedirectProps {
href: string;
}
export function LegacyRouteRedirect({ href }: LegacyRouteRedirectProps) {
const router = useRouter();
useEffect(() => {
router.replace(href);
}, [href, router]);
return (
<main className='flex min-h-screen items-center justify-center px-4 py-8'>
<LoadingState className='w-full max-w-md' />
</main>
);
}
@@ -2,7 +2,6 @@
import { zodResolver } from '@hookform/resolvers/zod';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { useSearchParams } from 'next/navigation';
import { useEffect, useMemo, useState } from 'react';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
@@ -95,7 +94,6 @@ function toPayload(values: UserFormValues): UserMutationPayload {
export function UsersPage() {
const queryClient = useQueryClient();
const searchParams = useSearchParams();
const { user: currentUser } = useAuth();
const [page, setPage] = useState(0);
const [searchInput, setSearchInput] = useState('');
@@ -132,32 +130,12 @@ export function UsersPage() {
useEffect(() => {
if (editingUserQuery.data) {
form.reset({
username: editingUserQuery.data.username,
display_name: editingUserQuery.data.display_name || '',
password: '',
});
username: editingUserQuery.data.username,
display_name: editingUserQuery.data.display_name || '',
password: '',
});
}
}, [editingUserQuery.data, form]);
useEffect(() => {
const editParam = searchParams?.get('edit');
const modeParam = searchParams?.get('mode');
if (editParam) {
const parsedUserId = Number.parseInt(editParam, 10);
if (!Number.isNaN(parsedUserId) && parsedUserId > 0) {
setFeedback(null);
setEditingUserId(parsedUserId);
}
return;
}
if (modeParam === 'create') {
setFeedback(null);
setEditingUserId(null);
form.reset(defaultValues);
}
}, [form, searchParams]);
const saveMutation = useMutation({
mutationFn: async (values: UserFormValues) => {