Fix crash when you have no rooms and open the profile as well as not rendering rooms without groups

This commit is contained in:
Nicolas Werner 2021-04-30 15:33:17 +02:00
parent 7431b51d27
commit 986b561c34
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
4 changed files with 9 additions and 6 deletions

View file

@ -31,6 +31,7 @@
#include "Utils.h" #include "Utils.h"
#include "ui/OverlayModal.h" #include "ui/OverlayModal.h"
#include "ui/Theme.h" #include "ui/Theme.h"
#include "ui/UserProfile.h"
#include "notifications/Manager.h" #include "notifications/Manager.h"
@ -100,7 +101,8 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
user_info_widget_ = new UserInfoWidget(sideBar_); user_info_widget_ = new UserInfoWidget(sideBar_);
connect(user_info_widget_, &UserInfoWidget::openGlobalUserProfile, this, [this]() { connect(user_info_widget_, &UserInfoWidget::openGlobalUserProfile, this, [this]() {
view_manager_->activeTimeline()->openUserProfile(utils::localUser(), true); UserProfile *userProfile = new UserProfile("", utils::localUser(), view_manager_);
emit view_manager_->openProfile(userProfile);
}); });
user_mentions_popup_ = new popups::UserMentions(); user_mentions_popup_ = new popups::UserMentions();
@ -1187,6 +1189,7 @@ ChatPage::getProfileInfo()
nhlog::net()->critical("failed to retrieve joined groups: {} {}", nhlog::net()->critical("failed to retrieve joined groups: {} {}",
static_cast<int>(err->status_code), static_cast<int>(err->status_code),
err->matrix_error.error); err->matrix_error.error);
emit updateGroupsInfo({});
return; return;
} }

View file

@ -854,12 +854,12 @@ TimelineModel::viewDecryptedRawMessage(QString id) const
} }
void void
TimelineModel::openUserProfile(QString userid, bool global) TimelineModel::openUserProfile(QString userid)
{ {
UserProfile *userProfile = new UserProfile(global ? "" : room_id_, userid, manager_, this); UserProfile *userProfile = new UserProfile(room_id_, userid, manager_, this);
connect( connect(
this, &TimelineModel::roomAvatarUrlChanged, userProfile, &UserProfile::updateAvatarUrl); this, &TimelineModel::roomAvatarUrlChanged, userProfile, &UserProfile::updateAvatarUrl);
emit openProfile(userProfile); emit manager_->openProfile(userProfile);
} }
void void

View file

@ -223,7 +223,7 @@ public:
Q_INVOKABLE void viewRawMessage(QString id) const; Q_INVOKABLE void viewRawMessage(QString id) const;
Q_INVOKABLE void forwardMessage(QString eventId, QString roomId); Q_INVOKABLE void forwardMessage(QString eventId, QString roomId);
Q_INVOKABLE void viewDecryptedRawMessage(QString id) const; Q_INVOKABLE void viewDecryptedRawMessage(QString id) const;
Q_INVOKABLE void openUserProfile(QString userid, bool global = false); Q_INVOKABLE void openUserProfile(QString userid);
Q_INVOKABLE void openRoomSettings(); Q_INVOKABLE void openRoomSettings();
Q_INVOKABLE void editAction(QString id); Q_INVOKABLE void editAction(QString id);
Q_INVOKABLE void replyAction(QString id); Q_INVOKABLE void replyAction(QString id);
@ -322,7 +322,6 @@ signals:
void newCallEvent(const mtx::events::collections::TimelineEvents &event); void newCallEvent(const mtx::events::collections::TimelineEvents &event);
void scrollToIndex(int index); void scrollToIndex(int index);
void openProfile(UserProfile *profile);
void openRoomSettingsDialog(RoomSettings *settings); void openRoomSettingsDialog(RoomSettings *settings);
void newMessageToSend(mtx::events::collections::TimelineEvents event); void newMessageToSend(mtx::events::collections::TimelineEvents event);

View file

@ -93,6 +93,7 @@ signals:
void focusChanged(); void focusChanged();
void focusInput(); void focusInput();
void openImageOverlayInternalCb(QString eventId, QImage img); void openImageOverlayInternalCb(QString eventId, QImage img);
void openProfile(UserProfile *profile);
public slots: public slots:
void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids); void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids);