// // 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) 2022 Jellyfin & Jellyfin Contributors // import Defaults import Foundation import UIKit // TODO: Refactor... extension SwiftfinStore { enum Defaults { static let generalSuite: UserDefaults = .init(suiteName: "swiftfinstore-general-defaults")! static let universalSuite: UserDefaults = .init(suiteName: "swiftfinstore-universal-defaults")! } } extension Defaults.Keys { // Universal settings static let defaultHTTPScheme = Key("defaultHTTPScheme", default: .http, suite: SwiftfinStore.Defaults.universalSuite) static let appAppearance = Key("appAppearance", default: .system, suite: SwiftfinStore.Defaults.universalSuite) // General settings static let lastServerUserID = Defaults.Key("lastServerUserID", suite: SwiftfinStore.Defaults.generalSuite) static let inNetworkBandwidth = Key("InNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.generalSuite) static let outOfNetworkBandwidth = Key("OutOfNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.generalSuite) static let isAutoSelectSubtitles = Key("isAutoSelectSubtitles", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let autoSelectSubtitlesLangCode = Key( "AutoSelectSubtitlesLangCode", default: "Auto", suite: SwiftfinStore.Defaults.generalSuite ) static let autoSelectAudioLangCode = Key("AutoSelectAudioLangCode", default: "Auto", suite: SwiftfinStore.Defaults.generalSuite) // Customize settings static let showPosterLabels = Key("showPosterLabels", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let showCastAndCrew = Key("showCastAndCrew", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let showFlattenView = Key("showFlattenView", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let itemViewType = Key("itemViewType", default: .compactLogo, suite: SwiftfinStore.Defaults.generalSuite) // Video player / overlay settings static let overlayType = Key("overlayType", default: .normal, suite: SwiftfinStore.Defaults.generalSuite) static let jumpGesturesEnabled = Key("gesturesEnabled", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let systemControlGesturesEnabled = Key( "systemControlGesturesEnabled", default: true, suite: SwiftfinStore.Defaults.generalSuite ) static let playerGesturesLockGestureEnabled = Key( "playerGesturesLockGestureEnabled", default: true, suite: SwiftfinStore.Defaults.generalSuite ) static let seekSlideGestureEnabled = Key( "seekSlideGestureEnabled", default: true, suite: SwiftfinStore.Defaults.generalSuite ) static let videoPlayerJumpForward = Key( "videoPlayerJumpForward", default: .fifteen, suite: SwiftfinStore.Defaults.generalSuite ) static let videoPlayerJumpBackward = Key( "videoPlayerJumpBackward", default: .fifteen, suite: SwiftfinStore.Defaults.generalSuite ) static let autoplayEnabled = Key("autoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let resumeOffset = Key("resumeOffset", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let subtitleFontName = Key( "subtitleFontName", default: UIFont.systemFont(ofSize: 14).fontName, suite: SwiftfinStore.Defaults.generalSuite ) static let subtitleSize = Key("subtitleSize", default: .regular, suite: SwiftfinStore.Defaults.generalSuite) // Should show video player items static let shouldShowPlayPreviousItem = Key("shouldShowPreviousItem", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let shouldShowPlayNextItem = Key("shouldShowNextItem", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let shouldShowAutoPlay = Key("shouldShowAutoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.generalSuite) // Should show missing seasons and episodes static let shouldShowMissingSeasons = Key("shouldShowMissingSeasons", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let shouldShowMissingEpisodes = Key("shouldShowMissingEpisodes", default: true, suite: SwiftfinStore.Defaults.generalSuite) // Should show video player items in overlay menu static let shouldShowJumpButtonsInOverlayMenu = Key( "shouldShowJumpButtonsInMenu", default: true, suite: SwiftfinStore.Defaults.generalSuite ) static let shouldShowChaptersInfoInBottomOverlay = Key( "shouldShowChaptersInfoInBottomOverlay", default: true, suite: SwiftfinStore.Defaults.generalSuite ) // Experimental settings enum Experimental { static let syncSubtitleStateWithAdjacent = Key( "experimental.syncSubtitleState", default: false, suite: SwiftfinStore.Defaults.generalSuite ) static let forceDirectPlay = Key("forceDirectPlay", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let nativePlayer = Key("nativePlayer", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let liveTVAlphaEnabled = Key("liveTVAlphaEnabled", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let liveTVForceDirectPlay = Key("liveTVForceDirectPlay", default: false, suite: SwiftfinStore.Defaults.generalSuite) static let liveTVNativePlayer = Key("liveTVNativePlayer", default: false, suite: SwiftfinStore.Defaults.generalSuite) } // tvos specific static let downActionShowsMenu = Key("downActionShowsMenu", default: true, suite: SwiftfinStore.Defaults.generalSuite) static let confirmClose = Key("confirmClose", default: false, suite: SwiftfinStore.Defaults.generalSuite) }