Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mrDoctorWho/vk4xmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Smith <mrdoctorwho@gmail.com>2017-01-12 19:53:30 +0300
committerJohn Smith <mrdoctorwho@gmail.com>2017-01-12 19:53:30 +0300
commitc60c434bfaf6e39739eec88193ee875441c9acc6 (patch)
tree99be174bfd7e5be445daf300123947f4a8599126 /modules/mod_prs_main.py
parentda2aaf28a2664620b6d5b65fb7bf1b2d56353bce (diff)
Revert "Make roster check xmpp-based"
This reverts commit a5354a9f365dd3e18f10314d25dd36609671d640.
Diffstat (limited to 'modules/mod_prs_main.py')
-rw-r--r--modules/mod_prs_main.py52
1 files changed, 6 insertions, 46 deletions
diff --git a/modules/mod_prs_main.py b/modules/mod_prs_main.py
index b832880..9c9da11 100644
--- a/modules/mod_prs_main.py
+++ b/modules/mod_prs_main.py
@@ -8,36 +8,8 @@ Module purpose is to receive and handle presences
from __main__ import *
from __main__ import _
-from utils import *
-# keeps the user's roster
-USERS_ON_INIT = {}
-EXPIRING_OBJECT_LIFETIME = 600
-UPDATE_FRIENDS_DELAY = 60
-
-
-def updateFriends(user, local):
- """
- Compares the local (xmpp) and remote (vk) list of friends
- """
- if TransportID in local:
- local.remove(TransportID)
- if not user.vk.online:
- return None
-
- friends = user.friends or user.vk.getFriends()
- if not friends or not local:
- logger.error("updateFriends: no friends received (local: %s, remote: %s) (jid: %s).",
- str(local), str(friends), user.source)
- return None
-
- for uid in friends:
- if uid not in local:
- user.sendSubPresence({uid: friends[uid]})
- # TODO
- # for uid in self.friends:
- # if uid not in friends:
- # sendPresence(self.source, vk2xmpp(uid), "unsubscribe")
+USERS_ON_INIT = set([])
def initializeUser(source, resource, prs):
@@ -58,12 +30,10 @@ def initializeUser(source, resource, prs):
report(crashLog("user.connect"))
else:
user.initialize(send=True, resource=resource) # probably we need to know resource a bit earlier than this time
- utils.runThread(updateFriends, (user, list(USERS_ON_INIT[source])), # making a copy so we can remote it safely
- delay=UPDATE_FRIENDS_DELAY)
utils.runThread(executeHandlers, ("prs01", (source, prs)))
if source in USERS_ON_INIT:
- del USERS_ON_INIT[source]
+ USERS_ON_INIT.remove(source)
def presence_handler(cl, prs):
@@ -80,8 +50,6 @@ def presence_handler(cl, prs):
logger.debug("Received presence %s from user. Calling sendInitPresence() (jid: %s)" % (pType, source))
user.resources.add(resource)
utils.runThread(user.sendInitPresence)
- elif source in USERS_ON_INIT:
- USERS_ON_INIT[source].add(vk2xmpp(destination))
elif pType == "unavailable":
if destination == TransportID and resource in user.resources:
@@ -117,19 +85,11 @@ def presence_handler(cl, prs):
removeUser(user, True, False)
executeHandlers("evt09", (source,))
- # when user becomes online, we get subscribe as we don't have both subscription
- elif pType not in ("error", "unavailable"):
+ elif pType in ("available", None) and destination == TransportID:
# It's possible to receive more than one presence from @gmail.com
- if source in USERS_ON_INIT:
- roster = USERS_ON_INIT[source]
- if destination == TransportID and TransportID not in roster and pType in ("available", "probe", None):
- utils.runThread(initializeUser, args=(source, resource, prs))
- else:
- __set = set([])
- USERS_ON_INIT[source] = ExpiringObject(__set, EXPIRING_OBJECT_LIFETIME)
- if destination == TransportID:
- utils.runThread(initializeUser, args=(source, resource, prs))
- USERS_ON_INIT[source].add(vk2xmpp(destination))
+ if source not in USERS_ON_INIT:
+ utils.runThread(initializeUser, args=(source, resource, prs))
+ USERS_ON_INIT.add(source)
utils.runThread(executeHandlers, ("prs01", (source, prs)))