feat(06-03): extend RemoteConfigStep for all 7 backends
- Add SftpAuthToggle import - Extend backendLabel record to cover onedrive/sftp/gcs/b2 - Add sftp branch with host/user FieldRenderers + SftpAuthToggle - onedrive/gcs/b2 render via existing registry loop (no custom branch) - Full Vitest suite green (147 tests); zero TypeScript errors
This commit is contained in:
@@ -9,6 +9,7 @@ import { BACKEND_REGISTRY } from '../../schemas/registry';
|
||||
import { BACKEND_SCHEMAS } from '../../schemas';
|
||||
import { FieldRenderer } from '../ui/FieldRenderer';
|
||||
import { AzureAuthToggle } from './AzureAuthToggle';
|
||||
import { SftpAuthToggle } from './SftpAuthToggle';
|
||||
import type { FieldError } from 'react-hook-form';
|
||||
|
||||
export function RemoteConfigStep() {
|
||||
@@ -45,6 +46,10 @@ export function RemoteConfigStep() {
|
||||
azureblob: 'Azure Blob Storage',
|
||||
s3: 'Amazon S3',
|
||||
's3-compatible': 'S3-Compatible Storage',
|
||||
onedrive: 'OneDrive',
|
||||
sftp: 'SFTP',
|
||||
gcs: 'Google Cloud Storage',
|
||||
b2: 'Backblaze B2',
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -68,8 +73,30 @@ export function RemoteConfigStep() {
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
) : backendType === 'sftp' ? (
|
||||
<>
|
||||
{/* host and user via FieldRenderer */}
|
||||
<FieldRenderer
|
||||
field={BACKEND_REGISTRY.sftp.fields.find(f => f.key === 'host')!}
|
||||
register={register}
|
||||
error={errors.host as FieldError | undefined}
|
||||
/>
|
||||
<FieldRenderer
|
||||
field={BACKEND_REGISTRY.sftp.fields.find(f => f.key === 'user')!}
|
||||
register={register}
|
||||
error={errors.user as FieldError | undefined}
|
||||
/>
|
||||
{/* Auth toggle handles pass + key_pem — both always registered */}
|
||||
<SftpAuthToggle
|
||||
register={register}
|
||||
errors={{
|
||||
pass: errors.pass as FieldError | undefined,
|
||||
key_pem: errors.key_pem as FieldError | undefined,
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
/* S3 and S3-compatible: full registry loop — FieldRenderer handles provider hiding */
|
||||
/* All others (onedrive, gcs, b2, s3, s3-compatible): full registry loop */
|
||||
BACKEND_REGISTRY[backendType].fields.map(field => (
|
||||
<FieldRenderer
|
||||
key={field.key}
|
||||
|
||||
Reference in New Issue
Block a user