mirror of https://github.com/oxen-io/session-ios
				
				
				
			Make polling for moderation permission part of LokiGroupChatPoller
							parent
							
								
									af3e74b73b
								
							
						
					
					
						commit
						a1c0db61ec
					
				@ -1,40 +0,0 @@
 | 
			
		||||
 | 
			
		||||
@objc(LKGroupChatModPoller)
 | 
			
		||||
public final class LokiGroupChatModPoller : NSObject {
 | 
			
		||||
    private let group: LokiGroupChat
 | 
			
		||||
    private var timer: Timer? = nil
 | 
			
		||||
    private var hasStarted = false
 | 
			
		||||
    
 | 
			
		||||
    private let interval: TimeInterval = 10 * 60
 | 
			
		||||
    
 | 
			
		||||
    private let storage = OWSPrimaryStorage.shared()
 | 
			
		||||
    private let ourHexEncodedPubKey = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey
 | 
			
		||||
    
 | 
			
		||||
    @objc(initForGroup:)
 | 
			
		||||
    public init(for group: LokiGroupChat) {
 | 
			
		||||
        self.group = group
 | 
			
		||||
        super.init()
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @objc public func startIfNeeded() {
 | 
			
		||||
        if hasStarted { return }
 | 
			
		||||
        timer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in self?.pollForModeratorStatus() }
 | 
			
		||||
        pollForModeratorStatus() // Perform initial update
 | 
			
		||||
        hasStarted = true
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    @objc public func stop() {
 | 
			
		||||
        timer?.invalidate()
 | 
			
		||||
        hasStarted = false
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    private func pollForModeratorStatus() {
 | 
			
		||||
        let group = self.group
 | 
			
		||||
        let _ = LokiGroupChatAPI.isCurrentUserMod(on: group.server).done { [weak self] isModerator in
 | 
			
		||||
            guard let self = self else { return }
 | 
			
		||||
            self.storage.dbReadWriteConnection.readWrite { transaction in
 | 
			
		||||
                self.storage.setIsModerator(isModerator, for: group.server, transaction: transaction)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue