slomode, boost addition function helpers

This commit is contained in:
Mikhail Filimonov 2024-02-13 11:34:21 -04:00
parent 9116ef874c
commit 3e47ddbbd7
2 changed files with 265 additions and 0 deletions

View File

@ -1057,6 +1057,91 @@ public extension TelegramEngine.EngineData.Item {
} }
} }
public struct SlowmodeTimeout: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
public typealias Result = Int32?
fileprivate var id: EnginePeer.Id
public var mapKey: EnginePeer.Id {
return self.id
}
public init(id: EnginePeer.Id) {
self.id = id
}
var key: PostboxViewKey {
return .cachedPeerData(peerId: self.id)
}
func extract(view: PostboxView) -> Result {
guard let view = view as? CachedPeerDataView else {
preconditionFailure()
}
if let cachedData = view.cachedPeerData as? CachedChannelData {
return cachedData.slowModeTimeout
} else {
return nil
}
}
}
public struct SlowmodeValidUntilTimeout: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
public typealias Result = Int32?
fileprivate var id: EnginePeer.Id
public var mapKey: EnginePeer.Id {
return self.id
}
public init(id: EnginePeer.Id) {
self.id = id
}
var key: PostboxViewKey {
return .cachedPeerData(peerId: self.id)
}
func extract(view: PostboxView) -> Result {
guard let view = view as? CachedPeerDataView else {
preconditionFailure()
}
if let cachedData = view.cachedPeerData as? CachedChannelData {
return cachedData.slowModeValidUntilTimestamp
}
return nil
}
}
public struct CanAvoidGroupRestrictions: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
public typealias Result = Bool
fileprivate var id: EnginePeer.Id
public var mapKey: EnginePeer.Id {
return self.id
}
public init(id: EnginePeer.Id) {
self.id = id
}
var key: PostboxViewKey {
return .cachedPeerData(peerId: self.id)
}
func extract(view: PostboxView) -> Result {
guard let view = view as? CachedPeerDataView else {
preconditionFailure()
}
if let cachedData = view.cachedPeerData as? CachedChannelData {
if let boostsToUnrestrict = cachedData.boostsToUnrestrict {
let appliedBoosts = cachedData.appliedBoosts ?? 0
return boostsToUnrestrict <= appliedBoosts
}
}
return true
}
}
public struct IsPremiumRequiredForMessaging: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, AnyPostboxViewDataItem { public struct IsPremiumRequiredForMessaging: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, AnyPostboxViewDataItem {
public typealias Result = Bool public typealias Result = Bool

View File

@ -391,6 +391,186 @@ public extension TelegramEngine {
} }
} }
public func subscribe<
T0: TelegramEngineDataItem,
T1: TelegramEngineDataItem,
T2: TelegramEngineDataItem,
T3: TelegramEngineDataItem,
T4: TelegramEngineDataItem,
T5: TelegramEngineDataItem,
T6: TelegramEngineDataItem,
T7: TelegramEngineDataItem
>(
_ t0: T0,
_ t1: T1,
_ t2: T2,
_ t3: T3,
_ t4: T4,
_ t5: T5,
_ t6: T6,
_ t7: T7
) -> Signal<
(
T0.Result,
T1.Result,
T2.Result,
T3.Result,
T4.Result,
T5.Result,
T6.Result,
T7.Result
),
NoError> {
return self._subscribe(items: [
t0 as! AnyPostboxViewDataItem,
t1 as! AnyPostboxViewDataItem,
t2 as! AnyPostboxViewDataItem,
t3 as! AnyPostboxViewDataItem,
t4 as! AnyPostboxViewDataItem,
t5 as! AnyPostboxViewDataItem,
t6 as! AnyPostboxViewDataItem,
t7 as! AnyPostboxViewDataItem
])
|> map { results -> (T0.Result, T1.Result, T2.Result, T3.Result, T4.Result, T5.Result, T6.Result, T7.Result) in
return (
results[0] as! T0.Result,
results[1] as! T1.Result,
results[2] as! T2.Result,
results[3] as! T3.Result,
results[4] as! T4.Result,
results[5] as! T5.Result,
results[6] as! T6.Result,
results[7] as! T7.Result
)
}
}
public func subscribe<
T0: TelegramEngineDataItem,
T1: TelegramEngineDataItem,
T2: TelegramEngineDataItem,
T3: TelegramEngineDataItem,
T4: TelegramEngineDataItem,
T5: TelegramEngineDataItem,
T6: TelegramEngineDataItem,
T7: TelegramEngineDataItem,
T8: TelegramEngineDataItem
>(
_ t0: T0,
_ t1: T1,
_ t2: T2,
_ t3: T3,
_ t4: T4,
_ t5: T5,
_ t6: T6,
_ t7: T7,
_ t8: T8
) -> Signal<
(
T0.Result,
T1.Result,
T2.Result,
T3.Result,
T4.Result,
T5.Result,
T6.Result,
T7.Result,
T8.Result
),
NoError> {
return self._subscribe(items: [
t0 as! AnyPostboxViewDataItem,
t1 as! AnyPostboxViewDataItem,
t2 as! AnyPostboxViewDataItem,
t3 as! AnyPostboxViewDataItem,
t4 as! AnyPostboxViewDataItem,
t5 as! AnyPostboxViewDataItem,
t6 as! AnyPostboxViewDataItem,
t7 as! AnyPostboxViewDataItem,
t8 as! AnyPostboxViewDataItem
])
|> map { results -> (T0.Result, T1.Result, T2.Result, T3.Result, T4.Result, T5.Result, T6.Result, T7.Result, T8.Result) in
return (
results[0] as! T0.Result,
results[1] as! T1.Result,
results[2] as! T2.Result,
results[3] as! T3.Result,
results[4] as! T4.Result,
results[5] as! T5.Result,
results[6] as! T6.Result,
results[7] as! T7.Result,
results[8] as! T8.Result
)
}
}
public func subscribe<
T0: TelegramEngineDataItem,
T1: TelegramEngineDataItem,
T2: TelegramEngineDataItem,
T3: TelegramEngineDataItem,
T4: TelegramEngineDataItem,
T5: TelegramEngineDataItem,
T6: TelegramEngineDataItem,
T7: TelegramEngineDataItem,
T8: TelegramEngineDataItem,
T9: TelegramEngineDataItem
>(
_ t0: T0,
_ t1: T1,
_ t2: T2,
_ t3: T3,
_ t4: T4,
_ t5: T5,
_ t6: T6,
_ t7: T7,
_ t8: T8,
_ t9: T9
) -> Signal<
(
T0.Result,
T1.Result,
T2.Result,
T3.Result,
T4.Result,
T5.Result,
T6.Result,
T7.Result,
T8.Result,
T9.Result
),
NoError> {
return self._subscribe(items: [
t0 as! AnyPostboxViewDataItem,
t1 as! AnyPostboxViewDataItem,
t2 as! AnyPostboxViewDataItem,
t3 as! AnyPostboxViewDataItem,
t4 as! AnyPostboxViewDataItem,
t5 as! AnyPostboxViewDataItem,
t6 as! AnyPostboxViewDataItem,
t7 as! AnyPostboxViewDataItem,
t8 as! AnyPostboxViewDataItem,
t9 as! AnyPostboxViewDataItem
])
|> map { results -> (T0.Result, T1.Result, T2.Result, T3.Result, T4.Result, T5.Result, T6.Result, T7.Result, T8.Result, T9.Result) in
return (
results[0] as! T0.Result,
results[1] as! T1.Result,
results[2] as! T2.Result,
results[3] as! T3.Result,
results[4] as! T4.Result,
results[5] as! T5.Result,
results[6] as! T6.Result,
results[7] as! T7.Result,
results[8] as! T8.Result,
results[9] as! T9.Result
)
}
}
public func get< public func get<
T0: TelegramEngineDataItem, T0: TelegramEngineDataItem,
T1: TelegramEngineDataItem T1: TelegramEngineDataItem