Implemented user name caching, so we can efficiently pull data for Direct Messages and Searches

This commit is contained in:
Anna
2010-05-23 12:42:19 -04:00
parent 964358c1f2
commit d7893fce37
4 changed files with 163 additions and 77 deletions

View File

@ -2,7 +2,7 @@ import re
import datetime, dateutil.tz
import gtk, gobject
from threading import RLock
from avcache import AvCache
from usercache import AvCache,NameCache
import webbrowser
@ -377,11 +377,18 @@ class TweetBox(gtk.HBox):
if not self.is_user:
try:
with AvCache().lock:
self.avatar.set_from_pixbuf(AvCache().map[status.user.screen_name])
image = AvCache().map[status.user.screen_name]
self.avatar.set_from_pixbuf(image)
self.avatar.show()
except KeyError:
self.avatar.hide()
try:
with NameCache().lock:
name = NameCache().map[status.user.screen_name]
except KeyError:
name = status.user.name
self.set_read(read)
timezone = dateutil.tz.gettz()
@ -424,7 +431,7 @@ class TweetBox(gtk.HBox):
if self.is_user:
self.user_button.set_label('')
else:
self.user_button.set_label(user.name + " (" + user.screen_name + ") ")
self.user_button.set_label(name + " (" + user.screen_name + ") ")
# and the text
new_text = status.text
@ -591,15 +598,24 @@ class UserBox(gtk.VBox):
def update_info(self, user):
self.user_name = user.screen_name
self.name_label.set_text(user.name + ' (' + self.user_name + ')')
name = ''
try:
with AvCache().lock:
self.avatar.set_from_pixbuf(AvCache().map[user.screen_name])
image = AvCache().map[user.screen_name]
self.avatar.set_from_pixbuf(image)
self.avatar.show()
except KeyError:
self.avatar.hide()
try:
with NameCache().lock:
name = NameCache().map[user.screen_name]
except KeyError:
name = user.name
self.name_label.set_text(name + ' (' + self.user_name + ')')
with self.data_lock:
self.verified = user.verified
if self.verified: