You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/Session/Settings/NotificationContentViewMode...

63 lines
2.3 KiB
Swift

// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import GRDB
import DifferenceKit
import SessionUIKit
import SessionMessagingKit
import SessionUtilitiesKit
class NotificationContentViewModel: SessionTableViewModel, NavigatableStateHolder, ObservableTableSource {
typealias TableItem = Preferences.NotificationPreviewType
public let dependencies: Dependencies
public let navigatableState: NavigatableState = NavigatableState()
public let state: TableDataState<Section, TableItem> = TableDataState()
public let observableState: ObservableTableSourceState<Section, TableItem> = ObservableTableSourceState()
// MARK: - Initialization
init(using dependencies: Dependencies = Dependencies()) {
self.dependencies = dependencies
}
// MARK: - Section
public enum Section: SessionTableSection {
case content
}
// MARK: - Content
let title: String = "NOTIFICATIONS_STYLE_CONTENT_TITLE".localized()
lazy var observation: TargetObservation = ObservationBuilder
.databaseObservation(self) { db -> Preferences.NotificationPreviewType in
db[.preferencesNotificationPreviewType].defaulting(to: .defaultPreviewType)
}
.map { [weak self, dependencies] currentSelection -> [SectionModel] in
return [
SectionModel(
model: .content,
elements: Preferences.NotificationPreviewType.allCases
.map { previewType in
SessionCell.Info(
id: previewType,
title: previewType.name,
trailingAccessory: .radio(
isSelected: (currentSelection == previewType)
),
onTap: {
Merge remote-tracking branch 'RyanFork/disappearing-message-redesign' into feature/groups-rebuild # Conflicts: # Session.xcodeproj/project.pbxproj # Session/Conversations/ConversationViewModel.swift # Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift # Session/Conversations/Settings/ThreadSettingsViewModel.swift # Session/Home/Message Requests/MessageRequestsViewController.swift # Session/Home/Message Requests/MessageRequestsViewModel.swift # Session/Meta/Translations/fil.lproj/Localizable.strings # Session/Meta/Translations/hi.lproj/Localizable.strings # Session/Meta/Translations/hr.lproj/Localizable.strings # Session/Meta/Translations/nl.lproj/Localizable.strings # Session/Meta/Translations/sl.lproj/Localizable.strings # Session/Meta/Translations/sv-SE.lproj/Localizable.strings # Session/Meta/Translations/th.lproj/Localizable.strings # Session/Meta/Translations/vi.lproj/Localizable.strings # Session/Meta/Translations/zh-TW.lproj/Localizable.strings # Session/Settings/ConversationSettingsViewModel.swift # Session/Settings/HelpViewModel.swift # Session/Settings/NotificationContentViewModel.swift # Session/Settings/NotificationSettingsViewModel.swift # Session/Settings/NotificationSoundViewModel.swift # Session/Settings/PrivacySettingsViewModel.swift # Session/Settings/SettingsViewModel.swift # Session/Shared/SessionTableViewController.swift # SessionSnodeKit/Database/Models/SnodeReceivedMessageInfo.swift # SessionTests/Settings/NotificationContentViewModelSpec.swift # SessionUIKit/Components/TopBannerController.swift # SessionUtilitiesKit/Configuration.swift
2 years ago
dependencies[singleton: .storage].writeAsync(using: dependencies) { db in
db[.preferencesNotificationPreviewType] = previewType
}
self?.dismissScreen()
}
)
}
)
]
}
}