Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
6c10d2b7
Commit
6c10d2b7
authored
Mar 04, 2015
by
JC Brand
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove strophe.muc.js completely. closes #307
parent
df724788
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
6 additions
and
1176 deletions
+6
-1176
converse.js
converse.js
+6
-1
main.js
main.js
+0
-2
non_amd.html
non_amd.html
+0
-1
src/deps-full.js
src/deps-full.js
+0
-1
src/deps-no-otr.js
src/deps-no-otr.js
+0
-1
src/deps-website-no-otr.js
src/deps-website-no-otr.js
+0
-1
src/deps-website.js
src/deps-website.js
+0
-1
src/strophe.muc.js
src/strophe.muc.js
+0
-1168
No files found.
converse.js
View file @
6c10d2b7
...
...
@@ -175,6 +175,11 @@
// Add Strophe Namespaces
Strophe
.
addNamespace
(
'
CHATSTATES
'
,
'
http://jabber.org/protocol/chatstates
'
);
Strophe
.
addNamespace
(
'
MUC_ADMIN
'
,
Strophe
.
NS
.
MUC
+
"
#admin
"
);
Strophe
.
addNamespace
(
'
MUC_OWNER
'
,
Strophe
.
NS
.
MUC
+
"
#owner
"
);
Strophe
.
addNamespace
(
'
MUC_REGISTER
'
,
"
jabber:iq:register
"
);
Strophe
.
addNamespace
(
'
MUC_ROOMCONF
'
,
Strophe
.
NS
.
MUC
+
"
#roomconfig
"
);
Strophe
.
addNamespace
(
'
MUC_USER
'
,
Strophe
.
NS
.
MUC
+
"
#user
"
);
Strophe
.
addNamespace
(
'
REGISTER
'
,
'
jabber:iq:register
'
);
Strophe
.
addNamespace
(
'
XFORM
'
,
'
jabber:x:data
'
);
...
...
@@ -2427,7 +2432,7 @@
createChatRoomMessage
:
function
(
text
)
{
var
msgid
=
converse
.
connection
.
getUniqueId
();
var
msg
=
$msg
({
to
:
this
.
getRoomJIDAndNick
(
),
to
:
this
.
model
.
get
(
'
jid
'
),
from
:
converse
.
connection
.
jid
,
type
:
'
groupchat
'
,
id
:
msgid
...
...
main.js
View file @
6c10d2b7
...
...
@@ -36,7 +36,6 @@ require.config({
"
strophe-websocket
"
:
"
components/strophejs/src/websocket
"
,
"
strophe-polyfill
"
:
"
components/strophejs/src/polyfills
"
,
"
strophe.disco
"
:
"
components/strophejs-plugins/disco/strophe.disco
"
,
"
strophe.muc
"
:
"
src/strophe.muc
"
,
"
strophe.roster
"
:
"
src/strophe.roster
"
,
"
strophe.vcard
"
:
"
src/strophe.vcard
"
,
"
text
"
:
'
components/requirejs-text/text
'
,
...
...
@@ -169,7 +168,6 @@ require.config({
'
crypto.sha256
'
:
{
deps
:
[
'
crypto.core
'
]
},
'
bigint
'
:
{
deps
:
[
'
crypto
'
]
},
'
strophe.disco
'
:
{
deps
:
[
'
strophe
'
]
},
'
strophe.muc
'
:
{
deps
:
[
'
strophe
'
]
},
'
strophe.register
'
:
{
deps
:
[
'
strophe
'
]
},
'
strophe.roster
'
:
{
deps
:
[
'
strophe
'
]
},
'
strophe.vcard
'
:
{
deps
:
[
'
strophe
'
]
}
...
...
non_amd.html
View file @
6c10d2b7
...
...
@@ -33,7 +33,6 @@
<script
type=
"text/javascript"
src=
"src/otr.js"
></script>
<script
type=
"text/javascript"
src=
"components/strophe/strophe.min.js"
></script>
<script
type=
"text/javascript"
src=
"src/strophe.roster.js"
></script>
<script
type=
"text/javascript"
src=
"components/strophe.muc/index.js"
></script>
<script
type=
"text/javascript"
src=
"components/strophejs-plugins/vcard/strophe.vcard.js"
></script>
<script
type=
"text/javascript"
src=
"components/strophejs-plugins/disco/strophe.disco.js"
></script>
<script
type=
"text/javascript"
src=
"components/underscore/underscore.js"
></script>
...
...
src/deps-full.js
View file @
6c10d2b7
...
...
@@ -8,7 +8,6 @@ define("converse-dependencies", [
"
jquery.browser
"
,
"
typeahead
"
,
"
strophe
"
,
"
strophe.muc
"
,
"
strophe.roster
"
,
"
strophe.vcard
"
,
"
strophe.disco
"
...
...
src/deps-no-otr.js
View file @
6c10d2b7
...
...
@@ -7,7 +7,6 @@ define("converse-dependencies", [
"
jquery.browser
"
,
"
typeahead
"
,
"
strophe
"
,
"
strophe.muc
"
,
"
strophe.roster
"
,
"
strophe.vcard
"
,
"
strophe.disco
"
...
...
src/deps-website-no-otr.js
View file @
6c10d2b7
...
...
@@ -9,7 +9,6 @@ define("converse-dependencies", [
"
jquery.easing
"
,
// XXX: Can be removed, only for https://conversejs.org
"
typeahead
"
,
"
strophe
"
,
"
strophe.muc
"
,
"
strophe.roster
"
,
"
strophe.vcard
"
,
"
strophe.disco
"
...
...
src/deps-website.js
View file @
6c10d2b7
...
...
@@ -5,7 +5,6 @@ define("converse-dependencies", [
"
otr
"
,
"
moment
"
,
"
strophe
"
,
"
strophe.muc
"
,
"
strophe.roster
"
,
"
strophe.vcard
"
,
"
strophe.disco
"
,
...
...
src/strophe.muc.js
deleted
100644 → 0
View file @
df724788
/*
*Plugin to implement the MUC extension.
http://xmpp.org/extensions/xep-0045.html
*Previous Author:
Nathan Zorn <nathan.zorn@gmail.com>
*Complete CoffeeScript rewrite:
Andreas Guth <guth@dbis.rwth-aachen.de>
*/
(
function
(
root
,
factory
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
// AMD. Register as an anonymous module.
define
([
"
strophe
"
],
function
(
Strophe
)
{
factory
(
Strophe
.
Strophe
,
Strophe
.
$build
,
Strophe
.
$iq
,
Strophe
.
$msg
,
Strophe
.
$pres
);
});
}
else
{
// Browser globals
factory
(
root
.
Strophe
,
root
.
$build
,
root
.
$iq
,
root
.
$msg
,
root
.
$pres
);
}
}(
this
,
function
(
Strophe
,
$build
,
$iq
,
$msg
,
$pres
)
{
var
Occupant
,
RoomConfig
,
XmppRoom
,
__hasProp
=
{}.
hasOwnProperty
,
__bind
=
function
(
fn
,
me
){
return
function
(){
return
fn
.
apply
(
me
,
arguments
);
};
};
Strophe
.
addConnectionPlugin
(
'
muc
'
,
{
_connection
:
null
,
rooms
:
{},
roomNames
:
[],
/*Function
Initialize the MUC plugin. Sets the correct connection object and
extends the namesace.
*/
init
:
function
(
conn
)
{
this
.
_connection
=
conn
;
this
.
_muc_handler
=
null
;
Strophe
.
addNamespace
(
'
MUC_OWNER
'
,
Strophe
.
NS
.
MUC
+
"
#owner
"
);
Strophe
.
addNamespace
(
'
MUC_ADMIN
'
,
Strophe
.
NS
.
MUC
+
"
#admin
"
);
Strophe
.
addNamespace
(
'
MUC_USER
'
,
Strophe
.
NS
.
MUC
+
"
#user
"
);
Strophe
.
addNamespace
(
'
MUC_ROOMCONF
'
,
Strophe
.
NS
.
MUC
+
"
#roomconfig
"
);
return
Strophe
.
addNamespace
(
'
MUC_REGISTER
'
,
"
jabber:iq:register
"
);
},
/*Function
Join a multi-user chat room
Parameters:
(String) room - The multi-user chat room to join.
(String) nick - The nickname to use in the chat room. Optional
(Function) msg_handler_cb - The function call to handle messages from the
specified chat room.
(Function) pres_handler_cb - The function call back to handle presence
in the chat room.
(Function) roster_cb - The function call to handle roster info in the chat room
(String) password - The optional password to use. (password protected
rooms only)
(Object) history_attrs - Optional attributes for retrieving history
(XML DOM Element) extended_presence - Optional XML for extending presence
*/
join
:
function
(
room
,
nick
,
msg_handler_cb
,
pres_handler_cb
,
roster_cb
,
password
,
history_attrs
)
{
var
msg
,
room_nick
;
room_nick
=
this
.
test_append_nick
(
room
,
nick
);
msg
=
$pres
({
from
:
this
.
_connection
.
jid
,
to
:
room_nick
}).
c
(
"
x
"
,
{
xmlns
:
Strophe
.
NS
.
MUC
});
if
(
history_attrs
!==
null
)
{
msg
=
msg
.
c
(
"
history
"
,
history_attrs
).
up
();
}
if
(
password
!==
null
)
{
msg
.
cnode
(
Strophe
.
xmlElement
(
"
password
"
,
[],
password
));
}
if
(
typeof
extended_presence
!==
"
undefined
"
&&
extended_presence
!==
null
)
{
msg
.
up
.
cnode
(
extended_presence
);
}
if
(
this
.
_muc_handler
===
null
)
{
this
.
_muc_handler
=
this
.
_connection
.
addHandler
((
function
(
_this
)
{
return
function
(
stanza
)
{
var
from
,
handler
,
handlers
,
id
,
roomname
,
x
,
xmlns
,
xquery
,
_i
,
_len
;
from
=
stanza
.
getAttribute
(
'
from
'
);
if
(
!
from
)
{
return
true
;
}
roomname
=
from
.
split
(
"
/
"
)[
0
];
if
(
!
_this
.
rooms
[
roomname
])
{
return
true
;
}
room
=
_this
.
rooms
[
roomname
];
handlers
=
{};
if
(
stanza
.
nodeName
===
"
message
"
)
{
handlers
=
room
.
_message_handlers
;
}
else
if
(
stanza
.
nodeName
===
"
presence
"
)
{
xquery
=
stanza
.
getElementsByTagName
(
"
x
"
);
if
(
xquery
.
length
>
0
)
{
for
(
_i
=
0
,
_len
=
xquery
.
length
;
_i
<
_len
;
_i
++
)
{
x
=
xquery
[
_i
];
xmlns
=
x
.
getAttribute
(
"
xmlns
"
);
if
(
xmlns
&&
xmlns
.
match
(
Strophe
.
NS
.
MUC
))
{
handlers
=
room
.
_presence_handlers
;
break
;
}
}
}
}
for
(
id
in
handlers
)
{
handler
=
handlers
[
id
];
if
(
!
handler
(
stanza
,
room
))
{
delete
handlers
[
id
];
}
}
return
true
;
};
})(
this
));
}
if
(
!
this
.
rooms
.
hasOwnProperty
(
room
))
{
this
.
rooms
[
room
]
=
new
XmppRoom
(
this
,
room
,
nick
,
password
);
this
.
roomNames
.
push
(
room
);
}
if
(
pres_handler_cb
)
{
this
.
rooms
[
room
].
addHandler
(
'
presence
'
,
pres_handler_cb
);
}
if
(
msg_handler_cb
)
{
this
.
rooms
[
room
].
addHandler
(
'
message
'
,
msg_handler_cb
);
}
if
(
roster_cb
)
{
this
.
rooms
[
room
].
addHandler
(
'
roster
'
,
roster_cb
);
}
return
this
.
_connection
.
send
(
msg
);
},
/*Function
Leave a multi-user chat room
Parameters:
(String) room - The multi-user chat room to leave.
(String) nick - The nick name used in the room.
(Function) handler_cb - Optional function to handle the successful leave.
(String) exit_msg - optional exit message.
Returns:
iqid - The unique id for the room leave.
*/
leave
:
function
(
room
,
nick
,
handler_cb
,
exit_msg
)
{
var
id
,
presence
,
presenceid
,
room_nick
;
id
=
this
.
roomNames
.
indexOf
(
room
);
delete
this
.
rooms
[
room
];
if
(
id
>=
0
)
{
this
.
roomNames
.
splice
(
id
,
1
);
if
(
this
.
roomNames
.
length
===
0
)
{
this
.
_connection
.
deleteHandler
(
this
.
_muc_handler
);
this
.
_muc_handler
=
null
;
}
}
room_nick
=
this
.
test_append_nick
(
room
,
nick
);
presenceid
=
this
.
_connection
.
getUniqueId
();
presence
=
$pres
({
type
:
"
unavailable
"
,
id
:
presenceid
,
from
:
this
.
_connection
.
jid
,
to
:
room_nick
});
if
(
exit_msg
!==
null
)
{
presence
.
c
(
"
status
"
,
exit_msg
);
}
if
(
handler_cb
!==
null
)
{
this
.
_connection
.
addHandler
(
handler_cb
,
null
,
"
presence
"
,
null
,
presenceid
);
}
this
.
_connection
.
send
(
presence
);
return
presenceid
;
},
/*Function
Parameters:
(String) room - The multi-user chat room name.
(String) nick - The nick name used in the chat room.
(String) message - The plaintext message to send to the room.
(String) html_message - The message to send to the room with html markup.
(String) type - "groupchat" for group chat messages o
"chat" for private chat messages
Returns:
msgiq - the unique id used to send the message
*/
message
:
function
(
room
,
nick
,
message
,
html_message
,
type
,
msgid
)
{
var
msg
,
parent
,
room_nick
;
room_nick
=
this
.
test_append_nick
(
room
,
nick
);
type
=
type
||
(
nick
!==
null
?
"
chat
"
:
"
groupchat
"
);
msgid
=
msgid
||
this
.
_connection
.
getUniqueId
();
msg
=
$msg
({
to
:
room_nick
,
from
:
this
.
_connection
.
jid
,
type
:
type
,
id
:
msgid
}).
c
(
"
body
"
).
t
(
message
);
msg
.
up
();
if
(
html_message
!==
null
)
{
msg
.
c
(
"
html
"
,
{
xmlns
:
Strophe
.
NS
.
XHTML_IM
}).
c
(
"
body
"
,
{
xmlns
:
Strophe
.
NS
.
XHTML
}).
h
(
html_message
);
if
(
msg
.
node
.
childNodes
.
length
===
0
)
{
parent
=
msg
.
node
.
parentNode
;
msg
.
up
().
up
();
msg
.
node
.
removeChild
(
parent
);
}
else
{
msg
.
up
().
up
();
}
}
msg
.
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:event
"
}).
c
(
"
composing
"
);
this
.
_connection
.
send
(
msg
);
return
msgid
;
},
/*Function
Convenience Function to send a Message to all Occupants
Parameters:
(String) room - The multi-user chat room name.
(String) message - The plaintext message to send to the room.
(String) html_message - The message to send to the room with html markup.
(String) msgid - Optional unique ID which will be set as the 'id' attribute of the stanza
Returns:
msgiq - the unique id used to send the message
*/
groupchat
:
function
(
room
,
message
,
html_message
,
msgid
)
{
return
this
.
message
(
room
,
null
,
message
,
html_message
,
void
0
,
msgid
);
},
/*Function
Send a mediated invitation.
Parameters:
(String) room - The multi-user chat room name.
(String) receiver - The invitation's receiver.
(String) reason - Optional reason for joining the room.
Returns:
msgiq - the unique id used to send the invitation
*/
invite
:
function
(
room
,
receiver
,
reason
)
{
var
invitation
,
msgid
;
msgid
=
this
.
_connection
.
getUniqueId
();
invitation
=
$msg
({
from
:
this
.
_connection
.
jid
,
to
:
room
,
id
:
msgid
}).
c
(
'
x
'
,
{
xmlns
:
Strophe
.
NS
.
MUC_USER
}).
c
(
'
invite
'
,
{
to
:
receiver
});
if
(
reason
!==
null
)
{
invitation
.
c
(
'
reason
'
,
reason
);
}
this
.
_connection
.
send
(
invitation
);
return
msgid
;
},
/*Function
Send a mediated multiple invitation.
Parameters:
(String) room - The multi-user chat room name.
(Array) receivers - The invitation's receivers.
(String) reason - Optional reason for joining the room.
Returns:
msgiq - the unique id used to send the invitation
*/
multipleInvites
:
function
(
room
,
receivers
,
reason
)
{
var
invitation
,
msgid
,
receiver
,
_i
,
_len
;
msgid
=
this
.
_connection
.
getUniqueId
();
invitation
=
$msg
({
from
:
this
.
_connection
.
jid
,
to
:
room
,
id
:
msgid
}).
c
(
'
x
'
,
{
xmlns
:
Strophe
.
NS
.
MUC_USER
});
for
(
_i
=
0
,
_len
=
receivers
.
length
;
_i
<
_len
;
_i
++
)
{
receiver
=
receivers
[
_i
];
invitation
.
c
(
'
invite
'
,
{
to
:
receiver
});
if
(
reason
!==
null
)
{
invitation
.
c
(
'
reason
'
,
reason
);
invitation
.
up
();
}
invitation
.
up
();
}
this
.
_connection
.
send
(
invitation
);
return
msgid
;
},
/*Function
Send a direct invitation.
Parameters:
(String) room - The multi-user chat room name.
(String) receiver - The invitation's receiver.
(String) reason - Optional reason for joining the room.
(String) password - Optional password for the room.
Returns:
msgiq - the unique id used to send the invitation
*/
directInvite
:
function
(
room
,
receiver
,
reason
,
password
)
{
var
attrs
,
invitation
,
msgid
;
msgid
=
this
.
_connection
.
getUniqueId
();
attrs
=
{
xmlns
:
'
jabber:x:conference
'
,
jid
:
room
};
if
(
reason
!==
null
)
{
attrs
.
reason
=
reason
;
}
if
(
password
!==
null
)
{
attrs
.
password
=
password
;
}
invitation
=
$msg
({
from
:
this
.
_connection
.
jid
,
to
:
receiver
,
id
:
msgid
}).
c
(
'
x
'
,
attrs
);
this
.
_connection
.
send
(
invitation
);
return
msgid
;
},
/*Function
Queries a room for a list of occupants
(String) room - The multi-user chat room name.
(Function) success_cb - Optional function to handle the info.
(Function) error_cb - Optional function to handle an error.
Returns:
id - the unique id used to send the info request
*/
queryOccupants
:
function
(
room
,
success_cb
,
error_cb
)
{
var
attrs
,
info
;
attrs
=
{
xmlns
:
Strophe
.
NS
.
DISCO_ITEMS
};
info
=
$iq
({
from
:
this
.
_connection
.
jid
,
to
:
room
,
type
:
'
get
'
}).
c
(
'
query
'
,
attrs
);
return
this
.
_connection
.
sendIQ
(
info
,
success_cb
,
error_cb
);
},
/*Function
Start a room configuration.
Parameters:
(String) room - The multi-user chat room name.
(Function) handler_cb - Optional function to handle the config form.
Returns:
id - the unique id used to send the configuration request
*/
configure
:
function
(
room
,
handler_cb
,
error_cb
)
{
var
config
,
stanza
;
config
=
$iq
({
to
:
room
,
type
:
"
get
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_OWNER
});
stanza
=
config
.
tree
();
return
this
.
_connection
.
sendIQ
(
stanza
,
handler_cb
,
error_cb
);
},
/*Function
Cancel the room configuration
Parameters:
(String) room - The multi-user chat room name.
Returns:
id - the unique id used to cancel the configuration.
*/
cancelConfigure
:
function
(
room
)
{
var
config
,
stanza
;
config
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_OWNER
}).
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:data
"
,
type
:
"
cancel
"
});
stanza
=
config
.
tree
();
return
this
.
_connection
.
sendIQ
(
stanza
);
},
/*Function
Save a room configuration.
Parameters:
(String) room - The multi-user chat room name.
(Array) config- Form Object or an array of form elements used to configure the room.
Returns:
id - the unique id used to save the configuration.
*/
saveConfiguration
:
function
(
room
,
config
,
success_cb
,
error_cb
)
{
var
conf
,
iq
,
stanza
,
_i
,
_len
;
iq
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_OWNER
});
if
(
typeof
Form
!==
"
undefined
"
&&
config
instanceof
Form
)
{
config
.
type
=
"
submit
"
;
iq
.
cnode
(
config
.
toXML
());
}
else
{
iq
.
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:data
"
,
type
:
"
submit
"
});
for
(
_i
=
0
,
_len
=
config
.
length
;
_i
<
_len
;
_i
++
)
{
conf
=
config
[
_i
];
iq
.
cnode
(
conf
).
up
();
}
}
stanza
=
iq
.
tree
();
return
this
.
_connection
.
sendIQ
(
stanza
,
success_cb
,
error_cb
);
},
/*Function
Parameters:
(String) room - The multi-user chat room name.
Returns:
id - the unique id used to create the chat room.
*/
createInstantRoom
:
function
(
room
,
success_cb
,
error_cb
)
{
var
roomiq
;
roomiq
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_OWNER
}).
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:data
"
,
type
:
"
submit
"
});
return
this
.
_connection
.
sendIQ
(
roomiq
.
tree
(),
success_cb
,
error_cb
);
},
/*Function
Parameters:
(String) room - The multi-user chat room name.
(Object) config - the configuration. ex: {"muc#roomconfig_publicroom": "0", "muc#roomconfig_persistentroom": "1"}
Returns:
id - the unique id used to create the chat room.
*/
createConfiguredRoom
:
function
(
room
,
config
,
success_cb
,
error_cb
)
{
var
k
,
roomiq
,
v
;
roomiq
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_OWNER
}).
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:data
"
,
type
:
"
submit
"
});
roomiq
.
c
(
'
field
'
,
{
'
var
'
:
'
FORM_TYPE
'
}).
c
(
'
value
'
).
t
(
'
http://jabber.org/protocol/muc#roomconfig
'
).
up
().
up
();
for
(
k
in
config
)
{
if
(
!
__hasProp
.
call
(
config
,
k
))
continue
;
v
=
config
[
k
];
roomiq
.
c
(
'
field
'
,
{
'
var
'
:
k
}).
c
(
'
value
'
).
t
(
v
).
up
().
up
();
}
return
this
.
_connection
.
sendIQ
(
roomiq
.
tree
(),
success_cb
,
error_cb
);
},
/*Function
Set the topic of the chat room.
Parameters:
(String) room - The multi-user chat room name.
(String) topic - Topic message.
*/
setTopic
:
function
(
room
,
topic
)
{
var
msg
;
msg
=
$msg
({
to
:
room
,
from
:
this
.
_connection
.
jid
,
type
:
"
groupchat
"
}).
c
(
"
subject
"
,
{
xmlns
:
"
jabber:client
"
}).
t
(
topic
);
return
this
.
_connection
.
send
(
msg
.
tree
());
},
/*Function
Internal Function that Changes the role or affiliation of a member
of a MUC room. This function is used by modifyRole and modifyAffiliation.
The modification can only be done by a room moderator. An error will be
returned if the user doesn't have permission.
Parameters:
(String) room - The multi-user chat room name.
(Object) item - Object with nick and role or jid and affiliation attribute
(String) reason - Optional reason for the change.
(Function) handler_cb - Optional callback for success
(Function) error_cb - Optional callback for error
Returns:
iq - the id of the mode change request.
*/
_modifyPrivilege
:
function
(
room
,
item
,
reason
,
handler_cb
,
error_cb
)
{
var
iq
;
iq
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_ADMIN
}).
cnode
(
item
.
node
);
if
(
reason
!==
null
)
{
iq
.
c
(
"
reason
"
,
reason
);
}
return
this
.
_connection
.
sendIQ
(
iq
.
tree
(),
handler_cb
,
error_cb
);
},
/*Function
Changes the role of a member of a MUC room.
The modification can only be done by a room moderator. An error will be
returned if the user doesn't have permission.
Parameters:
(String) room - The multi-user chat room name.
(String) nick - The nick name of the user to modify.
(String) role - The new role of the user.
(String) affiliation - The new affiliation of the user.
(String) reason - Optional reason for the change.
(Function) handler_cb - Optional callback for success
(Function) error_cb - Optional callback for error
Returns:
iq - the id of the mode change request.
*/
modifyRole
:
function
(
room
,
nick
,
role
,
reason
,
handler_cb
,
error_cb
)
{
var
item
;
item
=
$build
(
"
item
"
,
{
nick
:
nick
,
role
:
role
});
return
this
.
_modifyPrivilege
(
room
,
item
,
reason
,
handler_cb
,
error_cb
);
},
kick
:
function
(
room
,
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyRole
(
room
,
nick
,
'
none
'
,
reason
,
handler_cb
,
error_cb
);
},
voice
:
function
(
room
,
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyRole
(
room
,
nick
,
'
participant
'
,
reason
,
handler_cb
,
error_cb
);
},
mute
:
function
(
room
,
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyRole
(
room
,
nick
,
'
visitor
'
,
reason
,
handler_cb
,
error_cb
);
},
op
:
function
(
room
,
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyRole
(
room
,
nick
,
'
moderator
'
,
reason
,
handler_cb
,
error_cb
);
},
deop
:
function
(
room
,
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyRole
(
room
,
nick
,
'
participant
'
,
reason
,
handler_cb
,
error_cb
);
},
/*Function
Changes the affiliation of a member of a MUC room.
The modification can only be done by a room moderator. An error will be
returned if the user doesn't have permission.
Parameters:
(String) room - The multi-user chat room name.
(String) jid - The jid of the user to modify.
(String) affiliation - The new affiliation of the user.
(String) reason - Optional reason for the change.
(Function) handler_cb - Optional callback for success
(Function) error_cb - Optional callback for error
Returns:
iq - the id of the mode change request.
*/
modifyAffiliation
:
function
(
room
,
jid
,
affiliation
,
reason
,
handler_cb
,
error_cb
)
{
var
item
;
item
=
$build
(
"
item
"
,
{
jid
:
jid
,
affiliation
:
affiliation
});
return
this
.
_modifyPrivilege
(
room
,
item
,
reason
,
handler_cb
,
error_cb
);
},
ban
:
function
(
room
,
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyAffiliation
(
room
,
jid
,
'
outcast
'
,
reason
,
handler_cb
,
error_cb
);
},
member
:
function
(
room
,
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyAffiliation
(
room
,
jid
,
'
member
'
,
reason
,
handler_cb
,
error_cb
);
},
revoke
:
function
(
room
,
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyAffiliation
(
room
,
jid
,
'
none
'
,
reason
,
handler_cb
,
error_cb
);
},
owner
:
function
(
room
,
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyAffiliation
(
room
,
jid
,
'
owner
'
,
reason
,
handler_cb
,
error_cb
);
},
admin
:
function
(
room
,
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
modifyAffiliation
(
room
,
jid
,
'
admin
'
,
reason
,
handler_cb
,
error_cb
);
},
/*Function
Change the current users nick name.
Parameters:
(String) room - The multi-user chat room name.
(String) user - The new nick name.
*/
changeNick
:
function
(
room
,
user
)
{
var
presence
,
room_nick
;
room_nick
=
this
.
test_append_nick
(
room
,
user
);
presence
=
$pres
({
from
:
this
.
_connection
.
jid
,
to
:
room_nick
,
id
:
this
.
_connection
.
getUniqueId
()
});
return
this
.
_connection
.
send
(
presence
.
tree
());
},
/*Function
Change the current users status.
Parameters:
(String) room - The multi-user chat room name.
(String) user - The current nick.
(String) show - The new show-text.
(String) status - The new status-text.
*/
setStatus
:
function
(
room
,
user
,
show
,
status
)
{
var
presence
,
room_nick
;
room_nick
=
this
.
test_append_nick
(
room
,
user
);
presence
=
$pres
({
from
:
this
.
_connection
.
jid
,
to
:
room_nick
});
if
(
show
!==
null
)
{
presence
.
c
(
'
show
'
,
show
).
up
();
}
if
(
status
!==
null
)
{
presence
.
c
(
'
status
'
,
status
);
}
return
this
.
_connection
.
send
(
presence
.
tree
());
},
/*Function
Registering with a room.
@see http://xmpp.org/extensions/xep-0045.html#register
Parameters:
(String) room - The multi-user chat room name.
(Function) handle_cb - Function to call for room list return.
(Function) error_cb - Function to call on error.
*/
registrationRequest
:
function
(
room
,
handle_cb
,
error_cb
)
{
var
iq
;
iq
=
$iq
({
to
:
room
,
from
:
this
.
_connection
.
jid
,
type
:
"
get
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_REGISTER
});
return
this
.
_connection
.
sendIQ
(
iq
,
function
(
stanza
)
{
var
$field
,
$fields
,
field
,
fields
,
length
,
_i
,
_len
;
$fields
=
stanza
.
getElementsByTagName
(
'
field
'
);
length
=
$fields
.
length
;
fields
=
{
required
:
[],
optional
:
[]
};
for
(
_i
=
0
,
_len
=
$fields
.
length
;
_i
<
_len
;
_i
++
)
{
$field
=
$fields
[
_i
];
field
=
{
"
var
"
:
$field
.
getAttribute
(
'
var
'
),
label
:
$field
.
getAttribute
(
'
label
'
),
type
:
$field
.
getAttribute
(
'
type
'
)
};
if
(
$field
.
getElementsByTagName
(
'
required
'
).
length
>
0
)
{
fields
.
required
.
push
(
field
);
}
else
{
fields
.
optional
.
push
(
field
);
}
}
return
handle_cb
(
fields
);
},
error_cb
);
},
/*Function
Submits registration form.
Parameters:
(String) room - The multi-user chat room name.
(Function) handle_cb - Function to call for room list return.
(Function) error_cb - Function to call on error.
*/
submitRegistrationForm
:
function
(
room
,
fields
,
handle_cb
,
error_cb
)
{
var
iq
,
key
,
val
;
iq
=
$iq
({
to
:
room
,
type
:
"
set
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
MUC_REGISTER
});
iq
.
c
(
"
x
"
,
{
xmlns
:
"
jabber:x:data
"
,
type
:
"
submit
"
});
iq
.
c
(
'
field
'
,
{
'
var
'
:
'
FORM_TYPE
'
}).
c
(
'
value
'
).
t
(
'
http://jabber.org/protocol/muc#register
'
).
up
().
up
();
for
(
key
in
fields
)
{
val
=
fields
[
key
];
iq
.
c
(
'
field
'
,
{
'
var
'
:
key
}).
c
(
'
value
'
).
t
(
val
).
up
().
up
();
}
return
this
.
_connection
.
sendIQ
(
iq
,
handle_cb
,
error_cb
);
},
/*Function
List all chat room available on a server.
Parameters:
(String) server - name of chat server.
(String) handle_cb - Function to call for room list return.
(String) error_cb - Function to call on error.
*/
listRooms
:
function
(
server
,
handle_cb
,
error_cb
)
{
var
iq
;
iq
=
$iq
({
to
:
server
,
from
:
this
.
_connection
.
jid
,
type
:
"
get
"
}).
c
(
"
query
"
,
{
xmlns
:
Strophe
.
NS
.
DISCO_ITEMS
});
return
this
.
_connection
.
sendIQ
(
iq
,
handle_cb
,
error_cb
);
},
test_append_nick
:
function
(
room
,
nick
)
{
var
domain
,
node
;
node
=
Strophe
.
escapeNode
(
Strophe
.
getNodeFromJid
(
room
));
domain
=
Strophe
.
getDomainFromJid
(
room
);
return
node
+
"
@
"
+
domain
+
(
nick
!==
null
?
"
/
"
+
nick
:
""
);
}
});
XmppRoom
=
(
function
()
{
function
XmppRoom
(
client
,
name
,
nick
,
password
)
{
this
.
client
=
client
;
this
.
name
=
name
;
this
.
nick
=
nick
;
this
.
password
=
password
;
this
.
_roomRosterHandler
=
__bind
(
this
.
_roomRosterHandler
,
this
);
this
.
_addOccupant
=
__bind
(
this
.
_addOccupant
,
this
);
this
.
roster
=
{};
this
.
_message_handlers
=
{};
this
.
_presence_handlers
=
{};
this
.
_roster_handlers
=
{};
this
.
_handler_ids
=
0
;
if
(
client
.
muc
)
{
this
.
client
=
client
.
muc
;
}
this
.
name
=
Strophe
.
getBareJidFromJid
(
name
);
this
.
addHandler
(
'
presence
'
,
this
.
_roomRosterHandler
);
}
XmppRoom
.
prototype
.
join
=
function
(
msg_handler_cb
,
pres_handler_cb
,
roster_cb
)
{
return
this
.
client
.
join
(
this
.
name
,
this
.
nick
,
msg_handler_cb
,
pres_handler_cb
,
roster_cb
,
this
.
password
);
};
XmppRoom
.
prototype
.
leave
=
function
(
handler_cb
,
message
)
{
this
.
client
.
leave
(
this
.
name
,
this
.
nick
,
handler_cb
,
message
);
return
delete
this
.
client
.
rooms
[
this
.
name
];
};
XmppRoom
.
prototype
.
message
=
function
(
nick
,
message
,
html_message
,
type
)
{
return
this
.
client
.
message
(
this
.
name
,
nick
,
message
,
html_message
,
type
);
};
XmppRoom
.
prototype
.
groupchat
=
function
(
message
,
html_message
)
{
return
this
.
client
.
groupchat
(
this
.
name
,
message
,
html_message
);
};
XmppRoom
.
prototype
.
invite
=
function
(
receiver
,
reason
)
{
return
this
.
client
.
invite
(
this
.
name
,
receiver
,
reason
);
};
XmppRoom
.
prototype
.
multipleInvites
=
function
(
receivers
,
reason
)
{
return
this
.
client
.
invite
(
this
.
name
,
receivers
,
reason
);
};
XmppRoom
.
prototype
.
directInvite
=
function
(
receiver
,
reason
)
{
return
this
.
client
.
directInvite
(
this
.
name
,
receiver
,
reason
,
this
.
password
);
};
XmppRoom
.
prototype
.
configure
=
function
(
handler_cb
)
{
return
this
.
client
.
configure
(
this
.
name
,
handler_cb
);
};
XmppRoom
.
prototype
.
cancelConfigure
=
function
()
{
return
this
.
client
.
cancelConfigure
(
this
.
name
);
};
XmppRoom
.
prototype
.
saveConfiguration
=
function
(
config
)
{
return
this
.
client
.
saveConfiguration
(
this
.
name
,
config
);
};
XmppRoom
.
prototype
.
queryOccupants
=
function
(
success_cb
,
error_cb
)
{
return
this
.
client
.
queryOccupants
(
this
.
name
,
success_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
setTopic
=
function
(
topic
)
{
return
this
.
client
.
setTopic
(
this
.
name
,
topic
);
};
XmppRoom
.
prototype
.
modifyRole
=
function
(
nick
,
role
,
reason
,
success_cb
,
error_cb
)
{
return
this
.
client
.
modifyRole
(
this
.
name
,
nick
,
role
,
reason
,
success_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
kick
=
function
(
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
kick
(
this
.
name
,
nick
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
voice
=
function
(
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
voice
(
this
.
name
,
nick
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
mute
=
function
(
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
mute
(
this
.
name
,
nick
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
op
=
function
(
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
op
(
this
.
name
,
nick
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
deop
=
function
(
nick
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
deop
(
this
.
name
,
nick
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
modifyAffiliation
=
function
(
jid
,
affiliation
,
reason
,
success_cb
,
error_cb
)
{
return
this
.
client
.
modifyAffiliation
(
this
.
name
,
jid
,
affiliation
,
reason
,
success_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
ban
=
function
(
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
ban
(
this
.
name
,
jid
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
member
=
function
(
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
member
(
this
.
name
,
jid
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
revoke
=
function
(
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
revoke
(
this
.
name
,
jid
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
owner
=
function
(
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
owner
(
this
.
name
,
jid
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
admin
=
function
(
jid
,
reason
,
handler_cb
,
error_cb
)
{
return
this
.
client
.
admin
(
this
.
name
,
jid
,
reason
,
handler_cb
,
error_cb
);
};
XmppRoom
.
prototype
.
changeNick
=
function
(
nick
)
{
this
.
nick
=
nick
;
return
this
.
client
.
changeNick
(
this
.
name
,
nick
);
};
XmppRoom
.
prototype
.
setStatus
=
function
(
show
,
status
)
{
return
this
.
client
.
setStatus
(
this
.
name
,
this
.
nick
,
show
,
status
);
};
/*Function
Adds a handler to the MUC room.
Parameters:
(String) handler_type - 'message', 'presence' or 'roster'.
(Function) handler - The handler function.
Returns:
id - the id of handler.
*/
XmppRoom
.
prototype
.
addHandler
=
function
(
handler_type
,
handler
)
{
var
id
;
id
=
this
.
_handler_ids
++
;
switch
(
handler_type
)
{
case
'
presence
'
:
this
.
_presence_handlers
[
id
]
=
handler
;
break
;
case
'
message
'
:
this
.
_message_handlers
[
id
]
=
handler
;
break
;
case
'
roster
'
:
this
.
_roster_handlers
[
id
]
=
handler
;
break
;
default
:
this
.
_handler_ids
--
;
return
null
;
}
return
id
;
};
/*Function
Removes a handler from the MUC room.
This function takes ONLY ids returned by the addHandler function
of this room. passing handler ids returned by connection.addHandler
may brake things!
Parameters:
(number) id - the id of the handler
*/
XmppRoom
.
prototype
.
removeHandler
=
function
(
id
)
{
delete
this
.
_presence_handlers
[
id
];
delete
this
.
_message_handlers
[
id
];
return
delete
this
.
_roster_handlers
[
id
];
};
/*Function
Creates and adds an Occupant to the Room Roster.
Parameters:
(Object) data - the data the Occupant is filled with
Returns:
occ - the created Occupant.
*/
XmppRoom
.
prototype
.
_addOccupant
=
function
(
data
)
{
var
occ
;
occ
=
new
Occupant
(
data
,
this
);
this
.
roster
[
occ
.
nick
]
=
occ
;
return
occ
;
};
/*Function
The standard handler that managed the Room Roster.
Parameters:
(Object) pres - the presence stanza containing user information
*/
XmppRoom
.
prototype
.
_roomRosterHandler
=
function
(
pres
)
{
var
data
,
handler
,
id
,
newnick
,
nick
,
_ref
;
data
=
XmppRoom
.
_parsePresence
(
pres
);
nick
=
data
.
nick
;
newnick
=
data
.
newnick
||
null
;
switch
(
data
.
type
)
{
case
'
error
'
:
return
true
;
case
'
unavailable
'
:
if
(
newnick
)
{
data
.
nick
=
newnick
;
if
(
this
.
roster
[
nick
]
&&
this
.
roster
[
newnick
])
{
this
.
roster
[
nick
].
update
(
this
.
roster
[
newnick
]);
this
.
roster
[
newnick
]
=
this
.
roster
[
nick
];
}
if
(
this
.
roster
[
nick
]
&&
!
this
.
roster
[
newnick
])
{
this
.
roster
[
newnick
]
=
this
.
roster
[
nick
].
update
(
data
);
}
}
delete
this
.
roster
[
nick
];
break
;
default
:
if
(
this
.
roster
[
nick
])
{
this
.
roster
[
nick
].
update
(
data
);
}
else
{
this
.
_addOccupant
(
data
);
}
}
_ref
=
this
.
_roster_handlers
;
for
(
id
in
_ref
)
{
handler
=
_ref
[
id
];
if
(
!
handler
(
this
.
roster
,
this
))
{
delete
this
.
_roster_handlers
[
id
];
}
}
return
true
;
};
/*Function
Parses a presence stanza
Parameters:
(Object) data - the data extracted from the presence stanza
*/
XmppRoom
.
_parsePresence
=
function
(
pres
)
{
var
c
,
c2
,
data
,
_i
,
_j
,
_len
,
_len1
,
_ref
,
_ref1
;
data
=
{};
data
.
nick
=
Strophe
.
getResourceFromJid
(
pres
.
getAttribute
(
"
from
"
));
data
.
type
=
pres
.
getAttribute
(
"
type
"
);
data
.
states
=
[];
_ref
=
pres
.
childNodes
;
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
c
=
_ref
[
_i
];
switch
(
c
.
nodeName
)
{
case
"
status
"
:
data
.
status
=
c
.
textContent
||
null
;
break
;
case
"
show
"
:
data
.
show
=
c
.
textContent
||
null
;
break
;
case
"
x
"
:
if
(
c
.
getAttribute
(
"
xmlns
"
)
===
Strophe
.
NS
.
MUC_USER
)
{
_ref1
=
c
.
childNodes
;
for
(
_j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
c2
=
_ref1
[
_j
];
switch
(
c2
.
nodeName
)
{
case
"
item
"
:
data
.
affiliation
=
c2
.
getAttribute
(
"
affiliation
"
);
data
.
role
=
c2
.
getAttribute
(
"
role
"
);
data
.
jid
=
c2
.
getAttribute
(
"
jid
"
);
data
.
newnick
=
c2
.
getAttribute
(
"
nick
"
);
break
;
case
"
status
"
:
if
(
c2
.
getAttribute
(
"
code
"
))
{
data
.
states
.
push
(
c2
.
getAttribute
(
"
code
"
));
}
}
}
}
}
}
return
data
;
};
return
XmppRoom
;
})();
RoomConfig
=
(
function
()
{
function
RoomConfig
(
info
)
{
this
.
parse
=
__bind
(
this
.
parse
,
this
);
if
(
info
!==
null
)
{
this
.
parse
(
info
);
}
}
RoomConfig
.
prototype
.
parse
=
function
(
result
)
{
var
attr
,
attrs
,
child
,
field
,
identity
,
query
,
_i
,
_j
,
_k
,
_len
,
_len1
,
_len2
,
_ref
;
query
=
result
.
getElementsByTagName
(
"
query
"
)[
0
].
childNodes
;
this
.
identities
=
[];
this
.
features
=
[];
this
.
x
=
[];
for
(
_i
=
0
,
_len
=
query
.
length
;
_i
<
_len
;
_i
++
)
{
child
=
query
[
_i
];
attrs
=
child
.
attributes
;
switch
(
child
.
nodeName
)
{
case
"
identity
"
:
identity
=
{};
for
(
_j
=
0
,
_len1
=
attrs
.
length
;
_j
<
_len1
;
_j
++
)
{
attr
=
attrs
[
_j
];
identity
[
attr
.
name
]
=
attr
.
textContent
;
}
this
.
identities
.
push
(
identity
);
break
;
case
"
feature
"
:
this
.
features
.
push
(
child
.
getAttribute
(
"
var
"
));
break
;
case
"
x
"
:
if
((
child
.
childNodes
[
0
].
getAttribute
(
"
var
"
)
!==
'
FORM_TYPE
'
)
||
(
child
.
childNodes
[
0
].
getAttribute
(
"
type
"
)
!==
'
hidden
'
))
{
break
;
}
_ref
=
child
.
childNodes
;
for
(
_k
=
0
,
_len2
=
_ref
.
length
;
_k
<
_len2
;
_k
++
)
{
field
=
_ref
[
_k
];
if
(
!
field
.
attributes
.
type
)
{
this
.
x
.
push
({
"
var
"
:
field
.
getAttribute
(
"
var
"
),
label
:
field
.
getAttribute
(
"
label
"
)
||
""
,
value
:
field
.
firstChild
.
textContent
||
""
});
}
}
}
}
return
{
"
identities
"
:
this
.
identities
,
"
features
"
:
this
.
features
,
"
x
"
:
this
.
x
};
};
return
RoomConfig
;
})();
Occupant
=
(
function
()
{
function
Occupant
(
data
,
room
)
{
this
.
room
=
room
;
this
.
update
=
__bind
(
this
.
update
,
this
);
this
.
admin
=
__bind
(
this
.
admin
,
this
);
this
.
owner
=
__bind
(
this
.
owner
,
this
);
this
.
revoke
=
__bind
(
this
.
revoke
,
this
);
this
.
member
=
__bind
(
this
.
member
,
this
);
this
.
ban
=
__bind
(
this
.
ban
,
this
);
this
.
modifyAffiliation
=
__bind
(
this
.
modifyAffiliation
,
this
);
this
.
deop
=
__bind
(
this
.
deop
,
this
);
this
.
op
=
__bind
(
this
.
op
,
this
);
this
.
mute
=
__bind
(
this
.
mute
,
this
);
this
.
voice
=
__bind
(
this
.
voice
,
this
);
this
.
kick
=
__bind
(
this
.
kick
,
this
);
this
.
modifyRole
=
__bind
(
this
.
modifyRole
,
this
);
this
.
update
(
data
);
}
Occupant
.
prototype
.
modifyRole
=
function
(
role
,
reason
,
success_cb
,
error_cb
)
{
return
this
.
room
.
modifyRole
(
this
.
nick
,
role
,
reason
,
success_cb
,
error_cb
);
};
Occupant
.
prototype
.
kick
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
kick
(
this
.
nick
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
voice
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
voice
(
this
.
nick
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
mute
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
mute
(
this
.
nick
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
op
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
op
(
this
.
nick
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
deop
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
deop
(
this
.
nick
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
modifyAffiliation
=
function
(
affiliation
,
reason
,
success_cb
,
error_cb
)
{
return
this
.
room
.
modifyAffiliation
(
this
.
jid
,
affiliation
,
reason
,
success_cb
,
error_cb
);
};
Occupant
.
prototype
.
ban
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
ban
(
this
.
jid
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
member
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
member
(
this
.
jid
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
revoke
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
revoke
(
this
.
jid
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
owner
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
owner
(
this
.
jid
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
admin
=
function
(
reason
,
handler_cb
,
error_cb
)
{
return
this
.
room
.
admin
(
this
.
jid
,
reason
,
handler_cb
,
error_cb
);
};
Occupant
.
prototype
.
update
=
function
(
data
)
{
this
.
nick
=
data
.
nick
||
null
;
this
.
affiliation
=
data
.
affiliation
||
null
;
this
.
role
=
data
.
role
||
null
;
this
.
jid
=
data
.
jid
||
null
;
this
.
status
=
data
.
status
||
null
;
this
.
show
=
data
.
show
||
null
;
return
this
;
};
return
Occupant
;
})();
}));
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment