mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 03:00:46 +03:00
Add /ignore
This commit is contained in:
parent
791cb660b5
commit
4695bbb340
5 changed files with 28 additions and 1 deletions
|
@ -97,6 +97,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
|
||||||
return QStringLiteral("/converttodm");
|
return QStringLiteral("/converttodm");
|
||||||
case ConvertToRoom:
|
case ConvertToRoom:
|
||||||
return QStringLiteral("/converttoroom");
|
return QStringLiteral("/converttoroom");
|
||||||
|
case Ignore:
|
||||||
|
return QStringLiteral("/ignore");
|
||||||
default:
|
default:
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -170,6 +172,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
|
||||||
return QStringLiteral("/converttodm");
|
return QStringLiteral("/converttodm");
|
||||||
case ConvertToRoom:
|
case ConvertToRoom:
|
||||||
return QStringLiteral("/converttoroom");
|
return QStringLiteral("/converttoroom");
|
||||||
|
case Ignore:
|
||||||
|
return QStringLiteral("/ignore <@userid>");
|
||||||
default:
|
default:
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -243,6 +247,8 @@ CommandCompleter::data(const QModelIndex &index, int role) const
|
||||||
return tr("Convert this room to a direct chat.");
|
return tr("Convert this room to a direct chat.");
|
||||||
case ConvertToRoom:
|
case ConvertToRoom:
|
||||||
return tr("Convert this direct chat into a room.");
|
return tr("Convert this direct chat into a room.");
|
||||||
|
case Ignore:
|
||||||
|
return tr("Ignores a user.");
|
||||||
default:
|
default:
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ public:
|
||||||
Goto,
|
Goto,
|
||||||
ConvertToDm,
|
ConvertToDm,
|
||||||
ConvertToRoom,
|
ConvertToRoom,
|
||||||
|
Ignore,
|
||||||
COUNT,
|
COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "ChatPage.h"
|
#include "ChatPage.h"
|
||||||
#include "EventAccessors.h"
|
#include "EventAccessors.h"
|
||||||
#include "Logging.h"
|
#include "Logging.h"
|
||||||
|
#include "MainWindow.h"
|
||||||
#include "MatrixClient.h"
|
#include "MatrixClient.h"
|
||||||
#include "TimelineModel.h"
|
#include "TimelineModel.h"
|
||||||
#include "TimelineViewManager.h"
|
#include "TimelineViewManager.h"
|
||||||
|
@ -239,7 +240,8 @@ InputBar::updateTextContentProperties(const QString &t)
|
||||||
QStringLiteral("msgtype"),
|
QStringLiteral("msgtype"),
|
||||||
QStringLiteral("goto"),
|
QStringLiteral("goto"),
|
||||||
QStringLiteral("converttodm"),
|
QStringLiteral("converttodm"),
|
||||||
QStringLiteral("converttoroom")};
|
QStringLiteral("converttoroom"),
|
||||||
|
QStringLiteral("ignore")};
|
||||||
bool hasInvalidCommand = !commandName.isNull() && !validCommands.contains(commandName);
|
bool hasInvalidCommand = !commandName.isNull() && !validCommands.contains(commandName);
|
||||||
bool hasIncompleteCommand = hasInvalidCommand && '/' + commandName == t;
|
bool hasIncompleteCommand = hasInvalidCommand && '/' + commandName == t;
|
||||||
|
|
||||||
|
@ -937,6 +939,16 @@ InputBar::command(const QString &command, QString args)
|
||||||
cache::getMembers(this->room->roomId().toStdString(), 0, -1));
|
cache::getMembers(this->room->roomId().toStdString(), 0, -1));
|
||||||
} else if (command == QLatin1String("converttoroom")) {
|
} else if (command == QLatin1String("converttoroom")) {
|
||||||
utils::removeDirectFromRoom(this->room->roomId());
|
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 {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -592,12 +592,18 @@ UserProfile::getGlobalProfileData()
|
||||||
emit avatarUrlChanged();
|
emit avatarUrlChanged();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(profProx.get(),
|
||||||
|
&UserProfileFetchProxy::failedToFetchProfile,
|
||||||
|
this,
|
||||||
|
&UserProfile::failedToFetchProfile);
|
||||||
|
|
||||||
http::client()->get_profile(userid_.toStdString(),
|
http::client()->get_profile(userid_.toStdString(),
|
||||||
[prox = std::move(profProx), user = userid_.toStdString()](
|
[prox = std::move(profProx), user = userid_.toStdString()](
|
||||||
const mtx::responses::Profile &res, mtx::http::RequestErr err) {
|
const mtx::responses::Profile &res, mtx::http::RequestErr err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
nhlog::net()->warn("failed to retrieve profile info for {}",
|
nhlog::net()->warn("failed to retrieve profile info for {}",
|
||||||
user);
|
user);
|
||||||
|
emit prox->failedToFetchProfile();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void profileFetched(mtx::responses::Profile);
|
void profileFetched(mtx::responses::Profile);
|
||||||
|
void failedToFetchProfile();
|
||||||
};
|
};
|
||||||
|
|
||||||
class DeviceInfo
|
class DeviceInfo
|
||||||
|
@ -205,6 +206,7 @@ signals:
|
||||||
void globalUsernameRetrieved(const QString &globalUser);
|
void globalUsernameRetrieved(const QString &globalUser);
|
||||||
void devicesChanged();
|
void devicesChanged();
|
||||||
void ignoredChanged();
|
void ignoredChanged();
|
||||||
|
void failedToFetchProfile();
|
||||||
|
|
||||||
// internal
|
// internal
|
||||||
void verificationStatiChanged();
|
void verificationStatiChanged();
|
||||||
|
|
Loading…
Reference in a new issue