Diff

core/rostermanager.lua @ 7780:dbd202e7c587

Merge 0.10->trunk
author Kim Alvefur <zash@zash.se>
date Sat, 10 Dec 2016 02:55:38 +0100
parent 7779:b1f80447a2b1
child 7949:8acc35b5355a
line wrap: on
line diff
--- a/core/rostermanager.lua	Mon Dec 05 23:03:09 2016 +0100
+++ b/core/rostermanager.lua	Sat Dec 10 02:55:38 2016 +0100
@@ -234,6 +234,18 @@
 	local item = roster[jid];
 	return item and (item.subscription == "from" or item.subscription == "both"), err;
 end
+local 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);
@@ -350,6 +362,7 @@
 	process_inbound_subscription_cancellation = process_inbound_subscription_cancellation;
 	process_inbound_unsubscribe = process_inbound_unsubscribe;
 	is_contact_subscribed = is_contact_subscribed;
+	is_user_subscribed = is_user_subscribed;
 	is_contact_pending_in = is_contact_pending_in;
 	set_contact_pending_in = set_contact_pending_in;
 	is_contact_pending_out = is_contact_pending_out;