Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xabber-android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
xabber-android
Commits
ccccd253
Commit
ccccd253
authored
Jul 01, 2015
by
Grigory Fedorov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
extension/muc: light code formatting and refactoring.
parent
743096a8
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
178 additions
and
222 deletions
+178
-222
MUCManager.java
...ava/com/xabber/android/data/extension/muc/MUCManager.java
+69
-96
Occupant.java
.../java/com/xabber/android/data/extension/muc/Occupant.java
+2
-1
RoomAuthorizationError.java
...er/android/data/extension/muc/RoomAuthorizationError.java
+3
-6
RoomChat.java
.../java/com/xabber/android/data/extension/muc/RoomChat.java
+64
-75
RoomInvite.java
...ava/com/xabber/android/data/extension/muc/RoomInvite.java
+6
-8
RoomState.java
...java/com/xabber/android/data/extension/muc/RoomState.java
+29
-18
RoomTable.java
...java/com/xabber/android/data/extension/muc/RoomTable.java
+5
-18
No files found.
app/src/main/java/com/xabber/android/data/extension/muc/MUCManager.java
View file @
ccccd253
...
@@ -66,10 +66,8 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -66,10 +66,8 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
private
final
EntityNotificationProvider
<
RoomAuthorizationError
>
authorizationErrorProvider
;
private
final
EntityNotificationProvider
<
RoomAuthorizationError
>
authorizationErrorProvider
;
private
MUCManager
()
{
private
MUCManager
()
{
inviteProvider
=
new
EntityNotificationProvider
<
RoomInvite
>(
inviteProvider
=
new
EntityNotificationProvider
<>(
R
.
drawable
.
ic_stat_add_circle
);
R
.
drawable
.
ic_stat_add_circle
);
authorizationErrorProvider
=
new
EntityNotificationProvider
<>(
R
.
drawable
.
ic_stat_error
);
authorizationErrorProvider
=
new
EntityNotificationProvider
<
RoomAuthorizationError
>(
R
.
drawable
.
ic_stat_error
);
}
}
public
static
MUCManager
getInstance
()
{
public
static
MUCManager
getInstance
()
{
...
@@ -78,19 +76,18 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -78,19 +76,18 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
@Override
@Override
public
void
onLoad
()
{
public
void
onLoad
()
{
final
Collection
<
RoomChat
>
roomChats
=
new
ArrayList
<
RoomChat
>();
final
Collection
<
RoomChat
>
roomChats
=
new
ArrayList
<>();
final
Collection
<
RoomChat
>
needJoins
=
new
ArrayList
<
RoomChat
>();
final
Collection
<
RoomChat
>
needJoins
=
new
ArrayList
<>();
Cursor
cursor
=
RoomTable
.
getInstance
().
list
();
Cursor
cursor
=
RoomTable
.
getInstance
().
list
();
try
{
try
{
if
(
cursor
.
moveToFirst
())
{
if
(
cursor
.
moveToFirst
())
{
do
{
do
{
RoomChat
roomChat
=
new
RoomChat
(
RoomChat
roomChat
=
new
RoomChat
(
RoomTable
.
getAccount
(
cursor
),
RoomTable
.
getAccount
(
cursor
),
RoomTable
.
getRoom
(
cursor
),
RoomTable
.
getRoom
(
cursor
),
RoomTable
.
getNickname
(
cursor
),
RoomTable
.
getPassword
(
cursor
));
RoomTable
.
getNickname
(
cursor
),
if
(
RoomTable
.
needJoin
(
cursor
))
{
RoomTable
.
getPassword
(
cursor
));
if
(
RoomTable
.
needJoin
(
cursor
))
needJoins
.
add
(
roomChat
);
needJoins
.
add
(
roomChat
);
}
roomChats
.
add
(
roomChat
);
roomChats
.
add
(
roomChat
);
}
while
(
cursor
.
moveToNext
());
}
while
(
cursor
.
moveToNext
());
}
}
...
@@ -105,38 +102,34 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -105,38 +102,34 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
});
});
}
}
private
void
onLoaded
(
Collection
<
RoomChat
>
roomChats
,
private
void
onLoaded
(
Collection
<
RoomChat
>
roomChats
,
Collection
<
RoomChat
>
needJoins
)
{
Collection
<
RoomChat
>
needJoins
)
{
for
(
RoomChat
roomChat
:
roomChats
)
{
for
(
RoomChat
roomChat
:
roomChats
)
{
AbstractChat
abstractChat
=
MessageManager
.
getInstance
().
getChat
(
AbstractChat
abstractChat
=
MessageManager
.
getInstance
().
getChat
(
roomChat
.
getAccount
(),
roomChat
.
getUser
());
roomChat
.
getAccount
(),
roomChat
.
getUser
());
if
(
abstractChat
!=
null
)
if
(
abstractChat
!=
null
)
{
MessageManager
.
getInstance
().
removeChat
(
abstractChat
);
MessageManager
.
getInstance
().
removeChat
(
abstractChat
);
}
MessageManager
.
getInstance
().
addChat
(
roomChat
);
MessageManager
.
getInstance
().
addChat
(
roomChat
);
if
(
needJoins
.
contains
(
roomChat
))
if
(
needJoins
.
contains
(
roomChat
))
{
roomChat
.
setState
(
RoomState
.
waiting
);
roomChat
.
setState
(
RoomState
.
waiting
);
}
}
}
NotificationManager
.
getInstance
().
registerNotificationProvider
(
NotificationManager
.
getInstance
().
registerNotificationProvider
(
inviteProvider
);
inviteProvider
);
NotificationManager
.
getInstance
().
registerNotificationProvider
(
authorizationErrorProvider
);
NotificationManager
.
getInstance
().
registerNotificationProvider
(
authorizationErrorProvider
);
}
}
/**
/**
* @param account
* @param room
* @return <code>null</code> if does not exists.
* @return <code>null</code> if does not exists.
*/
*/
private
RoomChat
getRoomChat
(
String
account
,
String
room
)
{
private
RoomChat
getRoomChat
(
String
account
,
String
room
)
{
AbstractChat
chat
=
MessageManager
.
getInstance
().
getChat
(
account
,
room
);
AbstractChat
chat
=
MessageManager
.
getInstance
().
getChat
(
account
,
room
);
if
(
chat
!=
null
&&
chat
instanceof
RoomChat
)
if
(
chat
!=
null
&&
chat
instanceof
RoomChat
)
{
return
(
RoomChat
)
chat
;
return
(
RoomChat
)
chat
;
}
return
null
;
return
null
;
}
}
/**
/**
* @param account
* @param room
* @return Whether there is such room.
* @return Whether there is such room.
*/
*/
public
boolean
hasRoom
(
String
account
,
String
room
)
{
public
boolean
hasRoom
(
String
account
,
String
room
)
{
...
@@ -144,14 +137,13 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -144,14 +137,13 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
}
/**
/**
* @param account
* @param room
* @return nickname or empty string if room does not exists.
* @return nickname or empty string if room does not exists.
*/
*/
public
String
getNickname
(
String
account
,
String
room
)
{
public
String
getNickname
(
String
account
,
String
room
)
{
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
)
if
(
roomChat
==
null
)
{
return
""
;
return
""
;
}
return
roomChat
.
getNickname
();
return
roomChat
.
getNickname
();
}
}
...
@@ -162,26 +154,24 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -162,26 +154,24 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
*/
*/
public
String
getPassword
(
String
account
,
String
room
)
{
public
String
getPassword
(
String
account
,
String
room
)
{
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
)
if
(
roomChat
==
null
)
{
return
""
;
return
""
;
}
return
roomChat
.
getPassword
();
return
roomChat
.
getPassword
();
}
}
/**
/**
* @param account
* @param room
* @return list of occupants or empty list.
* @return list of occupants or empty list.
*/
*/
public
Collection
<
Occupant
>
getOccupants
(
String
account
,
String
room
)
{
public
Collection
<
Occupant
>
getOccupants
(
String
account
,
String
room
)
{
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
)
if
(
roomChat
==
null
)
{
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
return
roomChat
.
getOccupants
();
return
roomChat
.
getOccupants
();
}
}
/**
/**
* @param account
* @param room
* @return <code>null</code> if there is no such invite.
* @return <code>null</code> if there is no such invite.
*/
*/
public
RoomInvite
getInvite
(
String
account
,
String
room
)
{
public
RoomInvite
getInvite
(
String
account
,
String
room
)
{
...
@@ -195,8 +185,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -195,8 +185,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
public
void
removeRoom
(
final
String
account
,
final
String
room
)
{
public
void
removeRoom
(
final
String
account
,
final
String
room
)
{
removeInvite
(
getInvite
(
account
,
room
));
removeInvite
(
getInvite
(
account
,
room
));
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
)
if
(
roomChat
==
null
)
{
return
;
return
;
}
leaveRoom
(
account
,
room
);
leaveRoom
(
account
,
room
);
MessageManager
.
getInstance
().
removeChat
(
roomChat
);
MessageManager
.
getInstance
().
removeChat
(
roomChat
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
...
@@ -211,10 +202,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -211,10 +202,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
/**
/**
* Creates or updates existed room.
* Creates or updates existed room.
*
*
* @param account
* @param room
* @param nickname
* @param password
*/
*/
public
void
createRoom
(
String
account
,
String
room
,
String
nickname
,
public
void
createRoom
(
String
account
,
String
room
,
String
nickname
,
String
password
,
boolean
join
)
{
String
password
,
boolean
join
)
{
...
@@ -222,8 +209,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -222,8 +209,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
AbstractChat
chat
=
MessageManager
.
getInstance
().
getChat
(
account
,
room
);
AbstractChat
chat
=
MessageManager
.
getInstance
().
getChat
(
account
,
room
);
RoomChat
roomChat
;
RoomChat
roomChat
;
if
(
chat
==
null
||
!(
chat
instanceof
RoomChat
))
{
if
(
chat
==
null
||
!(
chat
instanceof
RoomChat
))
{
if
(
chat
!=
null
)
if
(
chat
!=
null
)
{
MessageManager
.
getInstance
().
removeChat
(
chat
);
MessageManager
.
getInstance
().
removeChat
(
chat
);
}
roomChat
=
new
RoomChat
(
account
,
room
,
nickname
,
password
);
roomChat
=
new
RoomChat
(
account
,
room
,
nickname
,
password
);
MessageManager
.
getInstance
().
addChat
(
roomChat
);
MessageManager
.
getInstance
().
addChat
(
roomChat
);
}
else
{
}
else
{
...
@@ -232,8 +220,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -232,8 +220,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
roomChat
.
setPassword
(
password
);
roomChat
.
setPassword
(
password
);
}
}
requestToWriteRoom
(
account
,
room
,
nickname
,
password
,
join
);
requestToWriteRoom
(
account
,
room
,
nickname
,
password
,
join
);
if
(
join
)
if
(
join
)
{
joinRoom
(
account
,
room
,
true
);
joinRoom
(
account
,
room
,
true
);
}
}
}
private
void
requestToWriteRoom
(
final
String
account
,
final
String
room
,
private
void
requestToWriteRoom
(
final
String
account
,
final
String
room
,
...
@@ -248,8 +237,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -248,8 +237,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
}
/**
/**
* @param account
* @param room
* @return Whether room is disabled.
* @return Whether room is disabled.
*/
*/
public
boolean
isDisabled
(
final
String
account
,
final
String
room
)
{
public
boolean
isDisabled
(
final
String
account
,
final
String
room
)
{
...
@@ -258,8 +245,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -258,8 +245,6 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
}
/**
/**
* @param account
* @param room
* @return Whether connected is establish or connection is in progress.
* @return Whether connected is establish or connection is in progress.
*/
*/
public
boolean
inUse
(
final
String
account
,
final
String
room
)
{
public
boolean
inUse
(
final
String
account
,
final
String
room
)
{
...
@@ -270,12 +255,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -270,12 +255,9 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
/**
/**
* Requests to join to the room.
* Requests to join to the room.
*
*
* @param account
* @param room
* @param requested Whether user request to join the room.
* @param requested Whether user request to join the room.
*/
*/
public
void
joinRoom
(
final
String
account
,
final
String
room
,
public
void
joinRoom
(
final
String
account
,
final
String
room
,
boolean
requested
)
{
boolean
requested
)
{
final
XMPPConnection
xmppConnection
;
final
XMPPConnection
xmppConnection
;
final
RoomChat
roomChat
;
final
RoomChat
roomChat
;
final
String
nickname
;
final
String
nickname
;
...
@@ -323,19 +305,21 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -323,19 +305,21 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
@Override
@Override
public
void
run
()
{
public
void
run
()
{
try
{
try
{
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
{
return
;
return
;
}
multiUserChat
.
join
(
nickname
,
password
);
multiUserChat
.
join
(
nickname
,
password
);
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
{
return
;
return
;
if
(
roomChat
.
getState
()
==
RoomState
.
joining
)
}
if
(
roomChat
.
getState
()
==
RoomState
.
joining
)
{
roomChat
.
setState
(
RoomState
.
occupation
);
roomChat
.
setState
(
RoomState
.
occupation
);
}
removeAuthorizationError
(
account
,
room
);
removeAuthorizationError
(
account
,
room
);
RosterManager
.
getInstance
().
onContactChanged
(
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
account
,
room
);
}
}
});
});
return
;
return
;
...
@@ -343,42 +327,35 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -343,42 +327,35 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
{
return
;
return
;
}
roomChat
.
setState
(
RoomState
.
error
);
roomChat
.
setState
(
RoomState
.
error
);
addAuthorizationError
(
account
,
room
);
addAuthorizationError
(
account
,
room
);
if
(
e
.
getXMPPError
()
!=
null
if
(
e
.
getXMPPError
()
!=
null
&&
e
.
getXMPPError
().
getCode
()
==
409
)
{
&&
e
.
getXMPPError
().
getCode
()
==
409
)
Application
.
getInstance
().
onError
(
R
.
string
.
NICK_ALREADY_USED
);
Application
.
getInstance
().
onError
(
}
else
if
(
e
.
getXMPPError
()
!=
null
&&
e
.
getXMPPError
().
getCode
()
==
401
)
{
R
.
string
.
NICK_ALREADY_USED
);
Application
.
getInstance
().
onError
(
R
.
string
.
AUTHENTICATION_FAILED
);
else
if
(
e
.
getXMPPError
()
!=
null
}
else
{
&&
e
.
getXMPPError
().
getCode
()
==
401
)
Application
.
getInstance
().
onError
(
R
.
string
.
NOT_CONNECTED
);
Application
.
getInstance
().
onError
(
}
R
.
string
.
AUTHENTICATION_FAILED
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
else
Application
.
getInstance
().
onError
(
R
.
string
.
NOT_CONNECTED
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
}
}
});
});
return
;
return
;
}
catch
(
IllegalStateException
e
)
{
}
catch
(
IllegalStateException
e
)
{
}
catch
(
RuntimeException
e
)
{
LogManager
.
exception
(
this
,
e
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
LogManager
.
exception
(
this
,
e
);
LogManager
.
exception
(
this
,
e
);
}
}
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
Application
.
getInstance
().
runOnUiThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
if
(
roomChat
.
getMultiUserChat
()
!=
multiUserChat
)
{
return
;
return
;
}
roomChat
.
setState
(
RoomState
.
waiting
);
roomChat
.
setState
(
RoomState
.
waiting
);
Application
.
getInstance
().
onError
(
Application
.
getInstance
().
onError
(
R
.
string
.
NOT_CONNECTED
);
R
.
string
.
NOT_CONNECTED
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
room
);
}
}
});
});
}
}
...
@@ -390,17 +367,16 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -390,17 +367,16 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
public
void
leaveRoom
(
String
account
,
String
room
)
{
public
void
leaveRoom
(
String
account
,
String
room
)
{
final
MultiUserChat
multiUserChat
;
final
MultiUserChat
multiUserChat
;
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
)
if
(
roomChat
==
null
)
{
return
;
return
;
}
multiUserChat
=
roomChat
.
getMultiUserChat
();
multiUserChat
=
roomChat
.
getMultiUserChat
();
roomChat
.
setState
(
RoomState
.
unavailable
);
roomChat
.
setState
(
RoomState
.
unavailable
);
roomChat
.
setRequested
(
false
);
roomChat
.
setRequested
(
false
);
roomChat
.
newAction
(
roomChat
.
getNickname
(),
null
,
ChatAction
.
leave
);
roomChat
.
newAction
(
roomChat
.
getNickname
(),
null
,
ChatAction
.
leave
);
requestToWriteRoom
(
account
,
room
,
roomChat
.
getNickname
(),
requestToWriteRoom
(
account
,
room
,
roomChat
.
getNickname
(),
roomChat
.
getPassword
(),
false
);
roomChat
.
getPassword
(),
false
);
if
(
multiUserChat
!=
null
)
{
if
(
multiUserChat
!=
null
)
{
Thread
thread
=
new
Thread
(
"Leave to room "
+
room
+
" from "
Thread
thread
=
new
Thread
(
"Leave to room "
+
room
+
" from "
+
account
)
{
+
account
)
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
try
{
try
{
...
@@ -417,41 +393,39 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -417,41 +393,39 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
}
@Override
@Override
public
void
onPacket
(
ConnectionItem
connection
,
String
bareAddress
,
public
void
onPacket
(
ConnectionItem
connection
,
String
bareAddress
,
Packet
packet
)
{
Packet
packet
)
{
if
(!(
connection
instanceof
AccountItem
))
{
if
(!(
connection
instanceof
AccountItem
))
return
;
return
;
}
String
account
=
((
AccountItem
)
connection
).
getAccount
();
String
account
=
((
AccountItem
)
connection
).
getAccount
();
if
(
bareAddress
==
null
||
!(
packet
instanceof
Message
))
if
(
bareAddress
==
null
||
!(
packet
instanceof
Message
))
{
return
;
return
;
}
Message
message
=
(
Message
)
packet
;
Message
message
=
(
Message
)
packet
;
if
(
message
.
getType
()
!=
Message
.
Type
.
normal
if
(
message
.
getType
()
!=
Message
.
Type
.
normal
&&
message
.
getType
()
!=
Message
.
Type
.
chat
)
{
&&
message
.
getType
()
!=
Message
.
Type
.
chat
)
return
;
return
;
}
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
packet
);
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
packet
);
if
(
mucUser
==
null
||
mucUser
.
getInvite
()
==
null
)
if
(
mucUser
==
null
||
mucUser
.
getInvite
()
==
null
)
{
return
;
return
;
}
RoomChat
roomChat
=
getRoomChat
(
account
,
bareAddress
);
RoomChat
roomChat
=
getRoomChat
(
account
,
bareAddress
);
if
(
roomChat
==
null
||
!
roomChat
.
getState
().
inUse
())
{
if
(
roomChat
==
null
||
!
roomChat
.
getState
().
inUse
())
{
String
inviter
=
mucUser
.
getInvite
().
getFrom
();
String
inviter
=
mucUser
.
getInvite
().
getFrom
();
if
(
inviter
==
null
)
if
(
inviter
==
null
)
{
inviter
=
bareAddress
;
inviter
=
bareAddress
;
}
inviteProvider
.
add
(
new
RoomInvite
(
account
,
bareAddress
,
inviter
,
inviteProvider
.
add
(
new
RoomInvite
(
account
,
bareAddress
,
inviter
,
mucUser
.
getInvite
().
getReason
(),
mucUser
.
getPassword
()),
mucUser
.
getInvite
().
getReason
(),
mucUser
.
getPassword
()),
true
);
true
);
}
}
}
}
/**
/**
* Sends invitation.
* Sends invitation.
*
*
* @param account
* @param room
* @param user
* @throws NetworkException
* @throws NetworkException
*/
*/
public
void
invite
(
String
account
,
String
room
,
String
user
)
public
void
invite
(
String
account
,
String
room
,
String
user
)
throws
NetworkException
{
throws
NetworkException
{
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
RoomChat
roomChat
=
getRoomChat
(
account
,
room
);
if
(
roomChat
==
null
||
roomChat
.
getState
()
!=
RoomState
.
available
)
{
if
(
roomChat
==
null
||
roomChat
.
getState
()
!=
RoomState
.
available
)
{
Application
.
getInstance
().
onError
(
R
.
string
.
NOT_CONNECTED
);
Application
.
getInstance
().
onError
(
R
.
string
.
NOT_CONNECTED
);
...
@@ -474,8 +448,7 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
...
@@ -474,8 +448,7 @@ public class MUCManager implements OnLoadListener, OnPacketListener {
}
}
public
void
addAuthorizationError
(
String
account
,
String
room
)
{
public
void
addAuthorizationError
(
String
account
,
String
room
)
{
authorizationErrorProvider
.
add
(
authorizationErrorProvider
.
add
(
new
RoomAuthorizationError
(
account
,
room
),
null
);
new
RoomAuthorizationError
(
account
,
room
),
null
);
}
}
}
}
app/src/main/java/com/xabber/android/data/extension/muc/Occupant.java
View file @
ccccd253
...
@@ -91,8 +91,9 @@ public class Occupant implements Comparable<Occupant> {
...
@@ -91,8 +91,9 @@ public class Occupant implements Comparable<Occupant> {
@Override
@Override
public
int
compareTo
(
Occupant
another
)
{
public
int
compareTo
(
Occupant
another
)
{
int
result
=
another
.
role
.
ordinal
()
-
role
.
ordinal
();
int
result
=
another
.
role
.
ordinal
()
-
role
.
ordinal
();
if
(
result
!=
0
)
if
(
result
!=
0
)
{
return
result
;
return
result
;
}
return
nickname
.
compareTo
(
another
.
nickname
);
return
nickname
.
compareTo
(
another
.
nickname
);
}
}
...
...
app/src/main/java/com/xabber/android/data/extension/muc/RoomAuthorizationError.java
View file @
ccccd253
...
@@ -22,8 +22,7 @@ import com.xabber.android.data.entity.BaseEntity;
...
@@ -22,8 +22,7 @@ import com.xabber.android.data.entity.BaseEntity;
import
com.xabber.android.data.notification.EntityNotificationItem
;
import
com.xabber.android.data.notification.EntityNotificationItem
;
import
com.xabber.android.ui.ConferenceAdd
;
import
com.xabber.android.ui.ConferenceAdd
;
public
class
RoomAuthorizationError
extends
BaseEntity
implements
public
class
RoomAuthorizationError
extends
BaseEntity
implements
EntityNotificationItem
{
EntityNotificationItem
{
public
RoomAuthorizationError
(
String
account
,
String
user
)
{
public
RoomAuthorizationError
(
String
account
,
String
user
)
{
super
(
account
,
user
);
super
(
account
,
user
);
...
@@ -31,8 +30,7 @@ public class RoomAuthorizationError extends BaseEntity implements
...
@@ -31,8 +30,7 @@ public class RoomAuthorizationError extends BaseEntity implements
@Override
@Override
public
Intent
getIntent
()
{
public
Intent
getIntent
()
{
return
ConferenceAdd
.
createIntent
(
Application
.
getInstance
(),
return
ConferenceAdd
.
createIntent
(
Application
.
getInstance
(),
account
,
user
);
account
,
user
);
}
}
@Override
@Override
...
@@ -42,8 +40,7 @@ public class RoomAuthorizationError extends BaseEntity implements
...
@@ -42,8 +40,7 @@ public class RoomAuthorizationError extends BaseEntity implements
@Override
@Override
public
String
getText
()
{
public
String
getText
()
{
return
Application
.
getInstance
().
getString
(
return
Application
.
getInstance
().
getString
(
R
.
string
.
AUTHENTICATION_FAILED
);
R
.
string
.
AUTHENTICATION_FAILED
);
}
}
}
}
app/src/main/java/com/xabber/android/data/extension/muc/RoomChat.java
View file @
ccccd253
...
@@ -85,8 +85,8 @@ public class RoomChat extends AbstractChat {
...
@@ -85,8 +85,8 @@ public class RoomChat extends AbstractChat {
state
=
RoomState
.
unavailable
;
state
=
RoomState
.
unavailable
;
subject
=
""
;
subject
=
""
;
multiUserChat
=
null
;
multiUserChat
=
null
;
occupants
=
new
HashMap
<
String
,
Occupant
>();
occupants
=
new
HashMap
<>();
invites
=
new
HashMap
<
String
,
String
>();
invites
=
new
HashMap
<>();
}
}
@Override
@Override
...
@@ -138,8 +138,9 @@ public class RoomChat extends AbstractChat {
...
@@ -138,8 +138,9 @@ public class RoomChat extends AbstractChat {
occupants
.
clear
();
occupants
.
clear
();
invites
.
clear
();
invites
.
clear
();
}
}
if
(
state
==
RoomState
.
available
)
if
(
state
==
RoomState
.
available
)
{
sendMessages
();
sendMessages
();
}
}
}
Collection
<
Occupant
>
getOccupants
()
{
Collection
<
Occupant
>
getOccupants
()
{
...
@@ -164,15 +165,12 @@ public class RoomChat extends AbstractChat {
...
@@ -164,15 +165,12 @@ public class RoomChat extends AbstractChat {
@Override
@Override
protected
MessageItem
newMessage
(
String
text
)
{
protected
MessageItem
newMessage
(
String
text
)
{
return
newMessage
(
nickname
,
text
,
null
,
null
,
false
,
false
,
false
,
return
newMessage
(
nickname
,
text
,
null
,
null
,
false
,
false
,
false
,
false
,
true
);
false
,
true
);
}
}
@Override
@Override
protected
boolean
canSendMessage
()
{
protected
boolean
canSendMessage
()
{
if
(
super
.
canSendMessage
())
return
super
.
canSendMessage
()
&&
state
==
RoomState
.
available
;
return
state
==
RoomState
.
available
;
return
false
;
}
}
@Override
@Override
...
@@ -182,8 +180,9 @@ public class RoomChat extends AbstractChat {
...
@@ -182,8 +180,9 @@ public class RoomChat extends AbstractChat {
@Override
@Override
protected
boolean
onPacket
(
String
bareAddress
,
Packet
packet
)
{
protected
boolean
onPacket
(
String
bareAddress
,
Packet
packet
)
{
if
(!
super
.
onPacket
(
bareAddress
,
packet
))
if
(!
super
.
onPacket
(
bareAddress
,
packet
))
{
return
false
;
return
false
;
}
final
String
from
=
packet
.
getFrom
();
final
String
from
=
packet
.
getFrom
();
final
String
resource
=
StringUtils
.
parseResource
(
from
);
final
String
resource
=
StringUtils
.
parseResource
(
from
);
if
(
packet
instanceof
Message
)
{
if
(
packet
instanceof
Message
)
{
...
@@ -197,36 +196,38 @@ public class RoomChat extends AbstractChat {
...
@@ -197,36 +196,38 @@ public class RoomChat extends AbstractChat {
}
}
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
packet
);
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
packet
);
if
(
mucUser
!=
null
&&
mucUser
.
getDecline
()
!=
null
)
{
if
(
mucUser
!=
null
&&
mucUser
.
getDecline
()
!=
null
)
{
onInvitationDeclined
(
mucUser
.
getDecline
().
getFrom
(),
mucUser
onInvitationDeclined
(
mucUser
.
getDecline
().
getFrom
(),
mucUser
.
getDecline
().
getReason
());
.
getDecline
().
getReason
());
return
true
;
return
true
;
}
}
final
String
text
=
message
.
getBody
();
final
String
text
=
message
.
getBody
();
final
String
subject
=
message
.
getSubject
();
final
String
subject
=
message
.
getSubject
();
if
(
text
==
null
&&
subject
==
null
)
if
(
text
==
null
&&
subject
==
null
)
{
return
true
;
return
true
;
if
(
isSelf
(
resource
))
// Own message
}
if
(
isSelf
(
resource
))
{
// Own message
return
true
;
return
true
;
}
if
(
subject
!=
null
)
{
if
(
subject
!=
null
)
{
if
(
this
.
subject
.
equals
(
subject
))
if
(
this
.
subject
.
equals
(
subject
))
{
return
true
;
return
true
;
}
this
.
subject
=
subject
;
this
.
subject
=
subject
;
RosterManager
.
getInstance
().
onContactChanged
(
account
,
RosterManager
.
getInstance
().
onContactChanged
(
account
,
bareAddress
);
bareAddress
);
newAction
(
resource
,
subject
,
ChatAction
.
subject
);
newAction
(
resource
,
subject
,
ChatAction
.
subject
);
}
else
{
}
else
{
String
packetID
=
message
.
getPacketID
();
String
packetID
=
message
.
getPacketID
();
Date
delay
=
Delay
.
getDelay
(
message
);
Date
delay
=
Delay
.
getDelay
(
message
);
for
(
MessageItem
messageItem
:
messages
)
{
for
(
MessageItem
messageItem
:
messages
)
{
// Search for duplicates
// Search for duplicates
if
(
packetID
!=
null
if
(
packetID
!=
null
&&
packetID
.
equals
(
messageItem
.
getPacketID
()))
{
&&
packetID
.
equals
(
messageItem
.
getPacketID
()))
return
true
;
return
true
;
}
if
(
delay
!=
null
)
{
if
(
delay
!=
null
)
{
if
(
delay
.
equals
(
messageItem
.
getDelayTimestamp
())
if
(
delay
.
equals
(
messageItem
.
getDelayTimestamp
())
&&
resource
.
equals
(
messageItem
.
getResource
())
&&
resource
.
equals
(
messageItem
.
getResource
())
&&
text
.
equals
(
messageItem
.
getText
()))
&&
text
.
equals
(
messageItem
.
getText
()))
{
return
true
;
return
true
;
}
}
}
}
}
updateThreadId
(
message
.
getThread
());
updateThreadId
(
message
.
getThread
());
...
@@ -246,30 +247,24 @@ public class RoomChat extends AbstractChat {
...
@@ -246,30 +247,24 @@ public class RoomChat extends AbstractChat {
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
}
else
{
}
else
{
boolean
changed
=
false
;
boolean
changed
=
false
;
if
(
oldOccupant
.
getAffiliation
()
!=
newOccupant
if
(
oldOccupant
.
getAffiliation
()
!=
newOccupant
.
getAffiliation
())
{
.
getAffiliation
())
{
changed
=
true
;
changed
=
true
;
onAffiliationChanged
(
resource
,
onAffiliationChanged
(
resource
,
newOccupant
.
getAffiliation
());
newOccupant
.
getAffiliation
());
}
}
if
(
oldOccupant
.
getRole
()
!=
newOccupant
.
getRole
())
{
if
(
oldOccupant
.
getRole
()
!=
newOccupant
.
getRole
())
{
changed
=
true
;
changed
=
true
;
onRoleChanged
(
resource
,
newOccupant
.
getRole
());
onRoleChanged
(
resource
,
newOccupant
.
getRole
());
}
}
if
(
oldOccupant
.
getStatusMode
()
!=
newOccupant
if
(
oldOccupant
.
getStatusMode
()
!=
newOccupant
.
getStatusMode
()
.
getStatusMode
()
||
!
oldOccupant
.
getStatusText
().
equals
(
newOccupant
.
getStatusText
()))
{
||
!
oldOccupant
.
getStatusText
().
equals
(
newOccupant
.
getStatusText
()))
{
changed
=
true
;
changed
=
true
;
onStatusChanged
(
resource
,
newOccupant
.
getStatusMode
(),
onStatusChanged
(
resource
,
newOccupant
.
getStatusMode
(),
newOccupant
.
getStatusText
());
newOccupant
.
getStatusText
());
}
if
(
changed
)
{
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
}
}
if
(
changed
)
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
}
}
}
else
if
(
presence
.
getType
()
==
Presence
.
Type
.
unavailable
}
else
if
(
presence
.
getType
()
==
Presence
.
Type
.
unavailable
&&
state
==
RoomState
.
available
)
{
&&
state
==
RoomState
.
available
)
{
occupants
.
remove
(
stringPrep
);
occupants
.
remove
(
stringPrep
);
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
presence
);
MUCUser
mucUser
=
MUC
.
getMUCUserExtension
(
presence
);
if
(
mucUser
!=
null
&&
mucUser
.
getStatus
()
!=
null
)
{
if
(
mucUser
!=
null
&&
mucUser
.
getStatus
()
!=
null
)
{
...
@@ -280,8 +275,9 @@ public class RoomChat extends AbstractChat {
...
@@ -280,8 +275,9 @@ public class RoomChat extends AbstractChat {
onBan
(
resource
,
mucUser
.
getItem
().
getActor
());
onBan
(
resource
,
mucUser
.
getItem
().
getActor
());
}
else
if
(
"303"
.
equals
(
code
))
{
}
else
if
(
"303"
.
equals
(
code
))
{
String
newNick
=
mucUser
.
getItem
().
getNick
();
String
newNick
=
mucUser
.
getItem
().
getNick
();
if
(
newNick
==
null
)
if
(
newNick
==
null
)
{
return
true
;
return
true
;
}
onRename
(
resource
,
newNick
);
onRename
(
resource
,
newNick
);
Occupant
occupant
=
createOccupant
(
newNick
,
presence
);
Occupant
occupant
=
createOccupant
(
newNick
,
presence
);
occupants
.
put
(
Jid
.
getStringPrep
(
newNick
),
occupant
);
occupants
.
put
(
Jid
.
getStringPrep
(
newNick
),
occupant
);
...
@@ -305,7 +301,6 @@ public class RoomChat extends AbstractChat {
...
@@ -305,7 +301,6 @@ public class RoomChat extends AbstractChat {
}
}
/**
/**
* @param resource
* @return Whether resource is own nickname.
* @return Whether resource is own nickname.
*/
*/
private
boolean
isSelf
(
String
resource
)
{
private
boolean
isSelf
(
String
resource
)
{
...
@@ -314,9 +309,6 @@ public class RoomChat extends AbstractChat {
...
@@ -314,9 +309,6 @@ public class RoomChat extends AbstractChat {
/**
/**
* Informs that the invitee has declined the invitation.
* Informs that the invitee has declined the invitation.
*
* @param from
* @param reason
*/
*/
private
void
onInvitationDeclined
(
String
from
,
String
reason
)
{
private
void
onInvitationDeclined
(
String
from
,
String
reason
)
{
// TODO
// TODO
...
@@ -324,38 +316,35 @@ public class RoomChat extends AbstractChat {
...
@@ -324,38 +316,35 @@ public class RoomChat extends AbstractChat {
/**
/**
* A occupant becomes available.
* A occupant becomes available.
*
* @param resource
*/
*/
private
void
onAvailable
(
String
resource
)
{
private
void
onAvailable
(
String
resource
)
{
if
(
isSelf
(
resource
))
{
if
(
isSelf
(
resource
))
{
setState
(
RoomState
.
available
);
setState
(
RoomState
.
available
);
if
(
isRequested
())
{
if
(
isRequested
())
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newMessage
(
newMessage
(
resource
,
Application
.
getInstance
().
getString
(
resource
,
Application
.
getInstance
().
getString
(
R
.
string
.
action_join_complete_to
,
user
),
R
.
string
.
action_join_complete_to
,
user
),
ChatAction
.
complete
,
null
,
true
,
true
,
false
,
ChatAction
.
complete
,
null
,
true
,
true
,
false
,
false
,
true
);
false
,
true
);
}
active
=
true
;
active
=
true
;
setRequested
(
false
);
setRequested
(
false
);
}
else
{
}
else
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
null
,
ChatAction
.
complete
);
newAction
(
resource
,
null
,
ChatAction
.
complete
);
}
}
}
}
else
{
}
else
{
if
(
state
==
RoomState
.
available
)
if
(
state
==
RoomState
.
available
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
null
,
ChatAction
.
join
);
newAction
(
resource
,
null
,
ChatAction
.
join
);
}
}
}
}
}
}
/**
/**
* Warning: this method should be placed with packet provider.
* Warning: this method should be placed with packet provider.
*
*
* @param resource
* @param presence
* @return New occupant based on presence information.
* @return New occupant based on presence information.
*/
*/
private
Occupant
createOccupant
(
String
resource
,
Presence
presence
)
{
private
Occupant
createOccupant
(
String
resource
,
Presence
presence
)
{
...
@@ -382,8 +371,9 @@ public class RoomChat extends AbstractChat {
...
@@ -382,8 +371,9 @@ public class RoomChat extends AbstractChat {
statusText
=
presence
.
getStatus
();
statusText
=
presence
.
getStatus
();
}
}
}
}
if
(
statusText
==
null
)
if
(
statusText
==
null
)
{
statusText
=
""
;
statusText
=
""
;
}
occupant
.
setJid
(
jid
);
occupant
.
setJid
(
jid
);
occupant
.
setAffiliation
(
affiliation
);
occupant
.
setAffiliation
(
affiliation
);
occupant
.
setRole
(
role
);
occupant
.
setRole
(
role
);
...
@@ -398,18 +388,16 @@ public class RoomChat extends AbstractChat {
...
@@ -398,18 +388,16 @@ public class RoomChat extends AbstractChat {
private
void
onRoleChanged
(
String
resource
,
Role
role
)
{
private
void
onRoleChanged
(
String
resource
,
Role
role
)
{
}
}
private
void
onStatusChanged
(
String
resource
,
StatusMode
statusMode
,
private
void
onStatusChanged
(
String
resource
,
StatusMode
statusMode
,
String
statusText
)
{
String
statusText
)
{
}
}
/**
/**
* A occupant leaves room.
* A occupant leaves room.
*
* @param resource
*/
*/
private
void
onLeave
(
String
resource
)
{
private
void
onLeave
(
String
resource
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
null
,
ChatAction
.
leave
);
newAction
(
resource
,
null
,
ChatAction
.
leave
);
}
if
(
isSelf
(
resource
))
{
if
(
isSelf
(
resource
))
{
setState
(
RoomState
.
waiting
);
setState
(
RoomState
.
waiting
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
RosterManager
.
getInstance
().
onContactChanged
(
account
,
user
);
...
@@ -419,65 +407,66 @@ public class RoomChat extends AbstractChat {
...
@@ -419,65 +407,66 @@ public class RoomChat extends AbstractChat {
/**
/**
* A occupant was kicked.
* A occupant was kicked.
*
*
* @param resource
* @param actor
*/
*/
private
void
onKick
(
String
resource
,
String
actor
)
{
private
void
onKick
(
String
resource
,
String
actor
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
actor
,
ChatAction
.
kick
);
newAction
(
resource
,
actor
,
ChatAction
.
kick
);
if
(
isSelf
(
resource
))
}
if
(
isSelf
(
resource
))
{
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
}
}
}
/**
/**
* A occupant was banned.
* A occupant was banned.
*
*
* @param resource
* @param actor
*/
*/
private
void
onBan
(
String
resource
,
String
actor
)
{
private
void
onBan
(
String
resource
,
String
actor
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
actor
,
ChatAction
.
ban
);
newAction
(
resource
,
actor
,
ChatAction
.
ban
);
if
(
isSelf
(
resource
))
}
if
(
isSelf
(
resource
))
{
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
}
}
}
/**
/**
* A occupant has changed his nickname in the room.
* A occupant has changed his nickname in the room.
*
*
* @param resource
* @param newNick
*/
*/
private
void
onRename
(
String
resource
,
String
newNick
)
{
private
void
onRename
(
String
resource
,
String
newNick
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
newNick
,
ChatAction
.
nickname
);
newAction
(
resource
,
newNick
,
ChatAction
.
nickname
);
}
}
}
/**
/**
* A user's membership was revoked from the room
* A user's membership was revoked from the room
*
*
* @param resource
* @param actor
*/
*/
private
void
onRevoke
(
String
resource
,
String
actor
)
{
private
void
onRevoke
(
String
resource
,
String
actor
)
{
if
(
showStatusChange
())
if
(
showStatusChange
())
{
newAction
(
resource
,
actor
,
ChatAction
.
kick
);
newAction
(
resource
,
actor
,
ChatAction
.
kick
);
if
(
isSelf
(
resource
))
}
if
(
isSelf
(
resource
))
{
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
MUCManager
.
getInstance
().
leaveRoom
(
account
,
user
);
}
}
}
@Override
@Override
protected
void
onComplete
()
{
protected
void
onComplete
()
{
super
.
onComplete
();
super
.
onComplete
();
if
(
getState
()
==
RoomState
.
waiting
)
if
(
getState
()
==
RoomState
.
waiting
)
{
MUCManager
.
getInstance
().
joinRoom
(
account
,
user
,
false
);
MUCManager
.
getInstance
().
joinRoom
(
account
,
user
,
false
);
}
}
}
@Override
@Override
protected
void
onDisconnect
()
{
protected
void
onDisconnect
()
{
super
.
onDisconnect
();
super
.
onDisconnect
();
if
(
state
!=
RoomState
.
unavailable
)
if
(
state
!=
RoomState
.
unavailable
)
{
setState
(
RoomState
.
waiting
);
setState
(
RoomState
.
waiting
);
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/xabber/android/data/extension/muc/RoomInvite.java
View file @
ccccd253
...
@@ -46,8 +46,7 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
...
@@ -46,8 +46,7 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
*/
*/
private
final
String
password
;
private
final
String
password
;
public
RoomInvite
(
String
account
,
String
user
,
String
inviter
,
public
RoomInvite
(
String
account
,
String
user
,
String
inviter
,
String
reason
,
String
password
)
{
String
reason
,
String
password
)
{
super
(
account
,
user
);
super
(
account
,
user
);
this
.
inviter
=
inviter
;
this
.
inviter
=
inviter
;
this
.
reason
=
reason
==
null
?
""
:
reason
;
this
.
reason
=
reason
==
null
?
""
:
reason
;
...
@@ -73,18 +72,17 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
...
@@ -73,18 +72,17 @@ public class RoomInvite extends BaseEntity implements EntityNotificationItem {
* @return Text for the confirmation.
* @return Text for the confirmation.
*/
*/
public
String
getConfirmation
()
{
public
String
getConfirmation
()
{
String
accountName
=
AccountManager
.
getInstance
().
getVerboseName
(
String
accountName
=
AccountManager
.
getInstance
().
getVerboseName
(
account
);
account
);
String
inviterName
=
RosterManager
.
getInstance
().
getName
(
account
,
inviter
);
String
inviterName
=
RosterManager
.
getInstance
().
getName
(
account
,
if
(
reason
==
null
||
""
.
equals
(
reason
))
{
inviter
);
if
(
reason
==
null
||
""
.
equals
(
reason
))
return
Application
.
getInstance
()
return
Application
.
getInstance
()
.
getString
(
R
.
string
.
muc_invite_confirm
,
accountName
,
.
getString
(
R
.
string
.
muc_invite_confirm
,
accountName
,
inviterName
,
user
);
inviterName
,
user
);
else
}
else
{
return
Application
.
getInstance
().
getString
(
return
Application
.
getInstance
().
getString
(
R
.
string
.
muc_invite_confirm_reason
,
accountName
,
R
.
string
.
muc_invite_confirm_reason
,
accountName
,
inviterName
,
user
,
reason
);
inviterName
,
user
,
reason
);
}
}
}
public
String
getInviter
()
{
public
String
getInviter
()
{
...
...
app/src/main/java/com/xabber/android/data/extension/muc/RoomState.java
View file @
ccccd253
...
@@ -62,29 +62,40 @@ public enum RoomState {
...
@@ -62,29 +62,40 @@ public enum RoomState {
* @return Status mode used in contact list.
* @return Status mode used in contact list.
*/
*/
StatusMode
toStatusMode
()
{
StatusMode
toStatusMode
()
{
if
(
this
==
RoomState
.
available
)
switch
(
this
)
{
return
StatusMode
.
available
;
case
available:
else
if
(
this
==
RoomState
.
occupation
)
return
StatusMode
.
available
;
return
StatusMode
.
connection
;
case
occupation:
else
if
(
this
==
RoomState
.
joining
)
case
joining:
return
StatusMode
.
connection
;
case
creating:
else
if
(
this
==
RoomState
.
creating
)
case
waiting:
return
StatusMode
.
connection
;
return
StatusMode
.
connection
;
else
if
(
this
==
RoomState
.
unavailable
)
case
unavailable:
return
StatusMode
.
unavailable
;
return
StatusMode
.
unavailable
;
else
if
(
this
==
RoomState
.
waiting
)
case
error:
return
StatusMode
.
connection
;
return
StatusMode
.
unsubscribed
;
else
if
(
this
==
RoomState
.
error
)
default
:
return
StatusMode
.
unsubscribed
;
throw
new
IllegalStateException
();
else
}
throw
new
IllegalStateException
();
}
}
/**
/**
* @return Connected is establish or connection is in progress.
* @return Connected is establish or connection is in progress.
*/
*/
boolean
inUse
()
{
boolean
inUse
()
{
return
this
==
RoomState
.
available
||
this
==
RoomState
.
occupation
switch
(
this
)
{
||
this
==
RoomState
.
creating
||
this
==
RoomState
.
joining
;
case
available:
case
occupation:
case
joining:
case
creating:
return
true
;
case
unavailable:
case
waiting:
case
error:
default
:
return
false
;
}
}
}
}
}
app/src/main/java/com/xabber/android/data/extension/muc/RoomTable.java
View file @
ccccd253
...
@@ -56,9 +56,8 @@ class RoomTable extends AbstractAccountTable {
...
@@ -56,9 +56,8 @@ class RoomTable extends AbstractAccountTable {
}
}
private
static
final
String
NAME
=
"rooms"
;
private
static
final
String
NAME
=
"rooms"
;
private
static
final
String
[]
PROJECTION
=
new
String
[]{
Fields
.
_ID
,
private
static
final
String
[]
PROJECTION
=
new
String
[]{
Fields
.
_ID
,
Fields
.
ACCOUNT
,
Fields
.
ROOM
,
Fields
.
NICKNAME
,
Fields
.
PASSWORD
,
Fields
.
ACCOUNT
,
Fields
.
ROOM
,
Fields
.
NICKNAME
,
Fields
.
PASSWORD
,
Fields
.
NEED_JOIN
};
Fields
.
NEED_JOIN
,};
private
final
DatabaseManager
databaseManager
;
private
final
DatabaseManager
databaseManager
;
private
SQLiteStatement
writeStatement
;
private
SQLiteStatement
writeStatement
;
...
@@ -123,20 +122,12 @@ class RoomTable extends AbstractAccountTable {
...
@@ -123,20 +122,12 @@ class RoomTable extends AbstractAccountTable {
/**
/**
* Adds or updates room.
* Adds or updates room.
*
* @param account
* @param room
* @param nickname
* @param password
* @param join
*/
*/
void
write
(
String
account
,
String
room
,
String
nickname
,
String
password
,
void
write
(
String
account
,
String
room
,
String
nickname
,
String
password
,
boolean
join
)
{
boolean
join
)
{
synchronized
(
writeLock
)
{
synchronized
(
writeLock
)
{
if
(
writeStatement
==
null
)
{
if
(
writeStatement
==
null
)
{
SQLiteDatabase
db
=
databaseManager
.
getWritableDatabase
();
SQLiteDatabase
db
=
databaseManager
.
getWritableDatabase
();
writeStatement
=
db
writeStatement
=
db
.
compileStatement
(
"INSERT OR REPLACE INTO "
+
NAME
.
compileStatement
(
"INSERT OR REPLACE INTO "
+
NAME
+
" ("
+
Fields
.
ACCOUNT
+
", "
+
Fields
.
ROOM
+
" ("
+
Fields
.
ACCOUNT
+
", "
+
Fields
.
ROOM
+
", "
+
Fields
.
NICKNAME
+
", "
+
", "
+
Fields
.
NICKNAME
+
", "
+
Fields
.
PASSWORD
+
", "
+
Fields
.
NEED_JOIN
+
Fields
.
PASSWORD
+
", "
+
Fields
.
NEED_JOIN
...
@@ -153,14 +144,10 @@ class RoomTable extends AbstractAccountTable {
...
@@ -153,14 +144,10 @@ class RoomTable extends AbstractAccountTable {
/**
/**
* Removes room.
* Removes room.
*
* @param account
* @param room
*/
*/
void
remove
(
String
account
,
String
room
)
{
void
remove
(
String
account
,
String
room
)
{
SQLiteDatabase
db
=
databaseManager
.
getWritableDatabase
();
SQLiteDatabase
db
=
databaseManager
.
getWritableDatabase
();
db
.
delete
(
NAME
,
Fields
.
ACCOUNT
+
" = ? AND "
+
Fields
.
ROOM
+
" = ?"
,
db
.
delete
(
NAME
,
Fields
.
ACCOUNT
+
" = ? AND "
+
Fields
.
ROOM
+
" = ?"
,
new
String
[]{
account
,
room
});
new
String
[]{
account
,
room
});
}
}
@Override
@Override
...
...
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