import type { ReactElement } from "react"; import type { AccountSelectionMode } from "../../../shared/account-usage-rules"; export interface AccountPriorityModel { mode: AccountSelectionMode; accounts: readonly { id: string; label: string; mode: string; status: string }[]; } export function AccountPriorityControls({ provider, model, busy, onModeChange, onMove }: { provider: string; model: AccountPriorityModel; busy: boolean; onModeChange?: (provider: string, mode: AccountSelectionMode) => void; onMove?: (provider: string, accountId: string, targetId: string) => void; }): ReactElement { const locale = typeof document !== "undefined" && document.documentElement.lang === "de" ? "de-DE" : "en-US"; return
event.stopPropagation()} onDragOver={(event) => event.stopPropagation()} onDrop={(event) => event.stopPropagation()}> Account-Reihenfolge
Account-Auswahl {(["automatic", "priority"] as const).map((mode) => )}

{model.mode === "priority" ? "Der erste nutzbare Account hat Vorrang. Gesperrte Accounts werden übersprungen; laufende Downloads bleiben unverändert." : "Die bisherige automatische Account-Verteilung bleibt aktiv. Die Reihenfolge gilt erst im Modus Feste Reihenfolge."}

    {model.accounts.map((account, index) =>
  1. { event.stopPropagation(); event.dataTransfer.effectAllowed = "move"; event.dataTransfer.setData("application/x-mdd-account-priority", JSON.stringify({ provider, id: account.id })); }} onDragOver={(event) => { event.stopPropagation(); if (!busy && event.dataTransfer.types.includes("application/x-mdd-account-priority")) event.preventDefault(); }} onDrop={(event) => { event.stopPropagation(); if (busy) return; event.preventDefault(); try { const source = JSON.parse(event.dataTransfer.getData("application/x-mdd-account-priority")); if (source.provider === provider && model.accounts.some((candidate) => candidate.id === source.id)) onMove?.(provider, source.id, account.id); } catch {} }}> {account.label}{account.mode} · {account.status}
  2. )}
{model.accounts.length === 0 ?

Keine Accounts vorhanden.

: null}
; }