feat: integrate direct CDN downloads in HomeClient

This commit is contained in:
dyzulk
2026-01-06 14:33:23 +07:00
parent 85719c3a3e
commit 63eb55642e

View File

@@ -11,6 +11,8 @@ interface CaCertificate {
type: string; type: string;
serial: string; serial: string;
expires_at: string; expires_at: string;
cdn_url?: string | null;
der_cdn_url?: string | null;
} }
// Simple internal ScrollToTop component // Simple internal ScrollToTop component
@@ -248,7 +250,7 @@ export default function HomeClient() {
<div className="space-y-3"> <div className="space-y-3">
<div className="grid grid-cols-2 gap-3"> <div className="grid grid-cols-2 gap-3">
<a <a
href={`/download/ca-certificate?serial=${cert.serial}`} href={cert.cdn_url || `/download/ca-certificate?serial=${cert.serial}`}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors" className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
@@ -260,7 +262,7 @@ export default function HomeClient() {
{t('download_standard')} {t('download_standard')}
</a> </a>
<a <a
href={`/download/ca-certificate?serial=${cert.serial}&format=der`} href={cert.der_cdn_url || `/download/ca-certificate?serial=${cert.serial}&format=der`}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors" className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors"
@@ -325,7 +327,7 @@ export default function HomeClient() {
<div className="space-y-3"> <div className="space-y-3">
<div className="grid grid-cols-2 gap-3"> <div className="grid grid-cols-2 gap-3">
<a <a
href={`/download/ca-certificate?serial=${cert.serial}`} href={cert.cdn_url || `/download/ca-certificate?serial=${cert.serial}`}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors" className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
@@ -337,7 +339,7 @@ export default function HomeClient() {
{t('download_standard')} {t('download_standard')}
</a> </a>
<a <a
href={`/download/ca-certificate?serial=${cert.serial}&format=der`} href={cert.der_cdn_url || `/download/ca-certificate?serial=${cert.serial}&format=der`}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors" className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors"