// // PreferenceStore.swift // TuskerPreferences // // Created by Shadowfacts on 4/12/24. // import Foundation import UIKit import Pachyderm public final class PreferenceStore: ObservableObject, Codable { // MARK: Appearance @Preference public var theme @Preference public var pureBlackDarkMode @Preference public var accentColor @Preference public var avatarStyle @Preference public var hideCustomEmojiInUsernames @Preference public var showIsStatusReplyIcon @Preference public var alwaysShowStatusVisibilityIcon @Preference public var hideActionsInTimeline @Preference public var showLinkPreviews @Preference public var leadingStatusSwipeActions @Preference public var trailingStatusSwipeActions @Preference public var widescreenNavigationMode @Preference public var underlineTextLinks @Preference public var showAttachmentsInTimeline // MARK: Composing @Preference public var defaultPostVisibility @Preference public var defaultReplyVisibility @Preference public var requireAttachmentDescriptions @Preference public var contentWarningCopyMode @Preference public var mentionReblogger @Preference public var useTwitterKeyboard // MARK: Media @Preference public var attachmentBlurMode @Preference public var blurMediaBehindContentWarning @Preference public var automaticallyPlayGifs @Preference public var showUncroppedMediaInline @Preference public var showAttachmentBadges @Preference public var attachmentAltBadgeInverted // MARK: Behavior @Preference public var openLinksInApps @Preference public var useInAppSafari @Preference public var inAppSafariAutomaticReaderMode @Preference public var expandAllContentWarnings @Preference public var collapseLongPosts @Preference public var oppositeCollapseKeywords @Preference public var confirmBeforeReblog @Preference public var timelineStateRestoration @Preference public var timelineSyncMode @Preference public var hideReblogsInTimelines @Preference public var hideRepliesInTimelines // MARK: Digital Wellness @Preference public var showFavoriteAndReblogCounts @Preference public var defaultNotificationsMode @Preference public var grayscaleImages @Preference public var disableInfiniteScrolling @Preference public var hideTrends // MARK: Advanced @Preference public var statusContentType @Preference public var reportErrorsAutomatically @Preference public var enabledFeatureFlags // MARK: Internal @Preference public var hasShownLocalTimelineDescription @Preference public var hasShownFederatedTimelineDescription } extension PreferenceStore { public func hasFeatureFlag(_ flag: FeatureFlag) -> Bool { enabledFeatureFlags.contains(flag) } }