File indexing completed on 2023-11-26 08:17:52
0001 /* 0002 SPDX-FileCopyrightText: 2017-2023 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "accountroomsettings.h" 0010 #include "authenticationinfo.h" 0011 #include "bannerinfo/bannerinfos.h" 0012 #include "channelgroupbasejob.h" 0013 #include "commands/runcommandjob.h" 0014 #include "createchannelteaminfo.h" 0015 #include "custom/customuserstatuscreatejob.h" 0016 #include "custom/customuserstatusupdatejob.h" 0017 #include "customusers/customuserstatuses.h" 0018 #include "ddpapi/ddpauthenticationmanager.h" 0019 #include "inputtextmanager.h" 0020 #include "libruqolacore_export.h" 0021 #include "licenses/licensesmanager.h" 0022 #include "messages/message.h" 0023 #include "model/listmessagesmodel.h" 0024 #include "model/roommodel.h" 0025 #include "notificationinfo.h" 0026 #include "ownuser/ownuser.h" 0027 #include "ownuser/ownuserpreferences.h" 0028 #include "parsemessageurlutils.h" 0029 #include "permissions/permissionmanager.h" 0030 #include "rocketchataccountsettings.h" 0031 #include "roles/rolesmanager.h" 0032 #include "room.h" 0033 #include "rooms/roomscleanhistoryjob.h" 0034 #include "rooms/roomsexportjob.h" 0035 #include "ruqolaserverconfig.h" 0036 #include "serverconfiginfo.h" 0037 #include "users/registeruserjob.h" 0038 #include "users/userssetpreferencesjob.h" 0039 #include "users/usersupdateownbasicinfojob.h" 0040 #include "utils.h" 0041 #include <QObject> 0042 #include <QUrl> 0043 #include <TextEmoticonsCore/CustomEmoji> 0044 #include <ddpapi/ddpclient.h> 0045 class TypingNotification; 0046 class UsersModel; 0047 class RoomModel; 0048 class MessagesModel; 0049 class DDPClient; 0050 class MessageQueue; 0051 class RocketChatBackend; 0052 class RuqolaLogger; 0053 class RuqolaServerConfig; 0054 class UserCompleterModel; 0055 class UserCompleterFilterProxyModel; 0056 class StatusModel; 0057 class RocketChatCache; 0058 class EmojiManager; 0059 class OtrManager; 0060 class FilesForRoomFilterProxyModel; 0061 class FilesForRoomModel; 0062 class SearchChannelModel; 0063 class SearchChannelFilterProxyModel; 0064 class LoginMethodModel; 0065 class InputTextManager; 0066 class PluginAuthenticationInterface; 0067 class Room; 0068 class CommonMessagesModel; 0069 class CommonMessageFilterProxyModel; 0070 class ReceiveTypingNotificationManager; 0071 class EmoticonModel; 0072 class DiscussionsFilterProxyModel; 0073 class DiscussionsModel; 0074 class ThreadMessageModel; 0075 class ListMessagesModel; 0076 class ListMessagesModelFilterProxyModel; 0077 class AutotranslateLanguagesModel; 0078 class CommandsModel; 0079 class DownloadAppsLanguagesManager; 0080 class UsersForRoomModel; 0081 class MessageCache; 0082 class ManageChannels; 0083 class CustomSoundsManager; 0084 class AwayManager; 0085 class SwitchChannelHistoryModel; 0086 class UploadFileManager; 0087 class VideoConferenceManager; 0088 class VideoConferenceMessageInfoManager; 0089 class LocalDatabaseManager; 0090 class ManageLocalDatabase; 0091 0092 namespace RocketChatRestApi 0093 { 0094 class Connection; 0095 } 0096 0097 class LIBRUQOLACORE_EXPORT RocketChatAccount : public QObject 0098 { 0099 Q_OBJECT 0100 public: 0101 explicit RocketChatAccount(const QString &accountName = QString(), QObject *parent = nullptr); 0102 ~RocketChatAccount() override; 0103 0104 enum ChannelTypeInfo { 0105 RoomId, 0106 RoomName, 0107 }; 0108 Q_ENUM(ChannelTypeInfo) 0109 0110 enum RoomInfoType { 0111 Announcement, 0112 Description, 0113 Name, 0114 Topic, 0115 ReadOnly, 0116 Archive, 0117 RoomType, 0118 Encrypted, 0119 Password, 0120 }; 0121 Q_ENUM(RoomInfoType) 0122 0123 enum NotificationOptionsType { 0124 DisableNotifications, 0125 HideUnreadStatus, 0126 DesktopNotifications, 0127 DesktopDurationNotifications, 0128 DesktopSoundNotifications, 0129 EmailNotifications, 0130 MobilePushNotifications, 0131 UnreadAlert, 0132 MuteGroupMentions, 0133 HideMentionStatus, 0134 }; 0135 0136 Q_ENUM(NotificationOptionsType) 0137 0138 enum RoleType { 0139 AddOwner, 0140 AddLeader, 0141 AddModerator, 0142 RemoveOwner, 0143 RemoveLeader, 0144 RemoveModerator, 0145 }; 0146 Q_ENUM(RoleType) 0147 0148 [[nodiscard]] QList<TextEmoticonsCore::CustomEmoji> customEmojies() const; 0149 0150 void reconnectToServer(); 0151 [[nodiscard]] Room::TeamRoomInfo roomFromTeamId(const QString &teamId) const; 0152 0153 [[nodiscard]] QString getUserCurrentMessage(const QString &roomId); 0154 void setUserCurrentMessage(const QString &message, const QString &roomId); 0155 void textEditing(const QString &roomId, bool clearNotification); 0156 void leaveRoom(const QString &identifier, Room::RoomType channelType); 0157 void hideRoom(const QString &roomId, Room::RoomType channelType); 0158 void tryLogin(); 0159 void logOut(); 0160 void clearAllUnreadMessages(); 0161 void markRoomAsRead(const QString &roomId); 0162 void changeFavorite(const QString &roomId, bool checked); 0163 void sendMessage(const QString &roomID, const QString &message); 0164 void updateMessage(const QString &roomID, const QString &messageId, const QString &message); 0165 void replyOnThread(const QString &roomID, const QString &threadMessageId, const QString &message); 0166 void openChannel(const QString &identifier, RocketChatAccount::ChannelTypeInfo typeInfo); 0167 void joinJitsiConfCall(const QString &roomId); 0168 void createNewChannel(const RocketChatRestApi::CreateChannelTeamInfo &info); 0169 void joinRoom(const QString &roomId, const QString &joinCode = QString()); 0170 void openDirectChannel(const QString &username); 0171 void setDefaultStatus(User::PresenceStatus status, const QString &messageStatus); // Move to private no ? 0172 void createJitsiConfCall(const QString &roomId); 0173 void deleteMessage(const QString &messageId, const QString &roomId); 0174 void userAutocomplete(const QString &searchText, const QString &exception); 0175 void eraseRoom(const QString &roomId, Room::RoomType channelType); 0176 void changeNotificationsSettings(const QString &roomId, RocketChatAccount::NotificationOptionsType notificationsType, const QVariant &newValue); 0177 void downloadFile(const QString &downloadFileUrl, const QUrl &localFile); 0178 void starMessage(const QString &messageId, bool starred); 0179 void pinMessage(const QString &messageId, bool pinned); 0180 [[nodiscard]] QString avatarUrl(const Utils::AvatarInfo &info); 0181 [[nodiscard]] QUrl attachmentUrlFromLocalCache(const QString &url); 0182 void loadHistory(const QString &roomID, bool initial = false, qint64 timeStamp = 0); 0183 void channelAndPrivateAutocomplete(const QString &pattern); 0184 0185 void roomFiles(const QString &roomId, Room::RoomType channelType = Room::RoomType::Unknown); 0186 void addUserToRoom(const QString &username, const QString &roomId, Room::RoomType channelType); 0187 void changeDefaultAuthentication(int index); 0188 void messageSearch(const QString &pattern, const QString &rid, bool userRegularExpression = false); 0189 [[nodiscard]] InputTextManager *inputTextManager() const; 0190 0191 [[nodiscard]] InputTextManager *inputThreadMessageTextManager() const; 0192 0193 [[nodiscard]] QVector<Permission> permissions() const; 0194 0195 void blockUser(const QString &userId, bool block); 0196 void deleteFileMessage(const QString &roomId, const QString &fileId, Room::RoomType channelType); 0197 void openDocumentation(); 0198 void clearSearchModel(); 0199 void reactOnMessage(const QString &messageId, const QString &emoji, bool shouldReact); 0200 void ignoreUser(const QString &rid, const QString &userId, bool ignore); 0201 void channelInfo(const QString &roomId); 0202 void groupInfo(const QString &roomId); 0203 void switchEditingMode(bool b); 0204 void setSortUnreadOnTop(bool b); 0205 void setRoomListSortOrder(OwnUserPreferences::RoomListSortOrder roomListSortOrder); 0206 void kickUser(const QString &rid, const QString &userId, Room::RoomType channelType); 0207 void changeRoles(const QString &rid, const QString &userId, Room::RoomType channelType, RocketChatAccount::RoleType roleType); 0208 void rolesInRoom(const QString &roomId, Room::RoomType channelType); 0209 void switchingToRoom(const QString &roomID); 0210 void reportMessage(const QString &messageId, const QString &message); 0211 void getThreadMessages(const QString &threadMessageId, const Message &message); 0212 void createDiscussion(const QString &parentRoomName, 0213 const QString &discussionName, 0214 const QString &replyMessage, 0215 const QString &messageId, 0216 const QStringList &users = QStringList()); 0217 void threadsInRoom(const QString &roomId, bool onlyUnread); 0218 void discussionsInRoom(const QString &roomId); 0219 void followMessage(const QString &messageId, bool follow); 0220 void loadMoreFileAttachments(const QString &roomId, Room::RoomType channelType); 0221 void loadMoreDiscussions(const QString &roomId); 0222 void loadThreadMessagesHistory(const QString &roomId); 0223 void loadMoreUsersInRoom(const QString &roomId, Room::RoomType channelType); 0224 0225 void getPinnedMessages(const QString &roomId); 0226 void getStarredMessages(const QString &roomId); 0227 void getMentionsMessages(const QString &roomId); 0228 0229 void autoTranslateSaveLanguageSettings(const QString &roomId, const QString &language); 0230 void autoTranslateSaveAutoTranslateSettings(const QString &roomId, bool autoTranslate); 0231 0232 [[nodiscard]] MessagesModel *messageModelForRoom(const QString &roomID); 0233 void changeShowOriginalMessage(const QString &roomId, const QString &messageId, bool showOriginal); 0234 0235 void loadMoreListMessages(const QString &roomId); 0236 void getListMessages(const QString &roomId, ListMessagesModel::ListMessageType type); 0237 0238 [[nodiscard]] QUrl urlForLink(const QString &link) const; 0239 void setUserStatusChanged(const QJsonArray &array); 0240 0241 void setShowRoomAvatar(bool checked); 0242 0243 CommonMessageFilterProxyModel *searchMessageFilterProxyModel() const; 0244 FilesForRoomFilterProxyModel *filesForRoomFilterProxyModel() const; 0245 ReceiveTypingNotificationManager *receiveTypingNotificationManager() const; 0246 UserCompleterFilterProxyModel *userCompleterFilterModelProxy() const; 0247 0248 UsersModel *usersModel() const; 0249 MessagesModel *threadMessageModel() const; 0250 EmoticonModel *emoticonModel() const; 0251 CommandsModel *commandsModel() const; 0252 SearchChannelFilterProxyModel *searchChannelFilterProxyModel() const; 0253 AutotranslateLanguagesModel *autoTranslateLanguagesModel() const; 0254 DiscussionsFilterProxyModel *discussionsFilterProxyModel() const; 0255 SearchChannelModel *searchChannelModel() const; 0256 UserCompleterModel *userCompleterModel() const; 0257 RocketChatAccountSettings *settings() const; 0258 0259 LocalDatabaseManager *localDatabaseManager() const; 0260 0261 DDPClient *ddp(); 0262 [[nodiscard]] RoomModel *roomModel() const; 0263 [[nodiscard]] LoginMethodModel *loginMethodModel() const; 0264 [[nodiscard]] bool editingMode() const; 0265 [[nodiscard]] bool sortUnreadOnTop() const; 0266 [[nodiscard]] OwnUserPreferences::RoomListSortOrder roomListSortOrder() const; 0267 0268 [[nodiscard]] DDPAuthenticationManager::LoginStatus loginStatus(); 0269 RocketChatRestApi::Connection *restApi(); 0270 0271 [[nodiscard]] Room *room(const QString &roomId); 0272 0273 // Make it private in future 0274 void slotInformTypingStatus(const QString &room, bool typing); 0275 0276 [[nodiscard]] MessageQueue *messageQueue() const; 0277 0278 [[nodiscard]] RocketChatBackend *rocketChatBackend() const; 0279 0280 [[nodiscard]] RuqolaLogger *ruqolaLogger() const; 0281 0282 void parsePublicSettings(const QJsonObject &obj, bool update); 0283 0284 [[nodiscard]] RuqolaServerConfig *ruqolaServerConfig() const; 0285 0286 void setUserName(const QString &username); 0287 [[nodiscard]] QString userName() const; 0288 0289 void setAccountName(const QString &accountname); 0290 [[nodiscard]] QString accountName() const; 0291 0292 void setUserId(const QString &userID); 0293 [[nodiscard]] QString userId() const; 0294 0295 void setPassword(const QString &password); 0296 [[nodiscard]] QString password() const; 0297 0298 void setTwoFactorAuthenticationCode(const QString &twoFactorAuthenticationCode); 0299 [[nodiscard]] QString twoFactorAuthenticationCode() const; 0300 0301 void setAuthToken(const QString &token); 0302 [[nodiscard]] QString authToken() const; 0303 0304 void setServerUrl(const QString &serverUrl); 0305 0306 void sendNotification(const QJsonArray &contents); 0307 void parseOtr(const QJsonArray &contents); 0308 0309 void setServerVersion(const QString &version); 0310 [[nodiscard]] QString serverVersion() const; 0311 0312 [[nodiscard]] bool needAdaptNewSubscriptionRC60() const; 0313 [[nodiscard]] EmojiManager *emojiManager() const; 0314 [[nodiscard]] QString userStatusIconFileName(const QString &id); 0315 0316 void membersInRoom(const QString &roomId, Room::RoomType channelType); 0317 void parseUsersForRooms(const QJsonObject &obj, const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0318 0319 void insertCompleterUsers(); 0320 0321 PluginAuthenticationInterface *defaultAuthenticationInterface() const; 0322 0323 [[nodiscard]] CommonMessagesModel *searchMessageModel() const; 0324 0325 void updateUser(const QJsonObject &object); 0326 0327 void removeSettings(); 0328 0329 void rolesChanged(const QJsonArray &contents); 0330 0331 [[nodiscard]] FilesForRoomModel *filesModelForRoom() const; 0332 0333 [[nodiscard]] DiscussionsModel *discussionsModel() const; 0334 0335 void updateThreadMessageList(const Message &m); 0336 0337 void initializeAccount(); 0338 [[nodiscard]] bool allowEditingMessages() const; 0339 [[nodiscard]] bool isMessageEditable(const Message &message) const; 0340 0341 [[nodiscard]] bool otrEnabled() const; 0342 0343 [[nodiscard]] ListMessagesModel *listMessageModel() const; 0344 [[nodiscard]] ListMessagesModelFilterProxyModel *listMessagesFilterProxyModel() const; 0345 [[nodiscard]] ServerConfigInfo *serverConfigInfo() const; 0346 [[nodiscard]] QString serverUrl() const; 0347 [[nodiscard]] StatusModel *statusModel() const; 0348 0349 void customUsersStatus(); 0350 0351 [[nodiscard]] bool jitsiEnabled() const; 0352 [[nodiscard]] bool allowMessagePinningEnabled() const; 0353 [[nodiscard]] bool allowMessageStarringEnabled() const; 0354 [[nodiscard]] bool allowMessageDeletingEnabled() const; 0355 0356 [[nodiscard]] bool autoTranslateEnabled() const; 0357 [[nodiscard]] bool threadsEnabled() const; 0358 0359 [[nodiscard]] bool discussionEnabled() const; 0360 [[nodiscard]] QString recordingVideoPath() const; 0361 [[nodiscard]] QString recordingImagePath() const; 0362 0363 [[nodiscard]] User fullUserInfo(const QString &userName) const; 0364 0365 void setAccountEnabled(bool enabled); 0366 [[nodiscard]] bool accountEnabled() const; 0367 0368 void insertAvatarUrl(const QString &userId, const QUrl &url); 0369 0370 [[nodiscard]] AccountRoomSettings *accountRoomSettings() const; 0371 0372 [[nodiscard]] bool isMessageDeletable(const Message &message) const; 0373 void joinDiscussion(const QString &roomId, const QString &joinCode); 0374 void setNameChanged(const QJsonArray &array); 0375 void setOwnStatus(const User &user); 0376 [[nodiscard]] User::PresenceStatus presenceStatus() const; 0377 0378 void getListCommands(); 0379 [[nodiscard]] bool runCommand(const QString &msg, const QString &roomId, const QString &tmid = QString()); 0380 0381 void avatarChanged(const QJsonArray &contents); 0382 void markMessageAsUnReadFrom(const QString &messageId); 0383 void markRoomAsUnRead(const QString &roomId); 0384 void sendUserEmailCode(); 0385 void requestNewPassword(const QString &email); 0386 [[nodiscard]] bool allowDeleteOwnAccount() const; 0387 [[nodiscard]] bool registrationFromEnabled() const; 0388 void registerNewUser(const RocketChatRestApi::RegisterUserJob::RegisterUserInfo &userInfo); 0389 void deleteOwnAccount(const QString &password); 0390 0391 [[nodiscard]] bool allowEmailChange() const; 0392 0393 [[nodiscard]] bool allowPasswordChange() const; 0394 0395 [[nodiscard]] bool allowUsernameChange() const; 0396 0397 void updateOwnBasicInfo(const RocketChatRestApi::UsersUpdateOwnBasicInfoJob::UpdateOwnBasicInfo &info); 0398 [[nodiscard]] RuqolaServerConfig::ServerConfigFeatureTypes serverConfigFeatureTypes() const; 0399 void parseOwnInfoDone(const QJsonObject &replyObject); 0400 [[nodiscard]] OwnUser ownUser() const; 0401 0402 void cleanChannelHistory(const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &info); 0403 0404 [[nodiscard]] bool broadCastEnabled() const; 0405 [[nodiscard]] bool encryptionEnabled() const; 0406 [[nodiscard]] bool uploadFileEnabled() const; 0407 [[nodiscard]] bool isAdministrator() const; 0408 [[nodiscard]] bool allowProfileChange() const; 0409 [[nodiscard]] bool allowAvatarChanged() const; 0410 0411 [[nodiscard]] bool audioRecorderEnabled() const; 0412 [[nodiscard]] bool videoRecorderEnabled() const; 0413 0414 void enable2FaEmailJob(bool enable); 0415 void logoutFromOtherLocation(); 0416 void createDirectMessages(const QStringList &usernames); 0417 void setDisplayName(const QString &displayName); 0418 [[nodiscard]] QString displayName() const; 0419 0420 void deleteCustomUserStatus(const QJsonArray &replyArray); 0421 0422 void updateCustomUserStatus(const QJsonArray &replyArray); 0423 [[nodiscard]] CustomUserStatuses customUserStatuses() const; 0424 0425 void removeCustomUserStatus(const QString &customUserStatusId); 0426 void updateCustomUserStatus(const RocketChatRestApi::CustomUserStatusUpdateJob::StatusUpdateInfo &statusUpdateInfo); 0427 void createCustomUserStatus(const RocketChatRestApi::CustomUserStatusCreateJob::StatusCreateInfo &statusCreateInfo); 0428 void addMessage(const QJsonObject &replyObject, bool useRestApi = false, bool temporaryMessage = false); 0429 [[nodiscard]] QStringList highlightWords() const; 0430 void resetAvatar(); 0431 void setAvatarUrl(const QString &url); 0432 void exportMessages(const RocketChatRestApi::RoomsExportJob::RoomsExportInfo &info); 0433 [[nodiscard]] bool hasPermission(const QString &permissionId) const; 0434 [[nodiscard]] QStringList permissions(const QString &permissionId) const; 0435 void setUserPreferences(const RocketChatRestApi::UsersSetPreferencesJob::UsersSetPreferencesInfo &info); 0436 [[nodiscard]] QStringList ownUserPermission() const; 0437 void downloadAppsLanguages(); 0438 [[nodiscard]] bool hasAutotranslateSupport() const; 0439 [[nodiscard]] OwnUserPreferences ownUserPreferences() const; 0440 [[nodiscard]] bool ldapEnabled() const; 0441 UsersForRoomModel *usersModelForRoom(const QString &roomId) const; 0442 0443 void deleteUser(const QJsonArray &replyArray); 0444 MessageCache *messageCache() const; 0445 0446 [[nodiscard]] bool hideRoles() const; 0447 [[nodiscard]] bool displayAvatars() const; 0448 [[nodiscard]] bool teamEnabled() const; 0449 void openPrivateGroup(const QString &identifier, ChannelTypeInfo typeInfo); 0450 0451 void deleteEmojiCustom(const QJsonArray &replyArray); 0452 void addUpdateEmojiCustomList(const QJsonArray &replyArray); 0453 void setImageUrl(const QUrl &url); 0454 void updateAvatarCache(const Utils::AvatarInfo &info); 0455 [[nodiscard]] bool userIsOffline(const QString &name); 0456 [[nodiscard]] QString userStatusStr(const QString &name); 0457 [[nodiscard]] OtrManager *otrManager() const; 0458 0459 // Custom Sound 0460 void deleteCustomSound(const QJsonArray &replyArray); 0461 void updateCustomSound(const QJsonArray &replyArray); 0462 0463 // stdout info 0464 void addStdoutInfo(const QJsonArray &contents); 0465 0466 // Roles 0467 void updateRoles(const QJsonArray &contents); 0468 0469 // Permissions 0470 void permissionUpdated(const QJsonArray &replyArray); 0471 0472 [[nodiscard]] const QVector<RoleInfo> &roleInfo() const; 0473 0474 [[nodiscard]] CustomSoundsManager *customSoundManager() const; 0475 0476 [[nodiscard]] bool attachmentIsInLocalCache(const QString &url); 0477 void privateSettingsUpdated(const QJsonArray &replyArray); 0478 void updateUserInRoom(const QJsonObject &roomData); 0479 void updateUserData(const QJsonArray &contents); 0480 [[nodiscard]] bool twoFactorAuthenticationEnabled() const; 0481 [[nodiscard]] bool twoFactorAuthenticationByEmailEnabled() const; 0482 [[nodiscard]] bool twoFactorAuthenticationByTOTPEnabled() const; 0483 void generate2FaTotp(const QJsonObject &obj); 0484 void totpVerify(const QJsonObject &obj); 0485 void totpDisabledVerify(const QJsonObject &root); 0486 0487 [[nodiscard]] const QStringList &searchListCompletion() const; 0488 void setSearchListCompletion(const QStringList &newSearchListCompletion); 0489 0490 void setOauthAppAdded(const QJsonObject &obj); 0491 0492 void setOauthAppUpdated(const QJsonObject &obj); 0493 0494 [[nodiscard]] SwitchChannelHistoryModel *switchChannelHistoryModel() const; 0495 0496 [[nodiscard]] bool twoFactorAuthenticationEnforcePasswordFallback() const; 0497 UploadFileManager *uploadFileManager() const; 0498 0499 [[nodiscard]] int messageMaximumAllowedSize() const; 0500 [[nodiscard]] bool messageAllowConvertLongMessagesToAttachment() const; 0501 0502 [[nodiscard]] bool allowPasswordReset() const; 0503 [[nodiscard]] const BannerInfos &bannerInfos() const; 0504 0505 [[nodiscard]] bool useRealName() const; 0506 0507 [[nodiscard]] int messageViewMode() const; 0508 [[nodiscard]] bool hasLicense(const QString &name); 0509 void parseLicenses(const QJsonArray &replyArray); 0510 // Only for test 0511 void setOwnUserPreferences(const OwnUserPreferences &ownUserPreferences); 0512 0513 [[nodiscard]] bool sortFavoriteChannels() const; 0514 void setShowFavoriteRoom(bool checked); 0515 void parseVideoConference(const QJsonArray &contents); 0516 [[nodiscard]] VideoConferenceManager *videoConferenceManager() const; 0517 0518 [[nodiscard]] VideoConferenceMessageInfoManager *videoConferenceMessageInfoManager() const; 0519 0520 [[nodiscard]] QUrl faviconLogoUrlFromLocalCache(const QString &url); 0521 void addMessageToDataBase(const QString &roomName, const Message &message); 0522 void deleteMessageFromDatabase(const QString &roomName, const QString &messageId); 0523 void loadAccountSettings(); 0524 0525 Q_SIGNALS: 0526 void roomRemoved(const QString &roomId); 0527 void disabledTotpValid(bool checked); 0528 void totpInvalid(); 0529 void totpValid(const QStringList &code); 0530 void avatarWasChanged(const Utils::AvatarInfo &info); 0531 void accountInitialized(); 0532 void connectedChanged(); 0533 void accountNameChanged(); 0534 void userNameChanged(); 0535 void userIdChanged(); 0536 void passwordChanged(); 0537 void twoFactorAuthenticationCodeChanged(); 0538 void serverUrlChanged(); 0539 void loginStatusChanged(); 0540 void socketError(QAbstractSocket::SocketError error, const QString &errorString); 0541 void logoutDone(const QString &accountname); 0542 void added(const QJsonObject &item); 0543 void changed(const QJsonObject &item); 0544 void removed(const QJsonObject &item); 0545 void notification(const NotificationInfo &info); 0546 void fileDownloaded(const QString &filePath, const QUrl &cacheImageUrl); 0547 void updateNotification(bool hasAlert, int nbUnread, const QString &accountName); 0548 void missingChannelPassword(const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0549 void editingModeChanged(); 0550 void jobFailed(const QString &message, const QString &accountName); 0551 void switchedRooms(); 0552 void userStatusUpdated(User::PresenceStatus status, const QString &customText, const QString &accountName); 0553 void publicSettingChanged(); 0554 void serverVersionChanged(); 0555 void openLinkRequested(const QString &link); 0556 void selectRoomByRoomIdRequested(const QString &identifier, const QString &messageId = QString()); 0557 void selectRoomByRoomNameRequested(const QString &identifier); 0558 void openTeamNameRequested(const QString &identifier); 0559 void openThreadRequested(const QString &threadMessageId, const QString &threadMessagePreview, bool threadIsFollowing, const Message &message); 0560 void raiseWindow(); 0561 void registerUserSuccess(); 0562 void roomNeedAttention(); 0563 void ownInfoChanged(); 0564 void customUserStatusChanged(); 0565 void ownUserPreferencesChanged(); 0566 void customStatusChanged(); 0567 void permissionChanged(); 0568 void displayReconnectWidget(int seconds); 0569 0570 void customSoundRemoved(const QString &identifier); 0571 void customSoundAdded(); // TODO add argument ? 0572 void customSoundUpdated(); // TODO add argument ? 0573 0574 void insertStdOutInfo(const QString &str); 0575 void rolesUpdated(); 0576 void totpResult(const QString &secret, const QString &url); 0577 0578 void selectChannelAndMessage(const QString &messageId, 0579 const QString &roomId, 0580 ParseMessageUrlUtils::RoomIdType roomType, 0581 ParseMessageUrlUtils::ChannelType channelType); 0582 0583 void oauthAppAdded(const QJsonObject &obj); 0584 void oauthAppUpdated(const QJsonObject &obj); 0585 void needUpdateMessageView(); 0586 void publicSettingLoaded(const QJsonObject &obj); 0587 void bannerInfoChanged(); 0588 void privateSettingsChanged(); 0589 void updateMessageFailed(const QString &str); 0590 0591 private: 0592 Q_DISABLE_COPY(RocketChatAccount) 0593 0594 LIBRUQOLACORE_NO_EXPORT void slotChannelFilesDone(const QJsonObject &obj, const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0595 LIBRUQOLACORE_NO_EXPORT void slotChannelGroupRolesDone(const QJsonObject &obj, const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0596 LIBRUQOLACORE_NO_EXPORT void slotSplotLightDone(const QJsonObject &obj); 0597 LIBRUQOLACORE_NO_EXPORT void slotChannelListDone(const QJsonObject &obj); 0598 LIBRUQOLACORE_NO_EXPORT void slotGetThreadMessagesDone(const QJsonObject &obj, const QString &threadMessageId); 0599 LIBRUQOLACORE_NO_EXPORT void slotGetDiscussionsListDone(const QJsonObject &obj, const QString &roomId); 0600 LIBRUQOLACORE_NO_EXPORT void slotGetSupportedLanguagesDone(const QJsonObject &obj); 0601 LIBRUQOLACORE_NO_EXPORT void slotUsersPresenceDone(const QJsonObject &obj); 0602 LIBRUQOLACORE_NO_EXPORT void slotReconnectToServer(); 0603 0604 LIBRUQOLACORE_NO_EXPORT void loadEmoji(const QJsonObject &obj); 0605 LIBRUQOLACORE_NO_EXPORT void slotSearchMessages(const QJsonObject &obj); 0606 LIBRUQOLACORE_NO_EXPORT void slotNeedToUpdateNotification(); 0607 LIBRUQOLACORE_NO_EXPORT void loadSettings(const QString &accountFileName); 0608 LIBRUQOLACORE_NO_EXPORT void clearModels(); 0609 LIBRUQOLACORE_NO_EXPORT void fillOauthModel(); 0610 LIBRUQOLACORE_NO_EXPORT void initializeAuthenticationPlugins(); 0611 LIBRUQOLACORE_NO_EXPORT void setDefaultAuthentication(AuthenticationManager::OauthType type); 0612 LIBRUQOLACORE_NO_EXPORT void userStatusChanged(const User &user); 0613 LIBRUQOLACORE_NO_EXPORT void openArchivedRoom(const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0614 LIBRUQOLACORE_NO_EXPORT void slotChannelGetCountersDone(const QJsonObject &obj, 0615 const RocketChatRestApi::ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0616 0617 LIBRUQOLACORE_NO_EXPORT void getSupportedLanguages(); 0618 LIBRUQOLACORE_NO_EXPORT void usersPresence(); 0619 LIBRUQOLACORE_NO_EXPORT void listEmojiCustom(); 0620 0621 LIBRUQOLACORE_NO_EXPORT void checkInitializedRoom(const QString &roomId); 0622 LIBRUQOLACORE_NO_EXPORT void clearTypingNotification(); 0623 LIBRUQOLACORE_NO_EXPORT void 0624 inputAutocomplete(const QString &pattern, const QString &exceptions, InputTextManager::CompletionForType type, bool threadDialog); 0625 LIBRUQOLACORE_NO_EXPORT void slotGetListMessagesDone(const QJsonObject &obj, const QString &roomId, ListMessagesModel::ListMessageType type); 0626 LIBRUQOLACORE_NO_EXPORT void slotUserAutoCompleterDone(const QJsonObject &obj); 0627 LIBRUQOLACORE_NO_EXPORT void slotListCommandDone(const QJsonObject &obj); 0628 LIBRUQOLACORE_NO_EXPORT void runCommand(const RocketChatRestApi::RunCommandJob::RunCommandInfo &runCommandInfo); 0629 0630 LIBRUQOLACORE_NO_EXPORT void loginStatusChangedSlot(); 0631 LIBRUQOLACORE_NO_EXPORT void slotFileLanguagedParsed(); 0632 LIBRUQOLACORE_NO_EXPORT void slotRegisterUserDone(); 0633 LIBRUQOLACORE_NO_EXPORT void slotRoomNeedAttention(); 0634 LIBRUQOLACORE_NO_EXPORT void slotMarkAsReadDone(const QString &roomId); 0635 LIBRUQOLACORE_NO_EXPORT void slotCustomUserStatusDone(const QJsonObject &customList); 0636 LIBRUQOLACORE_NO_EXPORT void slotPostMessageDone(const QJsonObject &replyObject); 0637 LIBRUQOLACORE_NO_EXPORT void slotRoomExportDone(); 0638 LIBRUQOLACORE_NO_EXPORT void slotPermissionListAllDone(const QJsonObject &replyObject); 0639 LIBRUQOLACORE_NO_EXPORT void slotUsersSetPreferencesDone(const QJsonObject &replyObject); 0640 LIBRUQOLACORE_NO_EXPORT void slotUpdateCustomUserStatus(); 0641 LIBRUQOLACORE_NO_EXPORT void slotDirectoryDone(const QJsonObject &obj); 0642 LIBRUQOLACORE_NO_EXPORT void updateCustomEmojiList(bool fetchListCustom); 0643 LIBRUQOLACORE_NO_EXPORT void slotLoadRoles(); 0644 LIBRUQOLACORE_NO_EXPORT void slotAwayStatusChanged(bool away); 0645 LIBRUQOLACORE_NO_EXPORT void slotJobFailed(const QString &str); 0646 LIBRUQOLACORE_NO_EXPORT void checkLicenses(); 0647 LIBRUQOLACORE_NO_EXPORT void parsePublicSettings(); 0648 0649 AccountRoomSettings *const mAccountRoomSettings; 0650 0651 PluginAuthenticationInterface *mDefaultAuthenticationInterface = nullptr; 0652 0653 QHash<AuthenticationManager::OauthType, PluginAuthenticationInterface *> mLstPluginAuthenticationInterface; 0654 QVector<AuthenticationInfo> mLstInfos; 0655 RocketChatAccountSettings *mSettings = nullptr; 0656 0657 EmojiManager *mEmojiManager = nullptr; 0658 TypingNotification *mTypingNotification = nullptr; 0659 UsersModel *const mUserModel; 0660 RoomModel *const mRoomModel; 0661 DDPClient *mDdp = nullptr; 0662 RocketChatRestApi::Connection *mRestApi = nullptr; 0663 MessageQueue *mMessageQueue = nullptr; 0664 RocketChatBackend *mRocketChatBackend = nullptr; 0665 RuqolaLogger *mRuqolaLogger = nullptr; 0666 RuqolaServerConfig *const mRuqolaServerConfig; 0667 UserCompleterModel *const mUserCompleterModel; 0668 UserCompleterFilterProxyModel *mUserCompleterFilterModelProxy = nullptr; 0669 StatusModel *const mStatusModel; 0670 RocketChatCache *mCache = nullptr; 0671 OtrManager *const mOtrManager; 0672 SearchChannelModel *const mSearchChannelModel; 0673 SearchChannelFilterProxyModel *mSearchChannelFilterProxyModel = nullptr; 0674 LoginMethodModel *const mLoginMethodModel; 0675 InputTextManager *const mInputTextManager; 0676 0677 InputTextManager *const mInputThreadMessageTextManager; 0678 0679 CommonMessagesModel *mSearchMessageModel = nullptr; 0680 CommonMessageFilterProxyModel *mSearchMessageFilterProxyModel = nullptr; 0681 ReceiveTypingNotificationManager *const mReceiveTypingNotificationManager; 0682 ServerConfigInfo *mServerConfigInfo = nullptr; 0683 FilesForRoomModel *mFilesModelForRoom = nullptr; 0684 FilesForRoomFilterProxyModel *mFilesForRoomFilterProxyModel = nullptr; 0685 DiscussionsFilterProxyModel *mDiscussionsFilterProxyModel = nullptr; 0686 DiscussionsModel *const mDiscussionsModel; 0687 0688 EmoticonModel *mEmoticonModel = nullptr; 0689 CommandsModel *const mCommandsModel; 0690 ThreadMessageModel *mThreadMessageModel = nullptr; 0691 0692 ListMessagesModel *mListMessageModel = nullptr; 0693 ListMessagesModelFilterProxyModel *mListMessagesFilterProxyModel = nullptr; 0694 0695 AutotranslateLanguagesModel *const mAutoTranslateLanguagesModel; 0696 User::PresenceStatus mPresenceStatus = User::PresenceStatus::PresenceOnline; 0697 DownloadAppsLanguagesManager *const mDownloadAppsLanguagesManager; 0698 MessageCache *const mMessageCache; 0699 ManageChannels *const mManageChannels; 0700 CustomSoundsManager *const mCustomSoundManager; 0701 AwayManager *const mAwayManager; 0702 SwitchChannelHistoryModel *const mSwitchChannelHistoryModel; 0703 UploadFileManager *const mUploadFileManager; 0704 OwnUser mOwnUser; 0705 CustomUserStatuses mCustomUserStatuses; 0706 PermissionManager mPermissionManager; 0707 RolesManager mRolesManager; 0708 LicensesManager mLicensesManager; 0709 QStringList mSearchListCompletion; 0710 BannerInfos mBannerInfos; 0711 VideoConferenceManager *const mVideoConferenceManager; 0712 VideoConferenceMessageInfoManager *const mVideoConferenceMessageInfoManager; 0713 std::unique_ptr<LocalDatabaseManager> mLocalDatabaseManager; 0714 ManageLocalDatabase *const mManageLoadHistory; 0715 0716 int mDelayReconnect = 100; 0717 bool mEditingMode = false; 0718 bool mMarkUnreadThreadsAsReadOnNextReply = false; 0719 };