fix(import): enhance feedback for importable hosts and file server directives in Upload handler

This commit is contained in:
GitHub Actions
2026-01-31 20:42:25 +00:00
parent 1defb04fca
commit 5cf9181060
3 changed files with 90 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
import { useState } from 'react'
import React, { useState } from 'react'
import { uploadCaddyfilesMulti } from '../api/import'
type Props = {
@@ -20,6 +20,23 @@ export default function ImportSitesModal({ visible, onClose, onUploaded }: Props
setSites(s)
}
const handleFileInput = async (e: React.ChangeEvent<HTMLInputElement>) => {
const files = e.target.files
if (!files || files.length === 0) return
const newSites: string[] = []
for (let i = 0; i < files.length; i++) {
try {
const text = await files[i].text()
newSites.push(text)
} catch (err) {
// ignore read errors for individual files
newSites.push('')
}
}
if (newSites.length > 0) setSites(newSites)
}
const addSite = () => setSites(prev => [...prev, ''])
const removeSite = (index: number) => setSites(prev => prev.filter((_, i) => i !== index))
@@ -52,6 +69,15 @@ export default function ImportSitesModal({ visible, onClose, onUploaded }: Props
<h3 id="multi-site-modal-title" className="text-xl font-semibold text-white mb-4">Multi-site Import</h3>
<p className="text-gray-400 text-sm mb-4">Add each site's Caddyfile content separately, then parse them together.</p>
{/* Hidden file input so E2E tests can programmatically upload multiple files */}
<input
type="file"
accept=".caddy,.caddyfile,.txt,text/plain"
multiple
onChange={handleFileInput}
style={{ display: 'none' }}
/>
<div className="space-y-4 max-h-[60vh] overflow-auto mb-4">
{sites.map((s, idx) => (
<div key={idx} className="border border-gray-800 rounded-lg p-3">