From 31d2c896b735292e646f8295dadb6446ba5d7efe Mon Sep 17 00:00:00 2001 From: Russell Harmon Date: Thu, 23 May 2013 15:57:11 -0700 Subject: [PATCH] Disconnect from channels when going away, reconnect when back. --- lib/camper_van/ircd.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/camper_van/ircd.rb b/lib/camper_van/ircd.rb index d4e9540..844aa8d 100644 --- a/lib/camper_van/ircd.rb +++ b/lib/camper_van/ircd.rb @@ -45,6 +45,8 @@ def initialize(client) @client = client @active = true @channels = {} + @away = false + @saved_channels = nil end # The campfire client @@ -243,6 +245,20 @@ def shutdown end handle :away do |args| + if @away + user_reply 305, "You are no longer marked as being away" + @saved_channels.each do |channel| + join_channel channel + end + @saved_channels = nil + else + user_reply 306, "You have been marked as being away" + @saved_channels = channels.keys + channels.values.each do |channel| + channel.part + end + end + @away = !@away # ignore silently, there's no campfire API for this end