Add additional debugging to try and identify cause of MB#11103
[hermes] / package / src / org / maemo / hermes / engine / facebook / provider.py
index 2ecd843..375db39 100644 (file)
@@ -1,4 +1,4 @@
-from facebook import Facebook, FacebookError
+from pythonfacebook import Facebook, FacebookError
 import gnome.gconf
 import gtk, hildon
 import org.maemo.hermes.engine.provider
@@ -19,8 +19,6 @@ class Provider(org.maemo.hermes.engine.provider.Provider):
         """Initialise the provider, and ensure the environment is going to work."""
 
         self._gc = gnome.gconf.client_get_default()
-        if (self._gc.get_string('/desktop/gnome/url-handlers/http/command') == 'epiphany %s'):
-            raise Exception('Browser in gconf invalid (see NB#136012). Installation error.')
 
         key_app    = self._gc.get_string('/apps/maemo/hermes/facebook_app')
         key_secret = self._gc.get_string('/apps/maemo/hermes/facebook_secret')
@@ -48,11 +46,8 @@ class Provider(org.maemo.hermes.engine.provider.Provider):
     def get_account_detail(self):
         """Return the email address associated with the user, if available."""
         
-#        if self.fb.users.getLoggedInUser() and self.fb.session_key:
-#            info = self.fb.users.getInfo([self.fb.uid], ['name'])
-#            return info['name']
-#        else:
-        return '---'
+        name = self._gc.get_string('/apps/maemo/hermes/facebook_user')
+        return name and name or _('Pending authorisation')
     
     
     # -----------------------------------------------------------------------
@@ -68,34 +63,41 @@ class Provider(org.maemo.hermes.engine.provider.Provider):
         """Open the preferences for this provider as a child of the 'parent' widget."""
 
         dialog = gtk.Dialog(self.get_name(), parent)
-        dialog.add_button(_('Clear'), gtk.RESPONSE_OK)
         dialog.add_button(_('Disable'), gtk.RESPONSE_NO)
         dialog.add_button(_('Enable'), gtk.RESPONSE_YES)
         
-        dialog.vbox.add(gtk.Label(_('Note: authentication via web page')))
-        
         checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
         checkbox.set_label(_('Create birthday-only contacts'))
         checkbox.set_active(self._gc.get_bool('/apps/maemo/hermes/facebook_birthday_only'))
         dialog.vbox.add(checkbox)
-        dialog.vbox.add(gtk.Label(''))
+        dialog.vbox.add(gtk.Label("\n" + _('Note: authentication via web page') + "\n"))
         
-        while True:
-            dialog.show_all()
-            result = dialog.run()
-            dialog.hide()
-            if result == gtk.RESPONSE_CANCEL:
-                return None
-            elif result == gtk.RESPONSE_OK:
-                self._gc.set_string('/apps/maemo/hermes/facebook_session_key', '')
-                self._gc.set_string('/apps/maemo/hermes/facebook_secret_key', '')
-                self._gc.set_string('/apps/maemo/hermes/facebook_uid', '')
-            else:
-                break
+        clear = hildon.Button(gtk.HILDON_SIZE_FINGER_HEIGHT,
+                              hildon.BUTTON_ARRANGEMENT_VERTICAL,
+                              title = _("Clear authorisation"))
+        clear.connect('clicked', self._clear_auth)
+        dialog.vbox.add(clear)
+        
+        dialog.show_all()
+        result = dialog.run()
+        dialog.hide()
+        if result == gtk.RESPONSE_CANCEL or result == gtk.RESPONSE_DELETE_EVENT:
+            return None
     
         self._gc.set_bool('/apps/maemo/hermes/facebook_birthday_only', checkbox.get_active())
         return result == gtk.RESPONSE_YES
+
+
+    # -----------------------------------------------------------------------
+    def _clear_auth(self, event):
+        """Clear Facebook authorisation information. Triggered by pressing
+           the 'clear' button in the preferences dialogue."""
         
+        self._gc.unset('/apps/maemo/hermes/facebook_session_key')
+        self._gc.unset('/apps/maemo/hermes/facebook_secret_key')
+        self._gc.unset('/apps/maemo/hermes/facebook_uid')
+        self._gc.unset('/apps/maemo/hermes/facebook_user')
+
     
     # -----------------------------------------------------------------------
     def service(self, gui_callback):
@@ -112,7 +114,7 @@ class Provider(org.maemo.hermes.engine.provider.Provider):
                 pass
             self._do_fb_login()
 
-        return org.maemo.hermes.engine.facebook.service.Service(self.fb)
+        return org.maemo.hermes.engine.facebook.service.Service(self.get_id(), self.fb, self._gc.get_bool('/apps/maemo/hermes/facebook_birthday_only'))
 
 
     # -----------------------------------------------------------------------
@@ -139,3 +141,7 @@ class Provider(org.maemo.hermes.engine.provider.Provider):
         self._gc.set_string('/apps/maemo/hermes/facebook_session_key', session['session_key'])
         self._gc.set_string('/apps/maemo/hermes/facebook_secret_key', session['secret'])
         self._gc.set_string('/apps/maemo/hermes/facebook_uid', str(session['uid']))
+
+        info = self.fb.users.getInfo([self.fb.uid], ['name'])
+        self._gc.set_string('/apps/maemo/hermes/facebook_user', info[0]['name'])
+