diff --git a/spectrum/src/frontends/slack/SlackSession.cpp b/spectrum/src/frontends/slack/SlackSession.cpp index e1a151de9e4b4ac6011544fd86acf77aca32ae48..e33e9d5f26d271e32d019c8de6d4d1c7cc71578b 100644 --- a/spectrum/src/frontends/slack/SlackSession.cpp +++ b/spectrum/src/frontends/slack/SlackSession.cpp @@ -215,6 +215,15 @@ void SlackSession::handleJoinMessage(const std::string &message, std::vectorchannelsList(boost::bind(&SlackSession::handleJoinRoomList, this, _1, _2, _3, _4, args)); } +void SlackSession::handleSlackChannelInvite(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data) { + Swift::Presence::ref presence = Swift::Presence::create(); + presence->setFrom(Swift::JID("", m_uinfo.jid, "default")); + presence->setTo(m_component->getJID()); + presence->setType(Swift::Presence::Available); + presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); + m_component->getFrontend()->onPresenceReceived(presence); +} + void SlackSession::handleSlackChannelCreate(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data) { std::string channelId = m_api->getChannelId(req, ok, resp, data); if (channelId.empty()) { @@ -223,12 +232,7 @@ void SlackSession::handleSlackChannelCreate(HTTPRequest *req, bool ok, rapidjson } m_slackChannel = channelId; - Swift::Presence::ref presence = Swift::Presence::create(); - presence->setFrom(Swift::JID("", m_uinfo.jid, "default")); - presence->setTo(m_component->getJID()); - presence->setType(Swift::Presence::Available); - presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); - m_component->getFrontend()->onPresenceReceived(presence); + m_api->channelsInvite(m_slackChannel, m_rtm->getSelfId(), boost::bind(&SlackSession::handleSlackChannelInvite, this, _1, _2, _3, _4)); } void SlackSession::handleSlackChannelList(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data) { @@ -237,12 +241,7 @@ void SlackSession::handleSlackChannelList(HTTPRequest *req, bool ok, rapidjson:: if (channels.find(m_slackChannel) != channels.end()) { m_slackChannel = channels[m_slackChannel].id; - Swift::Presence::ref presence = Swift::Presence::create(); - presence->setFrom(Swift::JID("", m_uinfo.jid, "default")); - presence->setTo(m_component->getJID()); - presence->setType(Swift::Presence::Available); - presence->addPayload(boost::shared_ptr(new Swift::MUCPayload())); - m_component->getFrontend()->onPresenceReceived(presence); + m_api->channelsInvite(m_slackChannel, m_rtm->getSelfId(), boost::bind(&SlackSession::handleSlackChannelInvite, this, _1, _2, _3, _4)); } else { m_api->channelsCreate(m_slackChannel, boost::bind(&SlackSession::handleSlackChannelCreate, this, _1, _2, _3, _4));