[polari] chatroomManager: Immediately switch to rooms



commit 3551ec363a3ff38cfc63130f5c559cf1489e23a5
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Aug 12 13:03:56 2015 +0200

    chatroomManager: Immediately switch to rooms
    
    If a room is created as the result of user action, it feels more
    responsive if we switch to it immediately rather than waiting
    for the actual channel request to come in.

 src/chatroomManager.js |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/src/chatroomManager.js b/src/chatroomManager.js
index 6ec3b95..55ca5b3 100644
--- a/src/chatroomManager.js
+++ b/src/chatroomManager.js
@@ -151,25 +151,31 @@ const _ChatroomManager = new Lang.Class({
     },
 
     _onJoinActivated: function(action, parameter) {
-        let [accountPath, channelName, ] = parameter.deep_unpack();
+        let [accountPath, channelName, time] = parameter.deep_unpack();
         let factory = Tp.AccountManager.dup().get_factory();
         let account = factory.ensure_account(accountPath, []);
 
         if (!account.enabled)
             return;
 
-        this._ensureRoom(account, channelName, Tp.HandleType.ROOM);
+        let room = this._ensureRoom(account, channelName, Tp.HandleType.ROOM);
+        let [present, ] = Tp.user_action_time_should_present(time);
+        if (present)
+            this.setActiveRoom(room);
     },
 
     _onQueryActivated: function(action, parameter) {
-        let [accountPath, channelName, ] = parameter.deep_unpack();
+        let [accountPath, channelName, time] = parameter.deep_unpack();
         let factory = Tp.AccountManager.dup().get_factory();
         let account = factory.ensure_account(accountPath, []);
 
         if (!account.enabled)
             return;
 
-        this._ensureRoom(account, channelName, Tp.HandleType.CONTACT);
+        let room = this._ensureRoom(account, channelName, Tp.HandleType.CONTACT);
+        let [present, ] = Tp.user_action_time_should_present(time);
+        if (present)
+            this.setActiveRoom(room);
     },
 
     _onLeaveActivated: function(action, parameter) {


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