NCDatabaseManager.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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 "TalkAccount.h"
  7. #import "ServerCapabilities.h"
  8. #import "FederatedCapabilities.h"
  9. @class NCRoom;
  10. NS_ASSUME_NONNULL_BEGIN
  11. extern NSString *const kTalkDatabaseFolder;
  12. extern NSString *const kTalkDatabaseFileName;
  13. extern uint64_t const kTalkDatabaseSchemaVersion;
  14. extern NSString * const kCapabilitySystemMessages;
  15. extern NSString * const kCapabilityNotificationLevels;
  16. extern NSString * const kCapabilityInviteGroupsAndMails;
  17. extern NSString * const kCapabilityLockedOneToOneRooms;
  18. extern NSString * const kCapabilityWebinaryLobby;
  19. extern NSString * const kCapabilityChatReadMarker;
  20. extern NSString * const kCapabilityStartCallFlag;
  21. extern NSString * const kCapabilityCirclesSupport;
  22. extern NSString * const kCapabilityChatReferenceId;
  23. extern NSString * const kCapabilityPhonebookSearch;
  24. extern NSString * const kCapabilityChatReadStatus;
  25. extern NSString * const kCapabilityReadOnlyRooms;
  26. extern NSString * const kCapabilityListableRooms;
  27. extern NSString * const kCapabilityDeleteMessages;
  28. extern NSString * const kCapabilityCallFlags;
  29. extern NSString * const kCapabilityRoomDescription;
  30. extern NSString * const kCapabilityTempUserAvatarAPI;
  31. extern NSString * const kCapabilityLocationSharing;
  32. extern NSString * const kCapabilityConversationV4;
  33. extern NSString * const kCapabilitySIPSupport;
  34. extern NSString * const kCapabilitySIPSupportNoPIN;
  35. extern NSString * const kCapabilityVoiceMessage;
  36. extern NSString * const kCapabilitySignalingV3;
  37. extern NSString * const kCapabilityClearHistory;
  38. extern NSString * const kCapabilityDirectMentionFlag;
  39. extern NSString * const kCapabilityNotificationCalls;
  40. extern NSString * const kCapabilityConversationPermissions;
  41. extern NSString * const kCapabilityChatUnread;
  42. extern NSString * const kCapabilityReactions;
  43. extern NSString * const kCapabilityRichObjectListMedia;
  44. extern NSString * const kCapabilityRichObjectDelete;
  45. extern NSString * const kCapabilityUnifiedSearch;
  46. extern NSString * const kCapabilityChatPermission;
  47. extern NSString * const kCapabilityMessageExpiration;
  48. extern NSString * const kCapabilitySilentSend;
  49. extern NSString * const kCapabilitySilentCall;
  50. extern NSString * const kCapabilitySendCallNotification;
  51. extern NSString * const kCapabilityTalkPolls;
  52. extern NSString * const kCapabilityRaiseHand;
  53. extern NSString * const kCapabilityRecordingV1;
  54. extern NSString * const kCapabilitySingleConvStatus;
  55. extern NSString * const kCapabilityChatKeepNotifications;
  56. extern NSString * const kCapabilityConversationAvatars;
  57. extern NSString * const kCapabilityTypingIndicators;
  58. extern NSString * const kCapabilityPublishingPermissions;
  59. extern NSString * const kCapabilityRemindMeLater;
  60. extern NSString * const kCapabilityMarkdownMessages;
  61. extern NSString * const kCapabilityNoteToSelf;
  62. extern NSString * const kCapabilityMediaCaption;
  63. extern NSString * const kCapabilityEditMessages;
  64. extern NSString * const kCapabilityDeleteMessagesUnlimited;
  65. extern NSString * const kCapabilityFederationV1;
  66. extern NSString * const kCapabilityFederationV2;
  67. extern NSString * const kCapabilityChatReadLast;
  68. extern NSString * const kCapabilityBanV1;
  69. extern NSString * const kCapabilityMentionPermissions;
  70. extern NSString * const kCapabilityEditMessagesNoteToSelf;
  71. extern NSString * const kNotificationsCapabilityExists;
  72. extern NSString * const kMinimumRequiredTalkCapability;
  73. extern NSString * const NCDatabaseManagerPendingFederationInvitationsDidChange;
  74. extern NSString * const NCDatabaseManagerRoomCapabilitiesChangedNotification;
  75. @interface NCTranslation : NSObject
  76. @property (nonatomic, copy) NSString *from;
  77. @property (nonatomic, copy) NSString *fromLabel;
  78. @property (nonatomic, copy) NSString *to;
  79. @property (nonatomic, copy) NSString *toLabel;
  80. @end
  81. @interface NCDatabaseManager : NSObject
  82. + (instancetype)sharedInstance;
  83. - (NSInteger)numberOfAccounts;
  84. - (TalkAccount *)activeAccount;
  85. - (NSArray *)allAccounts;
  86. - (NSArray *)inactiveAccounts;
  87. - (TalkAccount * _Nullable)talkAccountForAccountId:(NSString *)accountId;
  88. - (TalkAccount *)talkAccountForUserId:(NSString *)userId inServer:(NSString *)server;
  89. - (void)setActiveAccountWithAccountId:(NSString *)accountId;
  90. - (NSString *)accountIdForUser:(NSString *)user inServer:(NSString *)server;
  91. - (void)createAccountForUser:(NSString *)user inServer:(NSString *)server;
  92. - (void)removeAccountWithAccountId:(NSString *)accountId;
  93. - (void)increaseUnreadBadgeNumberForAccountId:(NSString *)accountId;
  94. - (void)decreaseUnreadBadgeNumberForAccountId:(NSString *)accountId;
  95. - (void)resetUnreadBadgeNumberForAccountId:(NSString *)accountId;
  96. - (NSInteger)numberOfUnreadNotifications;
  97. - (NSInteger)numberOfInactiveAccountsWithUnreadNotifications;
  98. - (void)removeUnreadNotificationForInactiveAccounts;
  99. - (void)updateTalkConfigurationHashForAccountId:(NSString *)accountId withHash:(NSString *)hash;
  100. - (void)updateLastModifiedSinceForAccountId:(NSString *)accountId with:(nonnull NSString *)modifiedSince;
  101. // Rooms
  102. - (NCRoom * _Nullable)roomWithToken:(NSString *)token forAccountId:(NSString *)accountId;
  103. // FederatedCapabilities
  104. - (FederatedCapabilities * __nullable)federatedCapabilitiesForAccountId:(NSString *)accountId remoteServer:(NSString *)remoteServer roomToken:(NSString *)roomToken;
  105. - (void)setFederatedCapabilities:(NSDictionary *)federatedCapabilitiesDict forAccountId:(NSString *)accountId remoteServer:(NSString *)remoteServer roomToken:(NSString *)roomToken withProxyHash:(NSString *)proxyHash;
  106. // RoomCapabilities
  107. - (BOOL)roomHasTalkCapability:(NSString *)capability forRoom:(NCRoom *)room;
  108. - (TalkCapabilities * __nullable)roomTalkCapabilitiesForRoom:(NCRoom *)room;
  109. // ServerCapabilities
  110. - (ServerCapabilities *)serverCapabilities;
  111. - (ServerCapabilities * __nullable)serverCapabilitiesForAccountId:(NSString *)accountId;
  112. - (void)setServerCapabilities:(NSDictionary *)serverCapabilities forAccountId:(NSString *)accountId;
  113. - (BOOL)serverHasTalkCapability:(NSString *)capability;
  114. - (BOOL)serverHasTalkCapability:(NSString *)capability forAccountId:(NSString *)accountId;
  115. - (BOOL)serverHasNotificationsCapability:(NSString *)capability forAccountId:(NSString *)accountId;
  116. - (BOOL)serverCanInviteFederatedUsersforAccountId:(NSString *)accountId;
  117. - (void)setExternalSignalingServerVersion:(NSString *)version forAccountId:(NSString *)accountId;
  118. - (BOOL)hasAvailableTranslationsForAccountId:(NSString *)accountId;
  119. - (BOOL)hasTranslationProvidersForAccountId:(NSString *)accountId;
  120. - (NSArray<NCTranslation *> *)availableTranslationsForAccountId:(NSString *)accountId;
  121. - (NSArray *)translationsFromTranslationsArray:(NSArray *)translations;
  122. // Federation invitations
  123. - (void)increasePendingFederationInvitationForAccountId:(NSString *)accountId;
  124. - (void)decreasePendingFederationInvitationForAccountId:(NSString *)accountId;
  125. - (void)setPendingFederationInvitationForAccountId:(NSString *)accountId with:(NSInteger)numberOfPendingInvitations;
  126. - (void)updateLastFederationInvitationUpdateForAccountId:(NSString *)accountId withTimestamp:(NSInteger)timestamp;
  127. @end
  128. NS_ASSUME_NONNULL_END