[polari] chatroomManager: Restore saved channels on startup



commit 225c7a677c4af4dae2d3182203f762451cfb68a3
Author: Florian Müllner <fmuellner gnome org>
Date:   Sat Jul 27 02:36:55 2013 +0200

    chatroomManager: Restore saved channels on startup

 src/chatroomManager.js |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/src/chatroomManager.js b/src/chatroomManager.js
index fb54f54..f0ace3f 100644
--- a/src/chatroomManager.js
+++ b/src/chatroomManager.js
@@ -1,3 +1,4 @@
+const Gdk = imports.gi.Gdk;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const Polari = imports.gi.Polari;
@@ -98,6 +99,31 @@ const _ChatroomManager = new Lang.Class({
             }));
         this._handler.register();
         this._observer.register();
+
+        this._restoreSavedChannels();
+    },
+
+    _restoreSavedChannels: function() {
+        let settings = new Gio.Settings({ schema: 'org.gnome.polari' });
+        let savedChannels = settings.get_value('saved-channel-list').deep_unpack();
+        for (let i = 0; i < savedChannels.length; i++) {
+            let serializedChannel = savedChannels[i];
+            for (let prop in serializedChannel)
+                serializedChannel[prop] = serializedChannel[prop].deep_unpack();
+
+            this._restoreChannel(serializedChannel);
+        }
+    },
+
+    _restoreChannel: function(serializedChannel) {
+        let factory = this._accountManager.get_factory();
+        let account = factory.ensure_account(serializedChannel.account, []);
+
+        let req = Tp.AccountChannelRequest.new_text(account, Gdk.CURRENT_TIME);
+        req.set_target_id(Tp.HandleType.ROOM, serializedChannel.channel);
+        req.set_delegate_to_preferred_handler(true);
+        let preferredHandler = Tp.CLIENT_BUS_NAME_BASE + 'Polari';
+        req.ensure_channel_async(preferredHandler, null, null);
     },
 
     _ensureRoomForChannel: function(channel) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]