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 { BACKEND_SCHEMAS } from '../../schemas';
|
||||||
import { FieldRenderer } from '../ui/FieldRenderer';
|
import { FieldRenderer } from '../ui/FieldRenderer';
|
||||||
import { AzureAuthToggle } from './AzureAuthToggle';
|
import { AzureAuthToggle } from './AzureAuthToggle';
|
||||||
|
import { SftpAuthToggle } from './SftpAuthToggle';
|
||||||
import type { FieldError } from 'react-hook-form';
|
import type { FieldError } from 'react-hook-form';
|
||||||
|
|
||||||
export function RemoteConfigStep() {
|
export function RemoteConfigStep() {
|
||||||
@@ -45,6 +46,10 @@ export function RemoteConfigStep() {
|
|||||||
azureblob: 'Azure Blob Storage',
|
azureblob: 'Azure Blob Storage',
|
||||||
s3: 'Amazon S3',
|
s3: 'Amazon S3',
|
||||||
's3-compatible': 'S3-Compatible Storage',
|
's3-compatible': 'S3-Compatible Storage',
|
||||||
|
onedrive: 'OneDrive',
|
||||||
|
sftp: 'SFTP',
|
||||||
|
gcs: 'Google Cloud Storage',
|
||||||
|
b2: 'Backblaze B2',
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
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 => (
|
BACKEND_REGISTRY[backendType].fields.map(field => (
|
||||||
<FieldRenderer
|
<FieldRenderer
|
||||||
key={field.key}
|
key={field.key}
|
||||||
|
|||||||
Reference in New Issue
Block a user