jellyflood/Swiftfin/Views/SettingsView/CustomizeViewsSettings/Components/Sections/ItemSection.swift
Joe Kribs a3dab2e165
[iOS & tvOS] Cleanup Permission Validation (#1499)
* Move permissions to centralized spot

* Move `identifiableTypes` to `BaseItemKind`. Use `showEditMenu`

* Cleanup showMenu options for iOS and tvOS. Metadata allows Subtitle, Lyrics, and Collection edits as well.

* Comment out Lyrics and Subtitles with a TODO for when they are available.

* Update BaseItemKind.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Review Revisions

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-24 12:06:18 -04:00

66 lines
2.2 KiB
Swift

//
// 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) 2025 Jellyfin & Jellyfin Contributors
//
import Defaults
import Factory
import SwiftUI
extension CustomizeViewsSettings {
struct ItemSection: View {
@Injected(\.currentUserSession)
private var userSession
@EnvironmentObject
private var router: SettingsCoordinator.Router
@StoredValue(.User.itemViewAttributes)
private var itemViewAttributes
@StoredValue(.User.enabledTrailers)
private var enabledTrailers
@StoredValue(.User.enableItemEditing)
private var enableItemEditing
@StoredValue(.User.enableItemDeletion)
private var enableItemDeletion
@StoredValue(.User.enableCollectionManagement)
private var enableCollectionManagement
var body: some View {
Section(L10n.items) {
ChevronButton(L10n.mediaAttributes) {
router.route(to: \.itemViewAttributes, $itemViewAttributes)
}
CaseIterablePicker(
L10n.enabledTrailers,
selection: $enabledTrailers
)
/// Enabled Collection Management for collection managers
if userSession?.user.permissions.items.canManageCollections == true {
Toggle(L10n.editCollections, isOn: $enableCollectionManagement)
}
/// Enabled Media Management when there are media elements that can be managed
if userSession?.user.permissions.items.canEditMetadata == true ||
userSession?.user.permissions.items.canManageLyrics == true ||
userSession?.user.permissions.items.canManageSubtitles == true
{
Toggle(L10n.editMedia, isOn: $enableItemEditing)
}
/// Enabled Media Deletion for valid deletion users
if userSession?.user.permissions.items.canDelete == true {
Toggle(L10n.deleteMedia, isOn: $enableItemDeletion)
}
}
}
}
}