examples/privacy.lua
changeset 99 ed4676536ed9
parent 68 742878c74b8e
child 100 521c27baa387
--- a/examples/privacy.lua	Wed Mar 31 00:28:04 2010 +0300
+++ b/examples/privacy.lua	Wed Mar 31 01:25:19 2010 +0300
@@ -9,8 +9,13 @@
 
 main.command ( 'blocklist',
 	function ( args )
+		local connection = main.connection ()
+		if not connection then
+			print "You are not online!"
+			return
+		end
 		local action = args[1]
-		local conn   = lm.connection.bless ( main.connection () )
+		local conn   = lm.connection.bless ( connection )
 		local who    = main.current_buddy ()
 		privacy.list ( conn, 'mcabber',
 			function ( list )
@@ -66,33 +71,31 @@
 local privacy_handler            = lm.message_handler.new ( privacy.iq_handler )
 local privacy_handler_registered = false
 
-hooks_d['hook-post-connect'].privacy =
+privacy_pc_handler =
 	function ( args )
-		privacy.active ( lm.connection.bless ( main.connection () ), 'mcabber',
-			function ()
-				print ( 'Server blocklist activated' )
-			end,
-			function ()
-				-- list may be absent, so, we will not pollute log with errors
-			end )
-		lm.connection.bless( main.connection () ):handler ( privacy_handler, 'iq', 'normal' )
-		privacy_handler_registered = true
-		hooks_d['hook-post-connect'].privacy =
-			function ( args )
-				privacy.active ( lm.connection.bless ( main.connection () ), 'mcabber',
-					function ()
-						print ( 'Server blocklist activated' )
-					end,
-					function ()
-						-- list may be absent, so, we will not pollute log with errors
-					end )
+		local connection = main.connection ()
+		if connection then
+			privacy.active ( lm.connection.bless ( connection ), 'mcabber',
+				function ()
+					print ( 'Server blocklist activated' )
+				end,
+				function ()
+					-- list may be absent, so, we will not pollute log with errors
+				end )
+			lm.connection.bless( connection ):handler ( privacy_handler, 'iq', 'normal' )
+			privacy_handler_registered = true
+		end
+	end
+main.hook ( 'hook-post-connect', privacy_pc_handler )
+main.hook ( 'hook-pre-disconnect',
+	function ( args )
+		if privacy_handler_registered then
+			local connection = main.connection ()
+			if connection then
+				lm.connection.bless( connection ):handler ( privacy_handler, 'iq' )
 			end
-		hooks_d['hook-quit'].privacy =
-			function ( args )
-				if privacy_handler_registered then
-					lm.connection.bless( main.connection () ):handler ( privacy_handler, 'iq' )
-				end
-			end
+			privacy_handler_registered = false
+		end
 	end
 
--- vim: se ts=4: --
+-- vim: se ts=4 sw=4: --