@@ -100,3 +100,8 @@ namespace std {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::tuple<std::string, std::string> Iid::to_tuple() const
|
||||
{
|
||||
return std::make_tuple(this->get_local(), this->get_server());
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@ public:
|
||||
|
||||
std::string get_sep() const;
|
||||
|
||||
std::tuple<std::string, std::string> to_tuple() const;
|
||||
|
||||
private:
|
||||
|
||||
void init(const std::string& iid);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <irc/irc_channel.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
IrcChannel::IrcChannel():
|
||||
joined(false),
|
||||
@@ -36,15 +37,11 @@ IrcUser* IrcChannel::find_user(const std::string& name) const
|
||||
|
||||
void IrcChannel::remove_user(const IrcUser* user)
|
||||
{
|
||||
for (auto it = this->users.begin(); it != this->users.end(); ++it)
|
||||
{
|
||||
IrcUser* u = it->get();
|
||||
if (u->nick == user->nick)
|
||||
{
|
||||
this->users.erase(it);
|
||||
break ;
|
||||
}
|
||||
}
|
||||
this->users.erase(std::remove_if(this->users.begin(), this->users.end(),
|
||||
[user](const std::unique_ptr<IrcUser>& u)
|
||||
{
|
||||
return user->nick == u->nick;
|
||||
}), this->users.end());
|
||||
}
|
||||
|
||||
void IrcChannel::remove_all_users()
|
||||
|
||||
@@ -618,9 +618,7 @@ void IrcClient::set_and_forward_user_list(const IrcMessage& message)
|
||||
const IrcUser* user = channel->add_user(nick, this->prefix_to_mode);
|
||||
if (user->nick != channel->get_self()->nick)
|
||||
{
|
||||
this->bridge.send_user_join(this->hostname, chan_name, user,
|
||||
user->get_most_significant_mode(this->sorted_user_modes),
|
||||
false);
|
||||
this->bridge.send_user_join(this->hostname, chan_name, user, user->get_most_significant_mode(this->sorted_user_modes), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -644,9 +642,7 @@ void IrcClient::on_channel_join(const IrcMessage& message)
|
||||
else
|
||||
{
|
||||
const IrcUser* user = channel->add_user(nick, this->prefix_to_mode);
|
||||
this->bridge.send_user_join(this->hostname, chan_name, user,
|
||||
user->get_most_significant_mode(this->sorted_user_modes),
|
||||
false);
|
||||
this->bridge.send_user_join(this->hostname, chan_name, user, user->get_most_significant_mode(this->sorted_user_modes), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -746,9 +742,7 @@ void IrcClient::on_channel_completely_joined(const IrcMessage& message)
|
||||
const std::string chan_name = utils::tolower(message.arguments[1]);
|
||||
IrcChannel* channel = this->get_channel(chan_name);
|
||||
channel->joined = true;
|
||||
this->bridge.send_user_join(this->hostname, chan_name, channel->get_self(),
|
||||
channel->get_self()->get_most_significant_mode(this->sorted_user_modes),
|
||||
true);
|
||||
this->bridge.send_user_join(this->hostname, chan_name, channel->get_self(), channel->get_self()->get_most_significant_mode(this->sorted_user_modes), true);
|
||||
this->bridge.send_topic(this->hostname, chan_name, channel->topic, channel->topic_author);
|
||||
}
|
||||
|
||||
|
||||
@@ -276,6 +276,8 @@ public:
|
||||
|
||||
const Resolver& get_resolver() const { return this->dns_resolver; }
|
||||
|
||||
const std::vector<char>& get_sorted_user_modes() const { return sorted_user_modes; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The hostname of the server we are connected to.
|
||||
|
||||
Reference in New Issue
Block a user