// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "SSKEnvironment.h" #import "AppContext.h" NS_ASSUME_NONNULL_BEGIN static SSKEnvironment *sharedSSKEnvironment; @interface SSKEnvironment () @property (nonatomic) id callMessageHandler; @property (nonatomic) id contactsManager; @property (nonatomic) OWSMessageSender *messageSender; @property (nonatomic) id notificationsManager; @property (nonatomic) id profileManager; @end #pragma mark - @implementation SSKEnvironment - (instancetype)initWithCallMessageHandler:(id)callMessageHandler contactsManager:(id)contactsManager messageSender:(OWSMessageSender *)messageSender notificationsManager:(id)notificationsManager profileManager:(id)profileManager { self = [super init]; if (!self) { return self; } OWSAssertDebug(callMessageHandler); OWSAssertDebug(contactsManager); OWSAssertDebug(messageSender); OWSAssertDebug(notificationsManager); OWSAssertDebug(profileManager); _callMessageHandler = callMessageHandler; _contactsManager = contactsManager; _messageSender = messageSender; _notificationsManager = notificationsManager; _profileManager = profileManager; return self; } + (instancetype)shared { OWSAssertDebug(sharedSSKEnvironment); return sharedSSKEnvironment; } + (void)setShared:(SSKEnvironment *)env { OWSAssertDebug(env); OWSAssertDebug(!sharedSSKEnvironment || CurrentAppContext().isRunningTests); sharedSSKEnvironment = env; } @end NS_ASSUME_NONNULL_END