fix(import): enhance feedback for importable hosts and file server directives in Upload handler
This commit is contained in:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user