import Foundation

final class MutablePeerNotificationSettingsBehaviorTimestampView: MutablePostboxView {
    fileprivate var earliestTimestamp: Int32?
    
    init(postbox: PostboxImpl) {
        self.earliestTimestamp = postbox.peerNotificationSettingsBehaviorTable.getEarliest()?.1
    }
    
    func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
        var updated = false
        if !transaction.currentUpdatedPeerNotificationBehaviorTimestamps.isEmpty {
            let earliestTimestamp = postbox.peerNotificationSettingsBehaviorTable.getEarliest()?.1
            if self.earliestTimestamp != earliestTimestamp {
                self.earliestTimestamp = earliestTimestamp
                updated = true
            }
        }
        
        return updated
    }

    func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
        /*let earliestTimestamp = postbox.peerNotificationSettingsBehaviorTable.getEarliest()?.1
        if self.earliestTimestamp != earliestTimestamp {
            self.earliestTimestamp = earliestTimestamp
            return true
        } else {
            return false
        }*/
        return false
    }
    
    func immutableView() -> PostboxView {
        return PeerNotificationSettingsBehaviorTimestampView(self)
    }
}

public final class PeerNotificationSettingsBehaviorTimestampView: PostboxView {
    public let earliestTimestamp: Int32?
    
    init(_ view: MutablePeerNotificationSettingsBehaviorTimestampView) {
        self.earliestTimestamp = view.earliestTimestamp
    }
}