mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Merge pull request #1404 from LcsTen/dont-show-private-rooms-in-space
Don't show inaccessible private rooms in spaces
This commit is contained in:
commit
9ad3f3f4fb
3 changed files with 17 additions and 4 deletions
|
@ -211,7 +211,7 @@ Item {
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
||||||
MatrixText {
|
MatrixText {
|
||||||
text: preview.roomName == "" ? qsTr("No preview available") : preview.roomName
|
text: !roomPreview.isFetched ? qsTr("No preview available") : preview.roomName
|
||||||
font.pixelSize: 24
|
font.pixelSize: 24
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@ Item {
|
||||||
Layout.rightMargin: Nheko.paddingLarge
|
Layout.rightMargin: Nheko.paddingLarge
|
||||||
|
|
||||||
TextArea {
|
TextArea {
|
||||||
text: TimelineManager.escapeEmoji(preview.roomTopic)
|
text: roomPreview.isFetched ? TimelineManager.escapeEmoji(preview.roomTopic) : qsTr("This room is possibly inaccessible. If this room is private, you should remove it from the child list of this space.")
|
||||||
wrapMode: TextEdit.WordWrap
|
wrapMode: TextEdit.WordWrap
|
||||||
textFormat: TextEdit.RichText
|
textFormat: TextEdit.RichText
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
|
|
@ -222,7 +222,7 @@ RoomlistModel::data(const QModelIndex &index, int role) const
|
||||||
case Roles::RoomName:
|
case Roles::RoomName:
|
||||||
return tr("No preview available");
|
return tr("No preview available");
|
||||||
case Roles::LastMessage:
|
case Roles::LastMessage:
|
||||||
return QString();
|
return tr("This room is possibly inaccessible");
|
||||||
case Roles::Time:
|
case Roles::Time:
|
||||||
return QString();
|
return QString();
|
||||||
case Roles::Timestamp:
|
case Roles::Timestamp:
|
||||||
|
@ -796,11 +796,13 @@ RoomlistModel::setCurrentRoom(const QString &roomid)
|
||||||
p.roomName_ = QString::fromStdString(i->name);
|
p.roomName_ = QString::fromStdString(i->name);
|
||||||
p.roomTopic_ = QString::fromStdString(i->topic);
|
p.roomTopic_ = QString::fromStdString(i->topic);
|
||||||
p.roomAvatarUrl_ = QString::fromStdString(i->avatar_url);
|
p.roomAvatarUrl_ = QString::fromStdString(i->avatar_url);
|
||||||
|
p.isFetched_ = true;
|
||||||
currentRoomPreview_ = std::move(p);
|
currentRoomPreview_ = std::move(p);
|
||||||
nhlog::ui()->debug("Switched to (preview): {}",
|
nhlog::ui()->debug("Switched to (preview): {}",
|
||||||
currentRoomPreview_->roomid_.toStdString());
|
currentRoomPreview_->roomid_.toStdString());
|
||||||
} else {
|
} else {
|
||||||
p.roomid_ = roomid;
|
p.roomid_ = roomid;
|
||||||
|
p.isFetched_ = false;
|
||||||
currentRoomPreview_ = p;
|
currentRoomPreview_ = p;
|
||||||
nhlog::ui()->debug("Switched to (empty): {}",
|
nhlog::ui()->debug("Switched to (empty): {}",
|
||||||
currentRoomPreview_->roomid_.toStdString());
|
currentRoomPreview_->roomid_.toStdString());
|
||||||
|
@ -1100,6 +1102,15 @@ FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) cons
|
||||||
.toBool();
|
.toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If it is a preview but it can't be fetched, it is probably an inaccessible private room.
|
||||||
|
// Hide it if the user isn't an admin.
|
||||||
|
auto index = sourceModel()->index(sourceRow, 0);
|
||||||
|
if (sourceModel()->data(index, RoomlistModel::IsPreview).toBool() &&
|
||||||
|
!sourceModel()->data(index, RoomlistModel::IsPreviewFetched).toBool() &&
|
||||||
|
!Permissions(filterStr).canChange(qml_mtx_events::SpaceChild)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -32,6 +32,7 @@ class RoomPreview
|
||||||
Q_PROPERTY(QString roomAvatarUrl READ roomAvatarUrl CONSTANT)
|
Q_PROPERTY(QString roomAvatarUrl READ roomAvatarUrl CONSTANT)
|
||||||
Q_PROPERTY(QString reason READ reason CONSTANT)
|
Q_PROPERTY(QString reason READ reason CONSTANT)
|
||||||
Q_PROPERTY(bool isInvite READ isInvite CONSTANT)
|
Q_PROPERTY(bool isInvite READ isInvite CONSTANT)
|
||||||
|
Q_PROPERTY(bool isFetched READ isFetched CONSTANT)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RoomPreview() {}
|
RoomPreview() {}
|
||||||
|
@ -42,9 +43,10 @@ public:
|
||||||
QString roomAvatarUrl() const { return roomAvatarUrl_; }
|
QString roomAvatarUrl() const { return roomAvatarUrl_; }
|
||||||
QString reason() const { return reason_; }
|
QString reason() const { return reason_; }
|
||||||
bool isInvite() const { return isInvite_; }
|
bool isInvite() const { return isInvite_; }
|
||||||
|
bool isFetched() const { return isFetched_; }
|
||||||
|
|
||||||
QString roomid_, roomName_, roomAvatarUrl_, roomTopic_, reason_;
|
QString roomid_, roomName_, roomAvatarUrl_, roomTopic_, reason_;
|
||||||
bool isInvite_ = false;
|
bool isInvite_ = false, isFetched_ = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RoomlistModel final : public QAbstractListModel
|
class RoomlistModel final : public QAbstractListModel
|
||||||
|
|
Loading…
Reference in a new issue