# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1481292910 -3600
# Node ID 65836cf2d0578fa1d892d1f86deea787630a4bb7
# Parent  2a7b52437167a5c7b6c8a5bc79f4463afe092fd5
core.rostermanager: Add method for checking if the user is subscribed to a contact

diff -r 2a7b52437167 -r 65836cf2d057 core/rostermanager.lua
--- a/core/rostermanager.lua	Mon Nov 28 14:27:59 2016 +0100
+++ b/core/rostermanager.lua	Fri Dec 09 15:15:10 2016 +0100
@@ -210,6 +210,18 @@
 	local item = roster[jid];
 	return item and (item.subscription == "from" or item.subscription == "both"), err;
 end
+function is_user_subscribed(username, host, jid)
+	do
+		local selfjid = username.."@"..host;
+		local user_subscription = _get_online_roster_subscription(selfjid, jid);
+		if user_subscription then return (user_subscription == "both" or user_subscription == "to"); end
+		local contact_subscription = _get_online_roster_subscription(jid, selfjid);
+		if contact_subscription then return (contact_subscription == "both" or contact_subscription == "from"); end
+	end
+	local roster, err = load_roster(username, host);
+	local item = roster[jid];
+	return item and (item.subscription == "to" or item.subscription == "both"), err;
+end
 
 function is_contact_pending_in(username, host, jid)
 	local roster = load_roster(username, host);