@@ -86,7 +86,7 @@ export default class MUCListModal extends BaseModal {
8686 'server_placeholder' : this . model . get ( 'muc_domain' ) || __ ( 'conference.example.org' ) ,
8787 'items' : this . items ,
8888 'loading_items' : this . loading_items ,
89- 'openRoom ' : ev => this . openRoom ( ev ) ,
89+ 'openItem ' : ev => this . openItem ( ev ) ,
9090 'setDomainFromEvent' : ev => this . setDomainFromEvent ( ev ) ,
9191 'submitForm' : ev => this . showRooms ( ev ) ,
9292 'toggleRoomInfo' : ev => this . toggleRoomInfo ( ev )
@@ -97,12 +97,31 @@ export default class MUCListModal extends BaseModal {
9797 return __ ( 'Query for Groupchats' ) ;
9898 }
9999
100- openRoom ( ev ) {
100+ openRoom ( jid , name ) {
101+ this . modal . hide ( ) ;
102+ api . rooms . open ( jid , { 'name' : name } , true ) ;
103+ }
104+
105+ onInfoReceived ( iq , jid , name ) {
106+ const identity = sizzle ( 'query identity' , iq ) . pop ( ) ;
107+ if ( identity . getAttribute ( 'category' ) === 'conference' ) {
108+ this . openRoom ( jid , name ) ;
109+ } else {
110+ this . model . setDomain ( jid ) ;
111+ }
112+ }
113+
114+ openItem ( ev ) {
101115 ev . preventDefault ( ) ;
102116 const jid = ev . target . getAttribute ( 'data-room-jid' ) ;
103117 const name = ev . target . getAttribute ( 'data-room-name' ) ;
104- this . modal . hide ( ) ;
105- api . rooms . open ( jid , { 'name' : name } , true ) ;
118+ const iq = $iq ( {
119+ 'to' : this . model . get ( 'muc_domain' ) ,
120+ 'from' : api . connection . get ( ) . jid ,
121+ 'type' : "get"
122+ } ) . c ( "query" , { xmlns : Strophe . NS . DISCO_INFO } ) ;
123+ api . sendIQ ( iq )
124+ . then ( iq => this . onInfoReceived ( iq , jid , name ) )
106125 }
107126
108127 toggleRoomInfo ( ev ) {
0 commit comments