Multiple changes

More consistent language with similar description strings
Add manpage entry
Add /unignore
Add ignore & decline button in the invite page
Add invite rejection to all ignore methods
This commit is contained in:
NepNep21 2023-12-17 20:17:43 -03:00
parent 4695bbb340
commit bfdf87a92d
No known key found for this signature in database
GPG key ID: 60372BB5B7534B09
8 changed files with 60 additions and 11 deletions

View file

@ -229,6 +229,14 @@ Inserts `┯━┯╭( º _ º╭)`
*/sovietflip*::
Inserts `ノ┬─┬ノ ︵ ( \\o°o)\\`
=== User management
*/ignore* _<username>_::
Ignore a user, invites from them are also rejected.
*/unignore* _<username>_::
Stops ignoring a user.
=== Advanced
*/clear-timeline*::

View file

@ -277,6 +277,16 @@ Item {
onClicked: Rooms.declineInvite(roomPreview.roomid)
}
FlatButton {
Layout.alignment: Qt.AlignHCenter
text: qsTr("decline invite and ignore user")
visible: roomPreview && roomPreview.isInvite
onClicked: {
var inviter = TimelineManager.getGlobalUserProfile(roomPreview.inviterUserId)
inviter.ignored = true
}
}
FlatButton {
Layout.alignment: Qt.AlignHCenter
text: qsTr("leave")

View file

@ -99,6 +99,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
return QStringLiteral("/converttoroom");
case Ignore:
return QStringLiteral("/ignore");
case Unignore:
return QStringLiteral("/unignore");
default:
return {};
}
@ -174,6 +176,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
return QStringLiteral("/converttoroom");
case Ignore:
return QStringLiteral("/ignore <@userid>");
case Unignore:
return QStringLiteral("/unignore <@userid>");
default:
return {};
}
@ -248,7 +252,9 @@ CommandCompleter::data(const QModelIndex &index, int role) const
case ConvertToRoom:
return tr("Convert this direct chat into a room.");
case Ignore:
return tr("Ignores a user.");
return tr("Ignore a user.");
case Unignore:
return tr("Stop ignoring a user.");
default:
return {};
}

View file

@ -52,6 +52,7 @@ public:
ConvertToDm,
ConvertToRoom,
Ignore,
Unignore,
COUNT,
};

View file

@ -241,7 +241,8 @@ InputBar::updateTextContentProperties(const QString &t)
QStringLiteral("goto"),
QStringLiteral("converttodm"),
QStringLiteral("converttoroom"),
QStringLiteral("ignore")};
QStringLiteral("ignore"),
QStringLiteral("unignore")};
bool hasInvalidCommand = !commandName.isNull() && !validCommands.contains(commandName);
bool hasIncompleteCommand = hasInvalidCommand && '/' + commandName == t;
@ -940,15 +941,9 @@ InputBar::command(const QString &command, QString args)
} else if (command == QLatin1String("converttoroom")) {
utils::removeDirectFromRoom(this->room->roomId());
} else if (command == QLatin1String("ignore")) {
QSharedPointer<UserProfile> user(
new UserProfile(QString(), args, TimelineViewManager::instance()));
connect(user.get(), &UserProfile::failedToFetchProfile, [args] {
MainWindow::instance()->showNotification(tr("Failed to fetch user %1").arg(args));
});
connect(user.get(), &UserProfile::globalUsernameRetrieved, [user](const QString &user_id) {
Q_UNUSED(user_id)
user->setIgnored(true);
});
this->setArgIgnored(args, true);
} else if (command == QLatin1String("unignore")) {
this->setArgIgnored(args, false);
} else {
return false;
}
@ -956,6 +951,23 @@ InputBar::command(const QString &command, QString args)
return true;
}
void
InputBar::setArgIgnored(const QString &user, const bool ignored)
{
QSharedPointer<UserProfile> profile(
new UserProfile(QString(), user, TimelineViewManager::instance()));
connect(profile.get(), &UserProfile::failedToFetchProfile, [user] {
MainWindow::instance()->showNotification(tr("Failed to fetch user %1").arg(user));
});
connect(profile.get(),
&UserProfile::globalUsernameRetrieved,
[profile, ignored](const QString &user_id) {
Q_UNUSED(user_id)
profile->setIgnored(ignored);
});
}
MediaUpload::MediaUpload(std::unique_ptr<QIODevice> source_,
const QString &mimetype,
const QString &originalFilename,

View file

@ -283,6 +283,8 @@ private:
void updateTextContentProperties(const QString &t);
void setArgIgnored(const QString &user, const bool ignored);
QTimer typingRefresh_;
QTimer typingTimeout_;
TimelineModel *room;

View file

@ -197,6 +197,8 @@ public:
return instance_;
}
static FilteredRoomlistModel *instance() { return instance_; }
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
bool filterAcceptsRow(int sourceRow, const QModelIndex &) const override;

View file

@ -278,6 +278,14 @@ UserProfile::setIgnored(bool ignore)
.arg(userid, QString::fromStdString(e->matrix_error.error)));
}
});
if (ignore) {
const QHash<QString, RoomInfo> invites = cache::invites();
for (auto room = invites.keyBegin(), end = invites.keyEnd(); room != end; room++) {
FilteredRoomlistModel::instance()->declineInvite(*room);
}
}
}
void