mirror of
https://github.com/danog/Telegram.git
synced 2024-12-02 09:27:55 +01:00
71 lines
3.3 KiB
Objective-C
71 lines
3.3 KiB
Objective-C
#import "TGBridgePeerSettingsHandler.h"
|
|
#import "TGBridgePeerSettingsSubscription.h"
|
|
|
|
#import "TGTelegramNetworking.h"
|
|
|
|
#import "TGPeerNotificationSettingsSignals.h"
|
|
#import "TGBlockedPeersSignals.h"
|
|
|
|
#import "TGBridgePeerNotificationSettings+TGPeerNotificationSettings.h"
|
|
|
|
@implementation TGBridgePeerSettingsHandler
|
|
|
|
+ (SSignal *)handlingSignalForSubscription:(TGBridgeSubscription *)subscription server:(TGBridgeServer *)__unused server
|
|
{
|
|
if ([subscription isKindOfClass:[TGBridgePeerSettingsSubscription class]])
|
|
{
|
|
TGBridgePeerSettingsSubscription *settingsSubscription = (TGBridgePeerSettingsSubscription *)subscription;
|
|
|
|
SSignal *notificationSettingsSignal = [TGPeerNotificationSettingsSignals notificationSettingsWithPeerId:settingsSubscription.peerId];
|
|
SSignal *blockedStatusSignal = [TGBlockedPeersSignals peerBlockedStatusWithPeerId:settingsSubscription.peerId];
|
|
|
|
NSMutableArray *signals = [[NSMutableArray alloc] init];
|
|
[signals addObject:notificationSettingsSignal];
|
|
|
|
if (settingsSubscription.peerId > 0)
|
|
[signals addObject:blockedStatusSignal];
|
|
|
|
return [[SSignal combineSignals:signals] map:^NSDictionary *(NSArray *results)
|
|
{
|
|
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
|
|
TGBridgePeerNotificationSettings *notificationSettings = [TGBridgePeerNotificationSettings peerNotificationSettingsWithTGPeerNotificationSettings:results[0] currentTime:(int32_t)[[TGTelegramNetworking instance] approximateRemoteTime]];
|
|
|
|
if (notificationSettings != nil)
|
|
dictionary[@"notifications"] = notificationSettings;
|
|
|
|
if (results.count > 1)
|
|
dictionary[@"blocked"] = results[1];
|
|
|
|
return dictionary;
|
|
}];
|
|
}
|
|
else if ([subscription isKindOfClass:[TGBridgePeerUpdateNotificationSettingsSubscription class]])
|
|
{
|
|
TGBridgePeerUpdateNotificationSettingsSubscription *settingsSubscription = (TGBridgePeerUpdateNotificationSettingsSubscription *)subscription;
|
|
TGPeerNotificationSettings *settings = [TGBridgePeerNotificationSettings tgPeerNotificationSettingsWithpeerNotificationSettingsWithBridgePeerNotificationSettings:settingsSubscription.settings currentTime:(int32_t)[[TGTelegramNetworking instance] approximateRemoteTime]];
|
|
|
|
return [[TGPeerNotificationSettingsSignals updatePeerNotificationSettingsWithPeerId:settingsSubscription.peerId settings:settings] mapToSignal:^SSignal *(__unused id next)
|
|
{
|
|
return [SSignal single:@true];
|
|
}];
|
|
}
|
|
else if ([subscription isKindOfClass:[TGBridgePeerUpdateBlockStatusSubscription class]])
|
|
{
|
|
TGBridgePeerUpdateBlockStatusSubscription *settingsSubscription = (TGBridgePeerUpdateBlockStatusSubscription *)subscription;
|
|
|
|
return [[TGBlockedPeersSignals updatePeerBlockedStatusWithPeerId:settingsSubscription.peerId blocked:settingsSubscription.blocked] mapToSignal:^SSignal *(__unused id next)
|
|
{
|
|
return [SSignal single:@true];
|
|
}];
|
|
}
|
|
|
|
return [SSignal fail:nil];
|
|
}
|
|
|
|
+ (NSArray *)handledSubscriptions
|
|
{
|
|
return @[ [TGBridgePeerSettingsSubscription class], [TGBridgePeerUpdateNotificationSettingsSubscription class], [TGBridgePeerUpdateBlockStatusSubscription class]];
|
|
}
|
|
|
|
@end
|