Add /ignore

pull/1635/head
NepNep21 12 months ago
parent 791cb660b5
commit 4695bbb340
No known key found for this signature in database
GPG Key ID: 818E86B41BD5C364
  1. 6
      src/CommandCompleter.cpp
  2. 1
      src/CommandCompleter.h
  3. 14
      src/timeline/InputBar.cpp
  4. 6
      src/ui/UserProfile.cpp
  5. 2
      src/ui/UserProfile.h

@ -97,6 +97,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
return QStringLiteral("/converttodm");
case ConvertToRoom:
return QStringLiteral("/converttoroom");
case Ignore:
return QStringLiteral("/ignore");
default:
return {};
}
@ -170,6 +172,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
return QStringLiteral("/converttodm");
case ConvertToRoom:
return QStringLiteral("/converttoroom");
case Ignore:
return QStringLiteral("/ignore <@userid>");
default:
return {};
}
@ -243,6 +247,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
return tr("Convert this room to a direct chat.");
case ConvertToRoom:
return tr("Convert this direct chat into a room.");
case Ignore:
return tr("Ignores a user.");
default:
return {};
}

@ -51,6 +51,7 @@ public:
Goto,
ConvertToDm,
ConvertToRoom,
Ignore,
COUNT,
};

@ -30,6 +30,7 @@
#include "ChatPage.h"
#include "EventAccessors.h"
#include "Logging.h"
#include "MainWindow.h"
#include "MatrixClient.h"
#include "TimelineModel.h"
#include "TimelineViewManager.h"
@ -239,7 +240,8 @@ InputBar::updateTextContentProperties(const QString &t)
QStringLiteral("msgtype"),
QStringLiteral("goto"),
QStringLiteral("converttodm"),
QStringLiteral("converttoroom")};
QStringLiteral("converttoroom"),
QStringLiteral("ignore")};
bool hasInvalidCommand = !commandName.isNull() && !validCommands.contains(commandName);
bool hasIncompleteCommand = hasInvalidCommand && '/' + commandName == t;
@ -937,6 +939,16 @@ InputBar::command(const QString &command, QString args)
cache::getMembers(this->room->roomId().toStdString(), 0, -1));
} 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);
});
} else {
return false;
}

@ -592,12 +592,18 @@ UserProfile::getGlobalProfileData()
emit avatarUrlChanged();
});
connect(profProx.get(),
&UserProfileFetchProxy::failedToFetchProfile,
this,
&UserProfile::failedToFetchProfile);
http::client()->get_profile(userid_.toStdString(),
[prox = std::move(profProx), user = userid_.toStdString()](
const mtx::responses::Profile &res, mtx::http::RequestErr err) {
if (err) {
nhlog::net()->warn("failed to retrieve profile info for {}",
user);
emit prox->failedToFetchProfile();
return;
}

@ -45,6 +45,7 @@ public:
signals:
void profileFetched(mtx::responses::Profile);
void failedToFetchProfile();
};
class DeviceInfo
@ -205,6 +206,7 @@ signals:
void globalUsernameRetrieved(const QString &globalUser);
void devicesChanged();
void ignoredChanged();
void failedToFetchProfile();
// internal
void verificationStatiChanged();

Loading…
Cancel
Save