Skip to content
Snippets Groups Projects
Select Git revision
  • 6820420325c94554a6f4034d2fe8e1972e57f6c1
  • release default
  • master protected
  • hotfix/gtnNoToken
  • XX-4441
  • Jakub/rootless-CI
  • jonah/refactorProviders
  • Ace/Huawei
  • AceVentura/AccountBackup
  • hotfix/delete-error
  • waitingRoundsRewrite
  • dev
  • quantumSecure
  • hotfix/ratelimit
  • fullRateLimit
  • XX-3564/TlsCipherSuite
  • hotfix/notifications-db
  • hotfix/groupNotification
  • Project/LastMile
  • notls
  • url-repo-rename
  • v2.3.0
  • v2.2.0
  • v2.1.0
  • v2.0.0
  • v1.0.0
26 results

root.go

Blame
  • RequestsReceivedViewModel.swift 8.35 KiB
    import HUD
    import UIKit
    import Models
    import Shared
    import Combine
    import Defaults
    import XXModels
    import Integration
    import DrawerFeature
    import CombineSchedulers
    import DependencyInjection
    
    struct RequestReceived: Hashable, Equatable {
        var request: Request?
        var isHidden: Bool
        var leader: String?
    }
    
    final class RequestsReceivedViewModel {
        @Dependency private var session: SessionType
    
        @KeyObject(.isShowingHiddenRequests, defaultValue: false) var isShowingHiddenRequests: Bool
    
        var hudPublisher: AnyPublisher<HUDStatus, Never> {
            hudSubject.eraseToAnyPublisher()
        }
    
        var verifyingPublisher: AnyPublisher<Void, Never> {
            verifyingSubject.eraseToAnyPublisher()
        }
    
        var itemsPublisher: AnyPublisher<NSDiffableDataSourceSnapshot<Section, RequestReceived>, Never> {
            itemsSubject.eraseToAnyPublisher()
        }
    
        var groupConfirmationPublisher: AnyPublisher<Group, Never> {
            groupConfirmationSubject.eraseToAnyPublisher()
        }
    
        var contactConfirmationPublisher: AnyPublisher<Contact, Never> {
            contactConfirmationSubject.eraseToAnyPublisher()
        }
    
        private var cancellables = Set<AnyCancellable>()
        private let updateSubject = CurrentValueSubject<Void, Never>(())
        private let verifyingSubject = PassthroughSubject<Void, Never>()
        private let hudSubject = CurrentValueSubject<HUDStatus, Never>(.none)
        private let groupConfirmationSubject = PassthroughSubject<Group, Never>()
        private let contactConfirmationSubject = PassthroughSubject<Contact, Never>()
        private let itemsSubject = CurrentValueSubject<NSDiffableDataSourceSnapshot<Section, RequestReceived>, Never>(.init())
    
        var backgroundScheduler: AnySchedulerOf<DispatchQueue> = DispatchQueue.global().eraseToAnyScheduler()
    
        init() {
            let groupsQuery = Group.Query(
                authStatus: [
                    .hidden,
                    .pending
                ])
    
            let contactsQuery = Contact.Query(
                authStatus: [
                    .friend,
                    .hidden,
                    .verified,
                    .verificationFailed,
                    .verificationInProgress
                ])
    
            let groupStream = session.dbManager.fetchGroupsPublisher(groupsQuery).assertNoFailure()