mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 19:29:47 +02:00
Merge pull request #7266 from sethalves/local-messages
allow sending interface-local messsages
This commit is contained in:
commit
5078f486b1
2 changed files with 20 additions and 10 deletions
|
@ -79,20 +79,29 @@ void MessagesClient::handleMessagesPacket(QSharedPointer<ReceivedMessage> receiv
|
||||||
QString channel, message;
|
QString channel, message;
|
||||||
QUuid senderID;
|
QUuid senderID;
|
||||||
decodeMessagesPacket(receivedMessage, channel, message, senderID);
|
decodeMessagesPacket(receivedMessage, channel, message, senderID);
|
||||||
emit messageReceived(channel, message, senderID);
|
emit messageReceived(channel, message, senderID, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesClient::sendMessage(QString channel, QString message) {
|
void MessagesClient::sendMessage(QString channel, QString message, bool localOnly) {
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer);
|
if (localOnly) {
|
||||||
|
|
||||||
if (messagesMixer) {
|
|
||||||
QUuid senderID = nodeList->getSessionUUID();
|
QUuid senderID = nodeList->getSessionUUID();
|
||||||
auto packetList = encodeMessagesPacket(channel, message, senderID);
|
emit messageReceived(channel, message, senderID, true);
|
||||||
nodeList->sendPacketList(std::move(packetList), *messagesMixer);
|
} else {
|
||||||
|
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer);
|
||||||
|
|
||||||
|
if (messagesMixer) {
|
||||||
|
QUuid senderID = nodeList->getSessionUUID();
|
||||||
|
auto packetList = encodeMessagesPacket(channel, message, senderID);
|
||||||
|
nodeList->sendPacketList(std::move(packetList), *messagesMixer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesClient::sendLocalMessage(QString channel, QString message) {
|
||||||
|
sendMessage(channel, message, true);
|
||||||
|
}
|
||||||
|
|
||||||
void MessagesClient::subscribe(QString channel) {
|
void MessagesClient::subscribe(QString channel) {
|
||||||
_subscribedChannels << channel;
|
_subscribedChannels << channel;
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
@ -123,4 +132,4 @@ void MessagesClient::handleNodeActivated(SharedNodePointer node) {
|
||||||
subscribe(channel);
|
subscribe(channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,8 @@ public:
|
||||||
|
|
||||||
Q_INVOKABLE void init();
|
Q_INVOKABLE void init();
|
||||||
|
|
||||||
Q_INVOKABLE void sendMessage(QString channel, QString message);
|
Q_INVOKABLE void sendMessage(QString channel, QString message, bool localOnly = false);
|
||||||
|
Q_INVOKABLE void sendLocalMessage(QString channel, QString message);
|
||||||
Q_INVOKABLE void subscribe(QString channel);
|
Q_INVOKABLE void subscribe(QString channel);
|
||||||
Q_INVOKABLE void unsubscribe(QString channel);
|
Q_INVOKABLE void unsubscribe(QString channel);
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void messageReceived(QString channel, QString message, QUuid senderUUID);
|
void messageReceived(QString channel, QString message, QUuid senderUUID, bool localOnly);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleMessagesPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode);
|
void handleMessagesPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode);
|
||||||
|
|
Loading…
Reference in a new issue