Files
RouterOS/RouterOSAssistant/Features/Wizard/Steps/Setup/SetupView.swift
T
KayandClaude Sonnet 5 87f4fa188c M3: WAN + LAN/DHCP-Wizard mit Anwenden-Logik
Neuer "Einrichten"-Tab führt durch Internet-Anschluss (DHCP/statisch/
PPPoE) und Heimnetzwerk+DHCP-Server, zeigt vor dem Anwenden eine
Klartext-Übersicht (optional mit den exakten RouterOS-Befehlen) und
erstellt automatisch eine Sicherung, bevor Änderungen geschrieben
werden. Änderungen laufen über beide Transporte: CLI-Zeile für SSH,
JSON-POST für REST — beide aus einem gemeinsamen RouterOSCommand
gebaut. RouterOS-CLI-Syntax ist Standard und langjährig stabil, aber
nicht gegen ein echtes Gerät verifiziert; deshalb die Detailanzeige
im Übersichtsschritt vor dem Anwenden.

ConnectionService ist jetzt der einzige App-weite Zustand (ersetzt
SessionStore) und wird explizit an alle drei Tabs durchgereicht.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
2026-09-11 21:07:34 +02:00

42 lines
1.5 KiB
Swift

import SwiftUI
struct SetupView: View {
@ObservedObject var connectionService: ConnectionService
@StateObject private var viewModel: SetupViewModel
init(connectionService: ConnectionService) {
self.connectionService = connectionService
_viewModel = StateObject(wrappedValue: SetupViewModel(connectionService: connectionService))
}
var body: some View {
NavigationStack {
Group {
if connectionService.credentials == nil {
ContentUnavailableView(
"Nicht verbunden",
systemImage: "network.slash",
description: Text("Verbinde dich zuerst im Tab \"Verbinden\" mit deinem Router.")
)
} else {
switch viewModel.step {
case .wan:
WanStepView(viewModel: viewModel, availableInterfaces: connectionService.interfaces)
case .lan:
LanStepView(viewModel: viewModel, availableInterfaces: connectionService.interfaces)
case .review:
ReviewApplyView(viewModel: viewModel, credentials: connectionService.credentials)
}
}
}
}
.onAppear {
viewModel.prepareDefaults(from: connectionService.interfaces)
}
}
}
#Preview {
SetupView(connectionService: ConnectionService())
}