优化仪表板页面,移除冗余组件,简化代码结构

This commit is contained in:
ryan
2026-03-14 16:17:43 +08:00
parent ee104f0ad8
commit 590e1d7a8a
11 changed files with 150 additions and 188 deletions
@@ -434,62 +434,70 @@ export function WebsiteDetailPage({websiteId}: { websiteId: string }) {
</AppCard>
</div>
<WebsiteEditorModal
isOpen={isEditorOpen}
onClose={() => {
setIsEditorOpen(false);
setPreferredCertificateId(null);
}}
initialDomain={website}
certificates={certificates}
certificatesLoading={certificatesQuery.isLoading}
preferredCertificateId={preferredCertificateId}
onRequestImportCertificate={() => setIsCertificateImportOpen(true)}
onSaved={() => {
setPreferredCertificateId(null);
setFeedback({tone: 'success', message: '网站已更新。'});
}}
/>
{isEditorOpen ? (
<WebsiteEditorModal
isOpen={isEditorOpen}
onClose={() => {
setIsEditorOpen(false);
setPreferredCertificateId(null);
}}
initialDomain={website}
certificates={certificates}
certificatesLoading={certificatesQuery.isLoading}
preferredCertificateId={preferredCertificateId}
onRequestImportCertificate={() => setIsCertificateImportOpen(true)}
onSaved={() => {
setPreferredCertificateId(null);
setFeedback({tone: 'success', message: '网站已更新。'});
}}
/>
) : null}
<CertificateImportModal
isOpen={isCertificateImportOpen}
onClose={() => setIsCertificateImportOpen(false)}
onImported={(importedCertificate) => {
setPreferredCertificateId(importedCertificate.id);
setFeedback({
tone: 'success',
message: `证书 ${importedCertificate.name} 已导入,可在编辑网站时直接应用。`,
});
setIsEditorOpen(true);
}}
/>
{isCertificateImportOpen ? (
<CertificateImportModal
isOpen={isCertificateImportOpen}
onClose={() => setIsCertificateImportOpen(false)}
onImported={(importedCertificate) => {
setPreferredCertificateId(importedCertificate.id);
setFeedback({
tone: 'success',
message: `证书 ${importedCertificate.name} 已导入,可在编辑网站时直接应用。`,
});
setIsEditorOpen(true);
}}
/>
) : null}
<CertificateDetailModal
certificateId={certificate?.id ?? null}
isOpen={isCertificateDetailOpen}
onClose={() => setIsCertificateDetailOpen(false)}
onEdit={() => {
setIsCertificateDetailOpen(false);
setIsCertificateEditorOpen(true);
}}
onDelete={() => {
setIsCertificateDetailOpen(false);
handleDeleteCertificate();
}}
deleting={deleteCertificateMutation.isPending}
/>
{isCertificateDetailOpen ? (
<CertificateDetailModal
certificateId={certificate?.id ?? null}
isOpen={isCertificateDetailOpen}
onClose={() => setIsCertificateDetailOpen(false)}
onEdit={() => {
setIsCertificateDetailOpen(false);
setIsCertificateEditorOpen(true);
}}
onDelete={() => {
setIsCertificateDetailOpen(false);
handleDeleteCertificate();
}}
deleting={deleteCertificateMutation.isPending}
/>
) : null}
<CertificateEditorModal
certificateId={certificate?.id ?? null}
isOpen={isCertificateEditorOpen}
onClose={() => setIsCertificateEditorOpen(false)}
onSaved={(updatedCertificate) => {
setFeedback({
tone: 'success',
message: `证书 ${updatedCertificate.name} 已更新。`,
});
}}
/>
{isCertificateEditorOpen ? (
<CertificateEditorModal
certificateId={certificate?.id ?? null}
isOpen={isCertificateEditorOpen}
onClose={() => setIsCertificateEditorOpen(false)}
onSaved={(updatedCertificate) => {
setFeedback({
tone: 'success',
message: `证书 ${updatedCertificate.name} 已更新。`,
});
}}
/>
) : null}
</>
);
}
@@ -114,7 +114,7 @@ export function WebsiteEditorModal({
? toManagedDomainFormValues(initialDomain)
: defaultManagedDomainValues,
);
}, [form, initialDomain, isOpen]);
}, [form, initialDomain, isOpen, saveMutation]);
useEffect(() => {
if (!isOpen || !preferredCertificateId) {
@@ -28,7 +28,6 @@ import {
DangerButton,
PrimaryButton,
} from '@/features/shared/components/resource-primitives';
import { formatDateTime } from '@/lib/utils/date';
type FeedbackState = {
tone: 'info' | 'success' | 'danger';
@@ -205,36 +204,40 @@ export function WebsitesPage() {
</AppCard>
</div>
<WebsiteEditorModal
isOpen={isWebsiteModalOpen}
onClose={() => {
setIsWebsiteModalOpen(false);
setPreferredCertificateId(null);
}}
certificates={certificates}
certificatesLoading={certificatesQuery.isLoading}
preferredCertificateId={preferredCertificateId}
onRequestImportCertificate={() => setIsCertificateImportOpen(true)}
onSaved={(_, mode) => {
setPreferredCertificateId(null);
setFeedback({
tone: 'success',
message: mode === 'create' ? '网站已创建。' : '网站已更新。',
});
}}
/>
{isWebsiteModalOpen ? (
<WebsiteEditorModal
isOpen={isWebsiteModalOpen}
onClose={() => {
setIsWebsiteModalOpen(false);
setPreferredCertificateId(null);
}}
certificates={certificates}
certificatesLoading={certificatesQuery.isLoading}
preferredCertificateId={preferredCertificateId}
onRequestImportCertificate={() => setIsCertificateImportOpen(true)}
onSaved={(_, mode) => {
setPreferredCertificateId(null);
setFeedback({
tone: 'success',
message: mode === 'create' ? '网站已创建。' : '网站已更新。',
});
}}
/>
) : null}
<CertificateImportModal
isOpen={isCertificateImportOpen}
onClose={() => setIsCertificateImportOpen(false)}
onImported={(certificate) => {
setPreferredCertificateId(certificate.id);
setFeedback({
tone: 'success',
message: `证书 ${certificate.name} 已导入,可直接用于当前网站。`,
});
}}
/>
{isCertificateImportOpen ? (
<CertificateImportModal
isOpen={isCertificateImportOpen}
onClose={() => setIsCertificateImportOpen(false)}
onImported={(certificate) => {
setPreferredCertificateId(certificate.id);
setFeedback({
tone: 'success',
message: `证书 ${certificate.name} 已导入,可直接用于当前网站。`,
});
}}
/>
) : null}
</>
);
}