From bcc1b6e733a63379ffc0234f5d5a58a9a6a1129f Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 4 Nov 2024 14:14:22 -0700 Subject: [PATCH] [iOS] Admin Dashboard - Migrate to Own Coordinator/Folder (#1300) * Migrate all files from UserDashboard to AdminDashboard. Rename accordingly since this is an admin only function. Move all AdminDashboard items from SettingsCoordinator to their own AdminDashboardCoordinator. Move all ViewModels to ONLY live inside of the iOS build since tvOS is * cleanup * fix for sub navigation --------- Co-authored-by: Ethan Pippin --- .../AdminDashboardCoordinator.swift | 123 ++++++++++++++++++ Shared/Coordinators/SettingsCoordinator.swift | 104 +-------------- .../APIKeysViewModel.swift | 0 .../ActiveSessionsViewModel.swift | 0 .../AddServerUserViewModel.swift | 0 .../DeviceDetailViewModel.swift | 0 .../DevicesViewModel.swift | 0 .../ServerTaskObserver.swift | 0 .../ServerTasksViewModel.swift} | 0 .../ServerUserAdminViewModel.swift | 0 .../ServerUsersViewModel.swift | 0 Swiftfin.xcodeproj/project.pbxproj | 64 +++++---- .../APIKeyView/APIKeysView.swift | 2 +- .../APIKeyView/Components/APIKeysRow.swift | 0 .../ActiveSessionDetailView.swift | 10 +- .../Components/StreamSection.swift | 0 .../Components/TranscodeSection.swift | 0 .../ActiveSessionsView.swift | 2 +- .../ActiveSessionProgressSection.swift | 0 .../Components/ActiveSessionRow.swift | 0 .../AddServerUserView/AddServerUserView.swift | 0 .../AddTaskTriggerView.swift | 0 .../Components/DayOfWeekRow.swift | 0 .../Components/IntervalRow.swift | 0 .../Components/TimeLimitSection.swift | 0 .../Components/TimeRow.swift | 0 .../Components/TriggerTypeRow.swift | 0 .../AdminDashboardView.swift} | 5 +- .../Components/DeviceSection.swift | 2 +- .../Components/UserSection.swift | 2 +- .../Sections/CompatibilitiesSection.swift | 0 .../Sections/CustomDeviceNameSection.swift | 0 .../DeviceDetailsView/DeviceDetailsView.swift | 6 +- .../DevicesView/Components/DeviceRow.swift | 0 .../DevicesView/DevicesView.swift | 2 +- .../Components/Sections/DetailsSection.swift | 0 .../Sections/LastErrorSection.swift | 0 .../Components/Sections/LastRunSection.swift | 0 .../Sections/ServerTaskProgressSection.swift | 0 .../Components/Sections/TriggersSection.swift | 2 +- .../Components/TriggerRow.swift | 0 .../EditServerTaskView.swift | 2 +- .../ServerLogsView/ServerLogsView.swift | 0 .../Components/DestructiveServerTask.swift | 0 .../Components/ServerTaskRow.swift | 2 +- .../ServerTasksView/ServerTasksView.swift | 2 +- .../ServerUserDetailsView.swift | 4 +- .../Components/ServerUsersRow.swift | 0 .../ServerUsersView/ServerUsersView.swift | 2 +- .../SettingsView/SettingsView.swift | 2 +- 50 files changed, 181 insertions(+), 157 deletions(-) create mode 100644 Shared/Coordinators/AdminDashboardCoordinator.swift rename Shared/ViewModels/{ => AdminDashboard}/APIKeysViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/ActiveSessionsViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/AddServerUserViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/DeviceDetailViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/DevicesViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/ServerTaskObserver.swift (100%) rename Shared/ViewModels/{ScheduledTasksViewModel.swift => AdminDashboard/ServerTasksViewModel.swift} (100%) rename Shared/ViewModels/{ => AdminDashboard}/ServerUserAdminViewModel.swift (100%) rename Shared/ViewModels/{ => AdminDashboard}/ServerUsersViewModel.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/APIKeyView/APIKeysView.swift (98%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/APIKeyView/Components/APIKeysRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionDetailView/ActiveSessionDetailView.swift (95%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionDetailView/Components/StreamSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionDetailView/Components/TranscodeSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionsView/ActiveSessionsView.swift (97%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionsView/Components/ActiveSessionProgressSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ActiveSessionsView/Components/ActiveSessionRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddServerUserView/AddServerUserView.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/AddTaskTriggerView.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/Components/DayOfWeekRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/Components/IntervalRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/Components/TimeLimitSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/Components/TimeRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/AddTaskTriggerView/Components/TriggerTypeRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView/UserDashboardView.swift => AdminDashboardView/AdminDashboardView.swift} (91%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/Components/DeviceSection.swift (96%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/Components/UserSection.swift (98%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/DeviceDetailsView/Components/Sections/CompatibilitiesSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/DeviceDetailsView/Components/Sections/CustomDeviceNameSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/DeviceDetailsView/DeviceDetailsView.swift (95%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/DevicesView/Components/DeviceRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/DevicesView/DevicesView.swift (99%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/Sections/DetailsSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/Sections/LastErrorSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/Sections/LastRunSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/Sections/ServerTaskProgressSection.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/Sections/TriggersSection.swift (97%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/Components/TriggerRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/EditServerTaskView/EditServerTaskView.swift (97%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerLogsView/ServerLogsView.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerTasksView/Components/DestructiveServerTask.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerTasksView/Components/ServerTaskRow.swift (98%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerTasksView/ServerTasksView.swift (97%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerUserDetailsView/ServerUserDetailsView.swift (90%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerUsersView/Components/ServerUsersRow.swift (100%) rename Swiftfin/Views/{SettingsView/UserDashboardView => AdminDashboardView}/ServerUsersView/ServerUsersView.swift (99%) diff --git a/Shared/Coordinators/AdminDashboardCoordinator.swift b/Shared/Coordinators/AdminDashboardCoordinator.swift new file mode 100644 index 000000000..1ae295be7 --- /dev/null +++ b/Shared/Coordinators/AdminDashboardCoordinator.swift @@ -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) -> 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 { + 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 { + NavigationViewCoordinator { + AddServerUserView() + } + } + + @ViewBuilder + func makeUserDevices() -> some View { + DevicesView() + } + + @ViewBuilder + func makeAPIKeys() -> some View { + APIKeysView() + } + + @ViewBuilder + func makeStart() -> some View { + AdminDashboardView() + } +} diff --git a/Shared/Coordinators/SettingsCoordinator.swift b/Shared/Coordinators/SettingsCoordinator.swift index 5a4d574c1..a09916181 100644 --- a/Shared/Coordinators/SettingsCoordinator.swift +++ b/Shared/Coordinators/SettingsCoordinator.swift @@ -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) @@ -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) -> 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 { - 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 { - 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 { diff --git a/Shared/ViewModels/APIKeysViewModel.swift b/Shared/ViewModels/AdminDashboard/APIKeysViewModel.swift similarity index 100% rename from Shared/ViewModels/APIKeysViewModel.swift rename to Shared/ViewModels/AdminDashboard/APIKeysViewModel.swift diff --git a/Shared/ViewModels/ActiveSessionsViewModel.swift b/Shared/ViewModels/AdminDashboard/ActiveSessionsViewModel.swift similarity index 100% rename from Shared/ViewModels/ActiveSessionsViewModel.swift rename to Shared/ViewModels/AdminDashboard/ActiveSessionsViewModel.swift diff --git a/Shared/ViewModels/AddServerUserViewModel.swift b/Shared/ViewModels/AdminDashboard/AddServerUserViewModel.swift similarity index 100% rename from Shared/ViewModels/AddServerUserViewModel.swift rename to Shared/ViewModels/AdminDashboard/AddServerUserViewModel.swift diff --git a/Shared/ViewModels/DeviceDetailViewModel.swift b/Shared/ViewModels/AdminDashboard/DeviceDetailViewModel.swift similarity index 100% rename from Shared/ViewModels/DeviceDetailViewModel.swift rename to Shared/ViewModels/AdminDashboard/DeviceDetailViewModel.swift diff --git a/Shared/ViewModels/DevicesViewModel.swift b/Shared/ViewModels/AdminDashboard/DevicesViewModel.swift similarity index 100% rename from Shared/ViewModels/DevicesViewModel.swift rename to Shared/ViewModels/AdminDashboard/DevicesViewModel.swift diff --git a/Shared/ViewModels/ServerTaskObserver.swift b/Shared/ViewModels/AdminDashboard/ServerTaskObserver.swift similarity index 100% rename from Shared/ViewModels/ServerTaskObserver.swift rename to Shared/ViewModels/AdminDashboard/ServerTaskObserver.swift diff --git a/Shared/ViewModels/ScheduledTasksViewModel.swift b/Shared/ViewModels/AdminDashboard/ServerTasksViewModel.swift similarity index 100% rename from Shared/ViewModels/ScheduledTasksViewModel.swift rename to Shared/ViewModels/AdminDashboard/ServerTasksViewModel.swift diff --git a/Shared/ViewModels/ServerUserAdminViewModel.swift b/Shared/ViewModels/AdminDashboard/ServerUserAdminViewModel.swift similarity index 100% rename from Shared/ViewModels/ServerUserAdminViewModel.swift rename to Shared/ViewModels/AdminDashboard/ServerUserAdminViewModel.swift diff --git a/Shared/ViewModels/ServerUsersViewModel.swift b/Shared/ViewModels/AdminDashboard/ServerUsersViewModel.swift similarity index 100% rename from Shared/ViewModels/ServerUsersViewModel.swift rename to Shared/ViewModels/AdminDashboard/ServerUsersViewModel.swift diff --git a/Swiftfin.xcodeproj/project.pbxproj b/Swiftfin.xcodeproj/project.pbxproj index a72476b80..61ab1aeb4 100644 --- a/Swiftfin.xcodeproj/project.pbxproj +++ b/Swiftfin.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ 4E10C81D2CC046610012CC9F /* UserSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E10C81C2CC0465F0012CC9F /* UserSection.swift */; }; 4E11805F2CBF52380077A588 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBF8263B596B003A4E83 /* Assets.xcassets */; }; 4E12F9172CBE9619006C217E /* DeviceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E12F9152CBE9615006C217E /* DeviceType.swift */; }; + 4E14DC032CD43DD2001B621B /* AdminDashboardCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E14DC022CD43DCB001B621B /* AdminDashboardCoordinator.swift */; }; 4E16FD512C0183DB00110147 /* LetterPickerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E16FD502C0183DB00110147 /* LetterPickerButton.swift */; }; 4E16FD532C01840C00110147 /* LetterPickerBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E16FD522C01840C00110147 /* LetterPickerBar.swift */; }; 4E16FD572C01A32700110147 /* LetterPickerOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E16FD562C01A32700110147 /* LetterPickerOrientation.swift */; }; @@ -56,11 +57,10 @@ 4E35CE6A2CBED95F00DBD886 /* DayOfWeek.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E35CE682CBED95F00DBD886 /* DayOfWeek.swift */; }; 4E35CE6C2CBEDB7600DBD886 /* TaskState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E35CE6B2CBEDB7300DBD886 /* TaskState.swift */; }; 4E35CE6D2CBEDB7600DBD886 /* TaskState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E35CE6B2CBEDB7300DBD886 /* TaskState.swift */; }; - 4E36395B2CC4DF0E00110EBC /* APIKeysViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E36395A2CC4DF0900110EBC /* APIKeysViewModel.swift */; }; 4E36395C2CC4DF0E00110EBC /* APIKeysViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E36395A2CC4DF0900110EBC /* APIKeysViewModel.swift */; }; 4E4A53222CBE0A1C003BD24D /* ChevronAlertButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB7B33A2CBDE63F004A342E /* ChevronAlertButton.swift */; }; 4E5E48E52AB59806003F1B48 /* CustomizeViewsSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E5E48E42AB59806003F1B48 /* CustomizeViewsSettings.swift */; }; - 4E63B9FA2C8A5BEF00C25378 /* UserDashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E63B9F42C8A5BEF00C25378 /* UserDashboardView.swift */; }; + 4E63B9FA2C8A5BEF00C25378 /* AdminDashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E63B9F42C8A5BEF00C25378 /* AdminDashboardView.swift */; }; 4E63B9FC2C8A5C3E00C25378 /* ActiveSessionsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E63B9FB2C8A5C3E00C25378 /* ActiveSessionsViewModel.swift */; }; 4E699BB92CB33FC2007CBD5D /* HomeSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E699BB82CB33FB5007CBD5D /* HomeSection.swift */; }; 4E699BC02CB3477D007CBD5D /* HomeSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E699BBF2CB34775007CBD5D /* HomeSection.swift */; }; @@ -85,7 +85,6 @@ 4E9A24ED2C82BAFB0023DA83 /* EditCustomDeviceProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E9A24EC2C82BAFB0023DA83 /* EditCustomDeviceProfileView.swift */; }; 4EA09DE12CC4E4F100CB27E4 /* APIKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA09DE02CC4E4F000CB27E4 /* APIKeysView.swift */; }; 4EA09DE42CC4E85C00CB27E4 /* APIKeysRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA09DE32CC4E85700CB27E4 /* APIKeysRow.swift */; }; - 4EA397462CD31CC000904C25 /* AddServerUserViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA397452CD31CB900904C25 /* AddServerUserViewModel.swift */; }; 4EA397472CD31CC000904C25 /* AddServerUserViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA397452CD31CB900904C25 /* AddServerUserViewModel.swift */; }; 4EB1404C2C8E45B1008691F3 /* StreamSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB1404B2C8E45B1008691F3 /* StreamSection.swift */; }; 4EB1A8CA2C9A766200F43898 /* ActiveSessionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB1A8C92C9A765800F43898 /* ActiveSessionsView.swift */; }; @@ -109,18 +108,15 @@ 4EC2B19B2CC96E7400D866BE /* ServerUsersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B19A2CC96E7000D866BE /* ServerUsersView.swift */; }; 4EC2B19E2CC96EAB00D866BE /* ServerUsersRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B19D2CC96EA300D866BE /* ServerUsersRow.swift */; }; 4EC2B1A22CC96F6600D866BE /* ServerUsersViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B1A12CC96F6000D866BE /* ServerUsersViewModel.swift */; }; - 4EC2B1A32CC96F6600D866BE /* ServerUsersViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B1A12CC96F6000D866BE /* ServerUsersViewModel.swift */; }; 4EC2B1A52CC96FA400D866BE /* ServerUserAdminViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B1A42CC96F9F00D866BE /* ServerUserAdminViewModel.swift */; }; 4EC2B1A92CC97C0700D866BE /* ServerUserDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC2B1A82CC97C0400D866BE /* ServerUserDetailsView.swift */; }; - 4EC50D612C934B3A00FC3D0E /* ScheduledTasksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC50D602C934B3A00FC3D0E /* ScheduledTasksViewModel.swift */; }; - 4EC50D622C934B3A00FC3D0E /* ScheduledTasksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC50D602C934B3A00FC3D0E /* ScheduledTasksViewModel.swift */; }; + 4EC50D612C934B3A00FC3D0E /* ServerTasksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC50D602C934B3A00FC3D0E /* ServerTasksViewModel.swift */; }; 4EC6C16B2C92999800FC904B /* TranscodeSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC6C16A2C92999800FC904B /* TranscodeSection.swift */; }; 4ECDAA9E2C920A8E0030F2F5 /* TranscodeReason.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ECDAA9D2C920A8E0030F2F5 /* TranscodeReason.swift */; }; 4ECDAA9F2C920A8E0030F2F5 /* TranscodeReason.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ECDAA9D2C920A8E0030F2F5 /* TranscodeReason.swift */; }; 4EE141692C8BABDF0045B661 /* ActiveSessionProgressSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE141682C8BABDF0045B661 /* ActiveSessionProgressSection.swift */; }; 4EED874A2CBF824B002354D2 /* DeviceRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED87462CBF824B002354D2 /* DeviceRow.swift */; }; 4EED874B2CBF824B002354D2 /* DevicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED87482CBF824B002354D2 /* DevicesView.swift */; }; - 4EED87502CBF84AD002354D2 /* DevicesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED874F2CBF84AD002354D2 /* DevicesViewModel.swift */; }; 4EED87512CBF84AD002354D2 /* DevicesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED874F2CBF84AD002354D2 /* DevicesViewModel.swift */; }; 4EF18B262CB9934C00343666 /* LibraryRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF18B252CB9934700343666 /* LibraryRow.swift */; }; 4EF18B282CB9936D00343666 /* ListColumnsPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF18B272CB9936400343666 /* ListColumnsPickerView.swift */; }; @@ -289,7 +285,6 @@ E1002B682793CFBA00E47059 /* Algorithms in Frameworks */ = {isa = PBXBuildFile; productRef = E1002B672793CFBA00E47059 /* Algorithms */; }; E1002B6B2793E36600E47059 /* Algorithms in Frameworks */ = {isa = PBXBuildFile; productRef = E1002B6A2793E36600E47059 /* Algorithms */; }; E101ECD52CD40489001EA89E /* DeviceDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E101ECD42CD40489001EA89E /* DeviceDetailViewModel.swift */; }; - E101ECD62CD40489001EA89E /* DeviceDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E101ECD42CD40489001EA89E /* DeviceDetailViewModel.swift */; }; E102312C2BCF8A08009D71FC /* iOSLiveTVCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10231292BCF8A08009D71FC /* iOSLiveTVCoordinator.swift */; }; E102312F2BCF8A08009D71FC /* tvOSLiveTVCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E102312A2BCF8A08009D71FC /* tvOSLiveTVCoordinator.swift */; }; E10231392BCF8A3C009D71FC /* ProgramButtonContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10231302BCF8A3C009D71FC /* ProgramButtonContent.swift */; }; @@ -1012,7 +1007,6 @@ E1EA9F6B28F8A79E00BEC442 /* VideoPlayerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1EA9F6928F8A79E00BEC442 /* VideoPlayerManager.swift */; }; E1EBCB42278BD174009FE6E9 /* TruncatedText.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1EBCB41278BD174009FE6E9 /* TruncatedText.swift */; }; E1EBCB46278BD595009FE6E9 /* ItemOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1EBCB45278BD595009FE6E9 /* ItemOverviewView.swift */; }; - E1ED7FD82CA8AF7400ACB6E3 /* ServerTaskObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ED7FD72CA8AF7400ACB6E3 /* ServerTaskObserver.swift */; }; E1ED7FD92CA8AF7400ACB6E3 /* ServerTaskObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ED7FD72CA8AF7400ACB6E3 /* ServerTaskObserver.swift */; }; E1ED7FDB2CAA4B6D00ACB6E3 /* PlayerStateInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ED7FDA2CAA4B6D00ACB6E3 /* PlayerStateInfo.swift */; }; E1ED7FDC2CAA4B6D00ACB6E3 /* PlayerStateInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ED7FDA2CAA4B6D00ACB6E3 /* PlayerStateInfo.swift */; }; @@ -1076,6 +1070,7 @@ 4E10C8182CC045690012CC9F /* CustomDeviceNameSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomDeviceNameSection.swift; sourceTree = ""; }; 4E10C81C2CC0465F0012CC9F /* UserSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSection.swift; sourceTree = ""; }; 4E12F9152CBE9615006C217E /* DeviceType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceType.swift; sourceTree = ""; }; + 4E14DC022CD43DCB001B621B /* AdminDashboardCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdminDashboardCoordinator.swift; sourceTree = ""; }; 4E16FD502C0183DB00110147 /* LetterPickerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterPickerButton.swift; sourceTree = ""; }; 4E16FD522C01840C00110147 /* LetterPickerBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterPickerBar.swift; sourceTree = ""; }; 4E16FD562C01A32700110147 /* LetterPickerOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LetterPickerOrientation.swift; sourceTree = ""; }; @@ -1105,7 +1100,7 @@ 4E35CE6B2CBEDB7300DBD886 /* TaskState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskState.swift; sourceTree = ""; }; 4E36395A2CC4DF0900110EBC /* APIKeysViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIKeysViewModel.swift; sourceTree = ""; }; 4E5E48E42AB59806003F1B48 /* CustomizeViewsSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomizeViewsSettings.swift; sourceTree = ""; }; - 4E63B9F42C8A5BEF00C25378 /* UserDashboardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDashboardView.swift; sourceTree = ""; }; + 4E63B9F42C8A5BEF00C25378 /* AdminDashboardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdminDashboardView.swift; sourceTree = ""; }; 4E63B9FB2C8A5C3E00C25378 /* ActiveSessionsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActiveSessionsViewModel.swift; sourceTree = ""; }; 4E699BB82CB33FB5007CBD5D /* HomeSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSection.swift; sourceTree = ""; }; 4E699BBF2CB34775007CBD5D /* HomeSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSection.swift; sourceTree = ""; }; @@ -1146,7 +1141,7 @@ 4EC2B1A12CC96F6000D866BE /* ServerUsersViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerUsersViewModel.swift; sourceTree = ""; }; 4EC2B1A42CC96F9F00D866BE /* ServerUserAdminViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerUserAdminViewModel.swift; sourceTree = ""; }; 4EC2B1A82CC97C0400D866BE /* ServerUserDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerUserDetailsView.swift; sourceTree = ""; }; - 4EC50D602C934B3A00FC3D0E /* ScheduledTasksViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScheduledTasksViewModel.swift; sourceTree = ""; }; + 4EC50D602C934B3A00FC3D0E /* ServerTasksViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerTasksViewModel.swift; sourceTree = ""; }; 4EC6C16A2C92999800FC904B /* TranscodeSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscodeSection.swift; sourceTree = ""; }; 4ECDAA9D2C920A8E0030F2F5 /* TranscodeReason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscodeReason.swift; sourceTree = ""; }; 4EDBDCD02CBDD6510033D347 /* SessionInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionInfo.swift; sourceTree = ""; }; @@ -1923,6 +1918,22 @@ path = Sections; sourceTree = ""; }; + 4E14DC052CD43F5E001B621B /* AdminDashboard */ = { + isa = PBXGroup; + children = ( + 4E63B9FB2C8A5C3E00C25378 /* ActiveSessionsViewModel.swift */, + 4EA397452CD31CB900904C25 /* AddServerUserViewModel.swift */, + 4E36395A2CC4DF0900110EBC /* APIKeysViewModel.swift */, + E101ECD42CD40489001EA89E /* DeviceDetailViewModel.swift */, + 4EED874F2CBF84AD002354D2 /* DevicesViewModel.swift */, + E1ED7FD72CA8AF7400ACB6E3 /* ServerTaskObserver.swift */, + 4EC50D602C934B3A00FC3D0E /* ServerTasksViewModel.swift */, + 4EC2B1A42CC96F9F00D866BE /* ServerUserAdminViewModel.swift */, + 4EC2B1A12CC96F6000D866BE /* ServerUsersViewModel.swift */, + ); + path = AdminDashboard; + sourceTree = ""; + }; 4E16FD4E2C0183B500110147 /* LetterPickerBar */ = { isa = PBXGroup; children = ( @@ -2007,11 +2018,12 @@ path = PlaybackBitrate; sourceTree = ""; }; - 4E63B9F52C8A5BEF00C25378 /* UserDashboardView */ = { + 4E63B9F52C8A5BEF00C25378 /* AdminDashboardView */ = { isa = PBXGroup; children = ( 4E6C27062C8BD09200FD2185 /* ActiveSessionDetailView */, 4EB1A8CF2C9B2FA200F43898 /* ActiveSessionsView */, + 4E63B9F42C8A5BEF00C25378 /* AdminDashboardView.swift */, 4EA09DDF2CC4E4D000CB27E4 /* APIKeyView */, 4EB7C8D32CCED318000CC011 /* AddServerUserView */, 4E35CE5B2CBED3F300DBD886 /* AddTaskTriggerView */, @@ -2023,9 +2035,8 @@ 4E35CE622CBED3FF00DBD886 /* ServerLogsView */, 4EC2B1A72CC9725400D866BE /* ServerUserDetailsView */, 4EC2B1992CC96E5E00D866BE /* ServerUsersView */, - 4E63B9F42C8A5BEF00C25378 /* UserDashboardView.swift */, ); - path = UserDashboardView; + path = AdminDashboardView; sourceTree = ""; }; 4E699BB52CB33F4B007CBD5D /* CustomizeViewsSettings */ = { @@ -2283,13 +2294,9 @@ 532175392671BCED005491E6 /* ViewModels */ = { isa = PBXGroup; children = ( - 4E63B9FB2C8A5C3E00C25378 /* ActiveSessionsViewModel.swift */, - 4EA397452CD31CB900904C25 /* AddServerUserViewModel.swift */, - 4E36395A2CC4DF0900110EBC /* APIKeysViewModel.swift */, + 4E14DC052CD43F5E001B621B /* AdminDashboard */, E10231462BCF8A6D009D71FC /* ChannelLibraryViewModel.swift */, 625CB5762678C34300530A6E /* ConnectToServerViewModel.swift */, - E101ECD42CD40489001EA89E /* DeviceDetailViewModel.swift */, - 4EED874F2CBF84AD002354D2 /* DevicesViewModel.swift */, E17AC96E2954EE4B003D2BC2 /* DownloadListViewModel.swift */, E113133928BEB71D00930F75 /* FilterViewModel.swift */, 625CB5722678C32A00530A6E /* HomeViewModel.swift */, @@ -2300,15 +2307,11 @@ E10231472BCF8A6D009D71FC /* ProgramsViewModel.swift */, 6334175C287DE0D0000603CE /* QuickConnectAuthorizeViewModel.swift */, E1BCDB4E2BE1F491009F6744 /* ResetUserPasswordViewModel.swift */, - 4EC50D602C934B3A00FC3D0E /* ScheduledTasksViewModel.swift */, 62E632DB267D2E130063E547 /* SearchViewModel.swift */, E13DD3F82717E961009D4DAF /* SelectUserViewModel.swift */, E19D41AD2BF288320082B8B2 /* ServerCheckViewModel.swift */, E173DA5326D050F500CC4EB7 /* ServerConnectionViewModel.swift */, E1ED7FE12CAA6BAF00ACB6E3 /* ServerLogsViewModel.swift */, - E1ED7FD72CA8AF7400ACB6E3 /* ServerTaskObserver.swift */, - 4EC2B1A42CC96F9F00D866BE /* ServerUserAdminViewModel.swift */, - 4EC2B1A12CC96F6000D866BE /* ServerUsersViewModel.swift */, 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */, E19D41A62BEEDC450082B8B2 /* UserLocalSecurityViewModel.swift */, E14EA1682BF7330A00DE757A /* UserProfileImageViewModel.swift */, @@ -2773,6 +2776,7 @@ 62C29E9D26D0FE5900C1D2E7 /* Coordinators */ = { isa = PBXGroup; children = ( + 4E14DC022CD43DCB001B621B /* AdminDashboardCoordinator.swift */, E1D4BF892719D3D000A11E64 /* AppSettingsCoordinator.swift */, E154967D296CCB6C00C4EF88 /* BasicNavigationCoordinator.swift */, 4E204E582C574FD9004D22A2 /* CustomizeSettingsCoordinator.swift */, @@ -3257,6 +3261,7 @@ isa = PBXGroup; children = ( E18E01F3288747580022598C /* AboutAppView.swift */, + 4E63B9F52C8A5BEF00C25378 /* AdminDashboardView */, E1401C9F2937DFF500E8B599 /* AppIconSelectorView.swift */, E1763A732BF3FA4C004DF6AB /* AppLoadingView.swift */, E164A7F12BE471E700A54B18 /* AppSettingsView */, @@ -4121,7 +4126,6 @@ E15756332936851D00976E1F /* NativeVideoPlayerSettingsView.swift */, 4E2AC4D72C6C4D8D00DD600D /* PlaybackQualitySettingsView.swift */, E1BE1CEB2BDB68BC008176A9 /* SettingsView */, - 4E63B9F52C8A5BEF00C25378 /* UserDashboardView */, E1545BD62BDC559500D9578F /* UserProfileSettingsView */, E1BDF2E7295148F400CC0294 /* VideoPlayerSettingsView */, ); @@ -4595,7 +4599,6 @@ E1E6C44229AECCD50064123F /* ActionButtons.swift in Sources */, E1575E78293E77B5001665B1 /* TrailingTimestampType.swift in Sources */, E11CEB9128999D84003E74C7 /* EpisodeItemView.swift in Sources */, - 4EED87502CBF84AD002354D2 /* DevicesViewModel.swift in Sources */, E14E9DF22BCF7A99004E3371 /* ItemLetter.swift in Sources */, E10B1EC82BD9AF6100A92EAF /* V2ServerModel.swift in Sources */, E1C9260C2887565C002A7A66 /* MovieItemContentView.swift in Sources */, @@ -4625,7 +4628,6 @@ E11C15362BF7C505006BC9B6 /* UserProfileImageCoordinator.swift in Sources */, E172D3AE2BAC9DF8007B4647 /* SeasonItemViewModel.swift in Sources */, 4EC1C8532C7FDFA300E2879E /* PlaybackDeviceProfile.swift in Sources */, - 4EC50D622C934B3A00FC3D0E /* ScheduledTasksViewModel.swift in Sources */, E11E374D293E7EC9009EF240 /* ItemFields.swift in Sources */, E1575E6E293E77B5001665B1 /* SpecialFeatureType.swift in Sources */, E12CC1C528D12D9B00678D5D /* SeeAllPosterButton.swift in Sources */, @@ -4668,7 +4670,6 @@ E1575E5F293E77B5001665B1 /* StreamType.swift in Sources */, E1803EA22BFBD6CF0039F90E /* Hashable.swift in Sources */, E1388A42293F0AAD009721B1 /* PreferenceUIHostingSwizzling.swift in Sources */, - E1ED7FD82CA8AF7400ACB6E3 /* ServerTaskObserver.swift in Sources */, E1575E93293E7B1E001665B1 /* Double.swift in Sources */, E1B5784228F8AFCB00D42911 /* WrappedView.swift in Sources */, E11895AA289383BC0042947B /* ScrollViewOffsetModifier.swift in Sources */, @@ -4783,7 +4784,6 @@ E1575E66293E77B5001665B1 /* Poster.swift in Sources */, E18E021F2887492B0022598C /* SystemImageContentView.swift in Sources */, E19D41B42BF2C0020082B8B2 /* StoredValues+Temp.swift in Sources */, - 4EC2B1A32CC96F6600D866BE /* ServerUsersViewModel.swift in Sources */, 4EF18B282CB9936D00343666 /* ListColumnsPickerView.swift in Sources */, E11BDF7B2B85529D0045C54A /* SupportedCaseIterable.swift in Sources */, 4E204E592C574FD9004D22A2 /* CustomizeSettingsCoordinator.swift in Sources */, @@ -4795,8 +4795,6 @@ E1549678296CB22B00C4EF88 /* InlineEnumToggle.swift in Sources */, E193D5432719407E00900D82 /* tvOSMainCoordinator.swift in Sources */, E1DABAFA2A270E62008AC34A /* OverviewCard.swift in Sources */, - E101ECD62CD40489001EA89E /* DeviceDetailViewModel.swift in Sources */, - 4EA397462CD31CC000904C25 /* AddServerUserViewModel.swift in Sources */, E11CEB8928998549003E74C7 /* BottomEdgeGradientModifier.swift in Sources */, 4E2AC4CC2C6C494E00DD600D /* VideoCodec.swift in Sources */, 4EF18B262CB9934C00343666 /* LibraryRow.swift in Sources */, @@ -4852,7 +4850,6 @@ E11895B42893844A0042947B /* BackgroundParallaxHeaderModifier.swift in Sources */, E185920A28CEF23A00326F80 /* FocusGuide.swift in Sources */, E1153D9C2BBA3E9D00424D36 /* LoadingCard.swift in Sources */, - 4E36395B2CC4DF0E00110EBC /* APIKeysViewModel.swift in Sources */, 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */, E102312F2BCF8A08009D71FC /* tvOSLiveTVCoordinator.swift in Sources */, E1575E68293E77B5001665B1 /* LibraryParent.swift in Sources */, @@ -5076,6 +5073,7 @@ E1EBCB42278BD174009FE6E9 /* TruncatedText.swift in Sources */, 62133890265F83A900A81A2A /* MediaView.swift in Sources */, E13332942953BAA100EE76AB /* DownloadTaskContentView.swift in Sources */, + 4E14DC032CD43DD2001B621B /* AdminDashboardCoordinator.swift in Sources */, E18E01E1288747230022598C /* EpisodeItemContentView.swift in Sources */, E129429B28F4A5E300796AC6 /* PlaybackSettingsView.swift in Sources */, E1E9017B28DAAE4D001B1594 /* RoundedCorner.swift in Sources */, @@ -5330,7 +5328,7 @@ E1401CA22938122C00E8B599 /* AppIcons.swift in Sources */, E1BDF2FB2952502300CC0294 /* SubtitleActionButton.swift in Sources */, E17FB55728C1256400311DFE /* CastAndCrewHStack.swift in Sources */, - 4EC50D612C934B3A00FC3D0E /* ScheduledTasksViewModel.swift in Sources */, + 4EC50D612C934B3A00FC3D0E /* ServerTasksViewModel.swift in Sources */, 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, E150C0BD2BFD45BD00944FFA /* RedrawOnNotificationView.swift in Sources */, E190704D2C858CEB0004600E /* VideoPlayerType+Shared.swift in Sources */, @@ -5432,7 +5430,7 @@ E1D842172932AB8F00D1041A /* NativeVideoPlayer.swift in Sources */, E1A3E4C72BB74E50005C59F8 /* EpisodeCard.swift in Sources */, E1153DB42BBA80FB00424D36 /* EmptyCard.swift in Sources */, - 4E63B9FA2C8A5BEF00C25378 /* UserDashboardView.swift in Sources */, + 4E63B9FA2C8A5BEF00C25378 /* AdminDashboardView.swift in Sources */, 4E35CE662CBED8B600DBD886 /* ServerTicks.swift in Sources */, E1D3043528D1763100587289 /* SeeAllButton.swift in Sources */, 4E73E2A62C41CFD3002D2A78 /* PlaybackBitrateTestSize.swift in Sources */, diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/APIKeyView/APIKeysView.swift b/Swiftfin/Views/AdminDashboardView/APIKeyView/APIKeysView.swift similarity index 98% rename from Swiftfin/Views/SettingsView/UserDashboardView/APIKeyView/APIKeysView.swift rename to Swiftfin/Views/AdminDashboardView/APIKeyView/APIKeysView.swift index b57408226..a84054f4f 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/APIKeyView/APIKeysView.swift +++ b/Swiftfin/Views/AdminDashboardView/APIKeyView/APIKeysView.swift @@ -12,7 +12,7 @@ import SwiftUI struct APIKeysView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @State private var showCopiedAlert = false diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/APIKeyView/Components/APIKeysRow.swift b/Swiftfin/Views/AdminDashboardView/APIKeyView/Components/APIKeysRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/APIKeyView/Components/APIKeysRow.swift rename to Swiftfin/Views/AdminDashboardView/APIKeyView/Components/APIKeysRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift similarity index 95% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift index a9de34ebc..4a24205fe 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift +++ b/Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/ActiveSessionDetailView.swift @@ -14,7 +14,7 @@ import SwiftUIIntrospect struct ActiveSessionDetailView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @ObservedObject var box: BindingBox @@ -27,7 +27,7 @@ struct ActiveSessionDetailView: View { if let userID = session.userID { let user = UserDto(id: userID, name: session.userName) - UserDashboardView.UserSection( + AdminDashboardView.UserSection( user: user, lastActivityDate: session.lastActivityDate ) { @@ -35,7 +35,7 @@ struct ActiveSessionDetailView: View { } } - UserDashboardView.DeviceSection( + AdminDashboardView.DeviceSection( client: session.client, device: session.deviceName, version: session.applicationVersion @@ -66,7 +66,7 @@ struct ActiveSessionDetailView: View { if let userID = session.userID { let user = UserDto(id: userID, name: session.userName) - UserDashboardView.UserSection( + AdminDashboardView.UserSection( user: user, lastActivityDate: session.lastPlaybackCheckIn ) { @@ -74,7 +74,7 @@ struct ActiveSessionDetailView: View { } } - UserDashboardView.DeviceSection( + AdminDashboardView.DeviceSection( client: session.client, device: session.deviceName, version: session.applicationVersion diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/Components/StreamSection.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/Components/StreamSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/Components/StreamSection.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/Components/StreamSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/Components/TranscodeSection.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/Components/TranscodeSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionDetailView/Components/TranscodeSection.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionDetailView/Components/TranscodeSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/ActiveSessionsView.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionsView/ActiveSessionsView.swift similarity index 97% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/ActiveSessionsView.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionsView/ActiveSessionsView.swift index 40b880480..ec55aec78 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/ActiveSessionsView.swift +++ b/Swiftfin/Views/AdminDashboardView/ActiveSessionsView/ActiveSessionsView.swift @@ -16,7 +16,7 @@ import SwiftUI struct ActiveSessionsView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @StateObject private var viewModel = ActiveSessionsViewModel() diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/Components/ActiveSessionProgressSection.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionsView/Components/ActiveSessionProgressSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/Components/ActiveSessionProgressSection.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionsView/Components/ActiveSessionProgressSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/Components/ActiveSessionRow.swift b/Swiftfin/Views/AdminDashboardView/ActiveSessionsView/Components/ActiveSessionRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ActiveSessionsView/Components/ActiveSessionRow.swift rename to Swiftfin/Views/AdminDashboardView/ActiveSessionsView/Components/ActiveSessionRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddServerUserView/AddServerUserView.swift b/Swiftfin/Views/AdminDashboardView/AddServerUserView/AddServerUserView.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddServerUserView/AddServerUserView.swift rename to Swiftfin/Views/AdminDashboardView/AddServerUserView/AddServerUserView.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/AddTaskTriggerView.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/AddTaskTriggerView.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/AddTaskTriggerView.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/AddTaskTriggerView.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/DayOfWeekRow.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/DayOfWeekRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/DayOfWeekRow.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/DayOfWeekRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/IntervalRow.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/IntervalRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/IntervalRow.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/IntervalRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TimeLimitSection.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TimeLimitSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TimeLimitSection.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TimeLimitSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TimeRow.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TimeRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TimeRow.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TimeRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TriggerTypeRow.swift b/Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TriggerTypeRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/AddTaskTriggerView/Components/TriggerTypeRow.swift rename to Swiftfin/Views/AdminDashboardView/AddTaskTriggerView/Components/TriggerTypeRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/UserDashboardView.swift b/Swiftfin/Views/AdminDashboardView/AdminDashboardView.swift similarity index 91% rename from Swiftfin/Views/SettingsView/UserDashboardView/UserDashboardView.swift rename to Swiftfin/Views/AdminDashboardView/AdminDashboardView.swift index 3670631d4..ee37153b3 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/UserDashboardView.swift +++ b/Swiftfin/Views/AdminDashboardView/AdminDashboardView.swift @@ -8,10 +8,10 @@ import SwiftUI -struct UserDashboardView: View { +struct AdminDashboardView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router // MARK: - Body @@ -58,5 +58,6 @@ struct UserDashboardView: View { } } .navigationTitle(L10n.dashboard) + .navigationBarTitleDisplayMode(.inline) } } diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/Components/DeviceSection.swift b/Swiftfin/Views/AdminDashboardView/Components/DeviceSection.swift similarity index 96% rename from Swiftfin/Views/SettingsView/UserDashboardView/Components/DeviceSection.swift rename to Swiftfin/Views/AdminDashboardView/Components/DeviceSection.swift index da52d48af..9b992e997 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/Components/DeviceSection.swift +++ b/Swiftfin/Views/AdminDashboardView/Components/DeviceSection.swift @@ -9,7 +9,7 @@ import JellyfinAPI import SwiftUI -extension UserDashboardView { +extension AdminDashboardView { struct DeviceSection: View { diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/Components/UserSection.swift b/Swiftfin/Views/AdminDashboardView/Components/UserSection.swift similarity index 98% rename from Swiftfin/Views/SettingsView/UserDashboardView/Components/UserSection.swift rename to Swiftfin/Views/AdminDashboardView/Components/UserSection.swift index 2687ba737..4cf92d50f 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/Components/UserSection.swift +++ b/Swiftfin/Views/AdminDashboardView/Components/UserSection.swift @@ -9,7 +9,7 @@ import JellyfinAPI import SwiftUI -extension UserDashboardView { +extension AdminDashboardView { struct UserSection: View { diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/Components/Sections/CompatibilitiesSection.swift b/Swiftfin/Views/AdminDashboardView/DeviceDetailsView/Components/Sections/CompatibilitiesSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/Components/Sections/CompatibilitiesSection.swift rename to Swiftfin/Views/AdminDashboardView/DeviceDetailsView/Components/Sections/CompatibilitiesSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/Components/Sections/CustomDeviceNameSection.swift b/Swiftfin/Views/AdminDashboardView/DeviceDetailsView/Components/Sections/CustomDeviceNameSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/Components/Sections/CustomDeviceNameSection.swift rename to Swiftfin/Views/AdminDashboardView/DeviceDetailsView/Components/Sections/CustomDeviceNameSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/DeviceDetailsView.swift b/Swiftfin/Views/AdminDashboardView/DeviceDetailsView/DeviceDetailsView.swift similarity index 95% rename from Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/DeviceDetailsView.swift rename to Swiftfin/Views/AdminDashboardView/DeviceDetailsView/DeviceDetailsView.swift index 85fbbfc48..2839bfd37 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/DeviceDetailsView/DeviceDetailsView.swift +++ b/Swiftfin/Views/AdminDashboardView/DeviceDetailsView/DeviceDetailsView.swift @@ -15,7 +15,7 @@ import SwiftUI struct DeviceDetailsView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @CurrentDate private var currentDate: Date @@ -57,7 +57,7 @@ struct DeviceDetailsView: View { let user = UserDto(id: userID, name: userName) - UserDashboardView.UserSection( + AdminDashboardView.UserSection( user: user, lastActivityDate: device.dateLastActivity ) { @@ -68,7 +68,7 @@ struct DeviceDetailsView: View { // TODO: Enable with SDK Change // CustomDeviceNameSection(customName: $temporaryCustomName) - UserDashboardView.DeviceSection( + AdminDashboardView.DeviceSection( client: device.appName, device: device.name, version: device.appVersion diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/DevicesView/Components/DeviceRow.swift b/Swiftfin/Views/AdminDashboardView/DevicesView/Components/DeviceRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/DevicesView/Components/DeviceRow.swift rename to Swiftfin/Views/AdminDashboardView/DevicesView/Components/DeviceRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/DevicesView/DevicesView.swift b/Swiftfin/Views/AdminDashboardView/DevicesView/DevicesView.swift similarity index 99% rename from Swiftfin/Views/SettingsView/UserDashboardView/DevicesView/DevicesView.swift rename to Swiftfin/Views/AdminDashboardView/DevicesView/DevicesView.swift index 276ae22c2..2a463e3e3 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/DevicesView/DevicesView.swift +++ b/Swiftfin/Views/AdminDashboardView/DevicesView/DevicesView.swift @@ -16,7 +16,7 @@ import SwiftUI struct DevicesView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @State private var isPresentingDeleteSelectionConfirmation = false diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/DetailsSection.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/DetailsSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/DetailsSection.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/DetailsSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/LastErrorSection.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/LastErrorSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/LastErrorSection.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/LastErrorSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/LastRunSection.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/LastRunSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/LastRunSection.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/LastRunSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/ServerTaskProgressSection.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/ServerTaskProgressSection.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/ServerTaskProgressSection.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/ServerTaskProgressSection.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift similarity index 97% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift index 4d5bfe5fa..ed7eb14b5 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift +++ b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/Sections/TriggersSection.swift @@ -14,7 +14,7 @@ extension EditServerTaskView { struct TriggersSection: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @ObservedObject var observer: ServerTaskObserver diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/TriggerRow.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/TriggerRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/Components/TriggerRow.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/Components/TriggerRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/EditServerTaskView.swift b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/EditServerTaskView.swift similarity index 97% rename from Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/EditServerTaskView.swift rename to Swiftfin/Views/AdminDashboardView/EditServerTaskView/EditServerTaskView.swift index 23f2dc100..9e64012cf 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/EditServerTaskView/EditServerTaskView.swift +++ b/Swiftfin/Views/AdminDashboardView/EditServerTaskView/EditServerTaskView.swift @@ -13,7 +13,7 @@ import SwiftUI struct EditServerTaskView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @ObservedObject var observer: ServerTaskObserver diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerLogsView/ServerLogsView.swift b/Swiftfin/Views/AdminDashboardView/ServerLogsView/ServerLogsView.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerLogsView/ServerLogsView.swift rename to Swiftfin/Views/AdminDashboardView/ServerLogsView/ServerLogsView.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/Components/DestructiveServerTask.swift b/Swiftfin/Views/AdminDashboardView/ServerTasksView/Components/DestructiveServerTask.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/Components/DestructiveServerTask.swift rename to Swiftfin/Views/AdminDashboardView/ServerTasksView/Components/DestructiveServerTask.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/Components/ServerTaskRow.swift b/Swiftfin/Views/AdminDashboardView/ServerTasksView/Components/ServerTaskRow.swift similarity index 98% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/Components/ServerTaskRow.swift rename to Swiftfin/Views/AdminDashboardView/ServerTasksView/Components/ServerTaskRow.swift index fe0add17e..db926e33b 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/Components/ServerTaskRow.swift +++ b/Swiftfin/Views/AdminDashboardView/ServerTasksView/Components/ServerTaskRow.swift @@ -18,7 +18,7 @@ extension ServerTasksView { private var currentDate: Date @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @ObservedObject var observer: ServerTaskObserver diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/ServerTasksView.swift b/Swiftfin/Views/AdminDashboardView/ServerTasksView/ServerTasksView.swift similarity index 97% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/ServerTasksView.swift rename to Swiftfin/Views/AdminDashboardView/ServerTasksView/ServerTasksView.swift index 717cf5111..02e99ab16 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ServerTasksView/ServerTasksView.swift +++ b/Swiftfin/Views/AdminDashboardView/ServerTasksView/ServerTasksView.swift @@ -15,7 +15,7 @@ import SwiftUI struct ServerTasksView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @StateObject private var viewModel = ServerTasksViewModel() diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift b/Swiftfin/Views/AdminDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift similarity index 90% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift rename to Swiftfin/Views/AdminDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift index 96fd47ac1..0d063d99b 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift +++ b/Swiftfin/Views/AdminDashboardView/ServerUserDetailsView/ServerUserDetailsView.swift @@ -13,7 +13,7 @@ import SwiftUI struct ServerUserDetailsView: View { @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @CurrentDate private var currentDate: Date @@ -31,7 +31,7 @@ struct ServerUserDetailsView: View { var body: some View { List { - UserDashboardView.UserSection( + AdminDashboardView.UserSection( user: viewModel.user, lastActivityDate: viewModel.user.lastActivityDate ) diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerUsersView/Components/ServerUsersRow.swift b/Swiftfin/Views/AdminDashboardView/ServerUsersView/Components/ServerUsersRow.swift similarity index 100% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerUsersView/Components/ServerUsersRow.swift rename to Swiftfin/Views/AdminDashboardView/ServerUsersView/Components/ServerUsersRow.swift diff --git a/Swiftfin/Views/SettingsView/UserDashboardView/ServerUsersView/ServerUsersView.swift b/Swiftfin/Views/AdminDashboardView/ServerUsersView/ServerUsersView.swift similarity index 99% rename from Swiftfin/Views/SettingsView/UserDashboardView/ServerUsersView/ServerUsersView.swift rename to Swiftfin/Views/AdminDashboardView/ServerUsersView/ServerUsersView.swift index b85fb5a9b..89a5be924 100644 --- a/Swiftfin/Views/SettingsView/UserDashboardView/ServerUsersView/ServerUsersView.swift +++ b/Swiftfin/Views/AdminDashboardView/ServerUsersView/ServerUsersView.swift @@ -17,7 +17,7 @@ struct ServerUsersView: View { private var accentColor @EnvironmentObject - private var router: SettingsCoordinator.Router + private var router: AdminDashboardCoordinator.Router @State private var isPresentingDeleteSelectionConfirmation = false diff --git a/Swiftfin/Views/SettingsView/SettingsView/SettingsView.swift b/Swiftfin/Views/SettingsView/SettingsView/SettingsView.swift index 22fa795c4..c807c0b40 100644 --- a/Swiftfin/Views/SettingsView/SettingsView/SettingsView.swift +++ b/Swiftfin/Views/SettingsView/SettingsView/SettingsView.swift @@ -46,7 +46,7 @@ struct SettingsView: View { if viewModel.userSession.user.isAdministrator { ChevronButton(L10n.dashboard) .onSelect { - router.route(to: \.userDashboard) + router.route(to: \.adminDashboard) } } }