Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOS] Admin Dashboard - Migrate to Own Coordinator/Folder #1300

Merged
merged 3 commits into from
Nov 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions Shared/Coordinators/AdminDashboardCoordinator.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
//
// Swiftfin is subject to the terms of the Mozilla Public
// License, v2.0. If a copy of the MPL was not distributed with this
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2024 Jellyfin & Jellyfin Contributors
//

import JellyfinAPI
import Stinsen
import SwiftUI

final class AdminDashboardCoordinator: NavigationCoordinatable {

let stack = NavigationStack(initial: \AdminDashboardCoordinator.start)

@Root
var start = makeStart

@Route(.push)
var activeSessions = makeActiveSessions
@Route(.push)
var activeDeviceDetails = makeActiveDeviceDetails
@Route(.push)
var tasks = makeTasks
@Route(.push)
var devices = makeDevices
@Route(.push)
var deviceDetails = makeDeviceDetails
@Route(.push)
var editServerTask = makeEditServerTask
@Route(.modal)
var addServerTaskTrigger = makeAddServerTaskTrigger
@Route(.push)
var serverLogs = makeServerLogs
@Route(.push)
var users = makeUsers
@Route(.push)
var userDetails = makeUserDetails
@Route(.push)
var userDevices = makeUserDevices
@Route(.modal)
var addServerUser = makeAddServerUser
@Route(.push)
var apiKeys = makeAPIKeys

@ViewBuilder
func makeAdminDashboard() -> some View {
AdminDashboardView()
}

@ViewBuilder
func makeActiveSessions() -> some View {
ActiveSessionsView()
}

@ViewBuilder
func makeActiveDeviceDetails(box: BindingBox<SessionInfo?>) -> some View {
ActiveSessionDetailView(box: box)
}

@ViewBuilder
func makeTasks() -> some View {
ServerTasksView()
}

@ViewBuilder
func makeDevices() -> some View {
DevicesView()
}

@ViewBuilder
func makeDeviceDetails(device: DeviceInfo) -> some View {
DeviceDetailsView(device: device)
}

@ViewBuilder
func makeEditServerTask(observer: ServerTaskObserver) -> some View {
EditServerTaskView(observer: observer)
}

func makeAddServerTaskTrigger(observer: ServerTaskObserver) -> NavigationViewCoordinator<BasicNavigationViewCoordinator> {
NavigationViewCoordinator {
AddTaskTriggerView(observer: observer)
}
}

@ViewBuilder
func makeServerLogs() -> some View {
ServerLogsView()
}

@ViewBuilder
func makeUsers() -> some View {
ServerUsersView()
}

@ViewBuilder
func makeUserDetails(user: UserDto) -> some View {
ServerUserDetailsView(user: user)
}

func makeAddServerUser() -> NavigationViewCoordinator<BasicNavigationViewCoordinator> {
NavigationViewCoordinator {
AddServerUserView()
}
}

@ViewBuilder
func makeUserDevices() -> some View {
DevicesView()
}

@ViewBuilder
func makeAPIKeys() -> some View {
APIKeysView()
}

@ViewBuilder
func makeStart() -> some View {
AdminDashboardView()
}
}
104 changes: 3 additions & 101 deletions Shared/Coordinators/SettingsCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,36 +57,8 @@ final class SettingsCoordinator: NavigationCoordinatable {
@Route(.modal)
var createCustomDeviceProfile = makeCreateCustomDeviceProfile

// TODO: Move AdminDashboard items to its own coordinator ->
@Route(.push)
var userDashboard = makeUserDashboard
@Route(.push)
var activeSessions = makeActiveSessions
@Route(.push)
var activeDeviceDetails = makeActiveDeviceDetails
@Route(.push)
var tasks = makeTasks
@Route(.push)
var devices = makeDevices
@Route(.push)
var deviceDetails = makeDeviceDetails
@Route(.push)
var editServerTask = makeEditServerTask
@Route(.modal)
var addServerTaskTrigger = makeAddServerTaskTrigger
@Route(.push)
var serverLogs = makeServerLogs
@Route(.push)
var users = makeUsers
@Route(.push)
var userDetails = makeUserDetails
@Route(.push)
var userDevices = makeUserDevices
@Route(.modal)
var addServerUser = makeAddServerUser
@Route(.push)
var apiKeys = makeAPIKeys
// <- End of AdminDashboard Items
var adminDashboard = makeAdminDashboard

#if DEBUG
@Route(.push)
Expand Down Expand Up @@ -194,81 +166,11 @@ final class SettingsCoordinator: NavigationCoordinatable {
VideoPlayerSettingsCoordinator()
}

// TODO: Move AdminDashboard items to its own coordinator ->
@ViewBuilder
func makeUserDashboard() -> some View {
UserDashboardView()
}

@ViewBuilder
func makeActiveSessions() -> some View {
ActiveSessionsView()
}

@ViewBuilder
func makeActiveDeviceDetails(box: BindingBox<SessionInfo?>) -> some View {
ActiveSessionDetailView(box: box)
}

@ViewBuilder
func makeTasks() -> some View {
ServerTasksView()
}

@ViewBuilder
func makeDevices() -> some View {
DevicesView()
}

@ViewBuilder
func makeDeviceDetails(device: DeviceInfo) -> some View {
DeviceDetailsView(device: device)
func makeAdminDashboard() -> some View {
AdminDashboardCoordinator().view()
}

@ViewBuilder
func makeEditServerTask(observer: ServerTaskObserver) -> some View {
EditServerTaskView(observer: observer)
}

func makeAddServerTaskTrigger(observer: ServerTaskObserver) -> NavigationViewCoordinator<BasicNavigationViewCoordinator> {
NavigationViewCoordinator {
AddTaskTriggerView(observer: observer)
}
}

@ViewBuilder
func makeServerLogs() -> some View {
ServerLogsView()
}

@ViewBuilder
func makeUsers() -> some View {
ServerUsersView()
}

@ViewBuilder
func makeUserDetails(user: UserDto) -> some View {
ServerUserDetailsView(user: user)
}

func makeAddServerUser() -> NavigationViewCoordinator<BasicNavigationViewCoordinator> {
NavigationViewCoordinator {
AddServerUserView()
}
}

@ViewBuilder
func makeUserDevices() -> some View {
DevicesView()
}

@ViewBuilder
func makeAPIKeys() -> some View {
APIKeysView()
}

// <- End of AdminDashboard Items

#if DEBUG
@ViewBuilder
func makeDebugSettings() -> some View {
Expand Down
Loading
Loading