NCRoomsManager.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
  3. * SPDX-License-Identifier: GPL-3.0-or-later
  4. */
  5. #import <Foundation/Foundation.h>
  6. #import "NCAPIController.h"
  7. #import "NCRoom.h"
  8. #import "NCChatController.h"
  9. #import "CallViewController.h"
  10. // Room
  11. extern NSString * const NCRoomsManagerDidJoinRoomNotification;
  12. extern NSString * const NCRoomsManagerDidLeaveRoomNotification;
  13. extern NSString * const NCRoomsManagerDidUpdateRoomsNotification;
  14. extern NSString * const NCRoomsManagerDidUpdateRoomNotification;
  15. // Call
  16. extern NSString * const NCRoomsManagerDidStartCallNotification;
  17. typedef void (^UpdateRoomsCompletionBlock)(NSArray *roomsWithNewMessages, TalkAccount *account, NSError *error);
  18. typedef void (^UpdateRoomsAndChatsCompletionBlock)(NSError *error);
  19. typedef void (^SendOfflineMessagesCompletionBlock)(void);
  20. @class ChatViewController;
  21. @interface NCRoomController : NSObject
  22. @property (nonatomic, strong) NSString *userSessionId;
  23. @property (nonatomic, assign) BOOL inCall;
  24. @property (nonatomic, assign) BOOL inChat;
  25. @end
  26. @interface NCRoomsManager : NSObject
  27. @property (nonatomic, strong) ChatViewController *chatViewController;
  28. @property (nonatomic, strong) CallViewController *callViewController;
  29. // START - Public for swift migration
  30. @property (nonatomic, strong) NSMutableDictionary *activeRooms; //roomToken -> roomController
  31. @property (nonatomic, strong, nullable) NSString *joiningRoomToken;
  32. @property (nonatomic, strong, nullable) NSString *leavingRoomToken;
  33. @property (nonatomic, strong, nullable) NSString *joiningSessionId;
  34. @property (nonatomic, assign) NSInteger joiningAttempts;
  35. @property (nonatomic, strong, nullable) NSURLSessionTask *joinRoomTask;
  36. @property (nonatomic, strong, nullable) NSURLSessionTask *leaveRoomTask;
  37. @property (nonatomic, strong) NSString *upgradeCallToken;
  38. @property (nonatomic, strong) NSString *pendingToStartCallToken;
  39. @property (nonatomic, assign) BOOL pendingToStartCallHasVideo;
  40. @property (nonatomic, strong) NSDictionary *highlightMessageDict;
  41. - (void)checkForPendingToStartCalls;
  42. // END
  43. + (instancetype)sharedInstance;
  44. // Room
  45. - (void)updateRoomsAndChatsUpdatingUserStatus:(BOOL)updateStatus onlyLastModified:(BOOL)onlyLastModified withCompletionBlock:(UpdateRoomsAndChatsCompletionBlock)block;
  46. - (void)updateRoomsUpdatingUserStatus:(BOOL)updateStatus onlyLastModified:(BOOL)onlyLastModified;
  47. - (void)updateRoom:(NSString *)token withCompletionBlock:(GetRoomCompletionBlock)block;
  48. - (void)updatePendingMessage:(NSString *)message forRoom:(NCRoom *)room;
  49. - (void)updateLastReadMessage:(NSInteger)lastReadMessage forRoom:(NCRoom *)room;
  50. - (void)updateLastMessage:(NCChatMessage *)message withNoUnreadMessages:(BOOL)noUnreadMessages forRoom:(NCRoom *)room;
  51. - (void)updateLastCommonReadMessage:(NSInteger)messageId forRoom:(NCRoom *)room;
  52. // Chat
  53. - (void)startChatInRoom:(NCRoom *)room;
  54. - (void)leaveChatInRoom:(NSString *)token;
  55. - (void)startChatWithRoomToken:(NSString *)token;
  56. // Call
  57. - (void)joinCallWithCallToken:(NSString *)token withVideo:(BOOL)video asInitiator:(BOOL)initiator recordingConsent:(BOOL)recordingConsent;
  58. // Switch to
  59. - (void)prepareSwitchToAnotherRoomFromRoom:(NSString *)token withCompletionBlock:(ExitRoomCompletionBlock)block;
  60. @end