X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=64f46088cee5bc70908f91d2c8534fe890ce0664;hb=56f686f70bbb212d83803be88adec6fdd225ea8e;hp=3cc3d07ab1c73c941fd0f0374e5c084155d38a47;hpb=6422c61b11d97f905b6a27f2d280e9ec0d8bb3e2;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 3cc3d07a..64f46088 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -262,8 +262,12 @@ void CoreSession::restoreSessionState() void CoreSession::addClient(RemotePeer *peer) { + signalProxy()->setTargetPeer(peer); + peer->dispatch(sessionState()); signalProxy()->addPeer(peer); + + signalProxy()->setTargetPeer(nullptr); } @@ -288,6 +292,17 @@ QHash CoreSession::persistentChannels(NetworkId id) const } +QHash CoreSession::bufferCiphers(NetworkId id) const +{ + return Core::bufferCiphers(user(), id); +} + +void CoreSession::setBufferCipher(NetworkId id, const QString &bufferName, const QByteArray &cipher) const +{ + Core::setBufferCipher(user(), id, bufferName, cipher); +} + + // FIXME switch to BufferId void CoreSession::msgFromClient(BufferInfo bufinfo, QString msg) { @@ -374,8 +389,9 @@ void CoreSession::processMessages() Q_ASSERT(!createBuffer); bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, - senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, senderPrefixes(rawMsg.sender, bufferInfo), + realName(rawMsg.sender, rawMsg.networkId), avatarUrl(rawMsg.sender, rawMsg.networkId), + rawMsg.flags); if(Core::storeMessage(msg)) emit displayMsg(msg); } @@ -399,8 +415,9 @@ void CoreSession::processMessages() } bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, - senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, senderPrefixes(rawMsg.sender, bufferInfo), + realName(rawMsg.sender, rawMsg.networkId), avatarUrl(rawMsg.sender, rawMsg.networkId), + rawMsg.flags); messages << msg; } @@ -416,8 +433,9 @@ void CoreSession::processMessages() // add the StatusBuffer to the Cache in case there are more Messages for the original target bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, - senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, senderPrefixes(rawMsg.sender, bufferInfo), + realName(rawMsg.sender, rawMsg.networkId), avatarUrl(rawMsg.sender, rawMsg.networkId), + rawMsg.flags); messages << msg; } @@ -452,6 +470,33 @@ QString CoreSession::senderPrefixes(const QString &sender, const BufferInfo &buf return currentNetwork->modesToPrefixes(modes); } +QString CoreSession::realName(const QString &sender, NetworkId networkId) const +{ + CoreNetwork *currentNetwork = network(networkId); + if (!currentNetwork) { + return {}; + } + + IrcUser *currentUser = currentNetwork->ircUser(nickFromMask(sender)); + if (!currentUser) { + return {}; + } + + return currentUser->realName(); +} + +QString CoreSession::avatarUrl(const QString &sender, NetworkId networkId) const +{ + Q_UNUSED(sender); + Q_UNUSED(networkId); + // Currently we do not have a way to retrieve this value yet. + // + // This likely will require implementing IRCv3's METADATA spec. + // See https://ircv3.net/irc/ + // And https://blog.irccloud.com/avatars/ + return ""; +} + Protocol::SessionState CoreSession::sessionState() const { QVariantList bufferInfos;