Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-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
AloqaIM-Android
Commits
6dd32a92
Commit
6dd32a92
authored
Nov 10, 2016
by
Yusuke Iwaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
call rooms/get on login.
parent
3ad85083
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
134 additions
and
6 deletions
+134
-6
MethodCallHelper.java
...ain/java/chat/rocket/android/helper/MethodCallHelper.java
+39
-5
Room.java
app/src/main/java/chat/rocket/android/model/Room.java
+17
-0
User.java
app/src/main/java/chat/rocket/android/model/User.java
+13
-0
RocketChatWebSocketThread.java
...hat/rocket/android/service/RocketChatWebSocketThread.java
+3
-1
SessionObserver.java
...chat/rocket/android/service/observer/SessionObserver.java
+62
-0
No files found.
app/src/main/java/chat/rocket/android/helper/MethodCallHelper.java
View file @
6dd32a92
...
@@ -4,10 +4,12 @@ import android.util.Patterns;
...
@@ -4,10 +4,12 @@ import android.util.Patterns;
import
bolts.Continuation
;
import
bolts.Continuation
;
import
bolts.Task
;
import
bolts.Task
;
import
chat.rocket.android.model.MethodCall
;
import
chat.rocket.android.model.MethodCall
;
import
chat.rocket.android.model.Room
;
import
chat.rocket.android.model.ServerConfig
;
import
chat.rocket.android.model.ServerConfig
;
import
chat.rocket.android.ws.RocketChatWebSocketAPI
;
import
chat.rocket.android.ws.RocketChatWebSocketAPI
;
import
java.util.UUID
;
import
java.util.UUID
;
import
jp.co.crowdworks.realm_java_helpers_bolts.RealmHelperBolts
;
import
jp.co.crowdworks.realm_java_helpers_bolts.RealmHelperBolts
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
org.json.JSONObject
;
...
@@ -91,8 +93,8 @@ public class MethodCallHelper {
...
@@ -91,8 +93,8 @@ public class MethodCallHelper {
task
->
Task
.
forResult
(
null
));
// nothing to do.
task
->
Task
.
forResult
(
null
));
// nothing to do.
}
}
private
Continuation
<
String
,
Task
<
Void
>>
saveToken
(
)
{
private
Task
<
Void
>
saveToken
(
Task
<
String
>
task
)
{
return
task
->
RealmHelperBolts
.
executeTransaction
(
realm
->
return
RealmHelperBolts
.
executeTransaction
(
realm
->
realm
.
createOrUpdateObjectFromJson
(
ServerConfig
.
class
,
new
JSONObject
()
realm
.
createOrUpdateObjectFromJson
(
ServerConfig
.
class
,
new
JSONObject
()
.
put
(
"id"
,
serverConfigId
)
.
put
(
"id"
,
serverConfigId
)
.
put
(
"token"
,
task
.
getResult
())
.
put
(
"token"
,
task
.
getResult
())
...
@@ -112,7 +114,7 @@ public class MethodCallHelper {
...
@@ -112,7 +114,7 @@ public class MethodCallHelper {
param
.
put
(
"password"
,
new
JSONObject
()
param
.
put
(
"password"
,
new
JSONObject
()
.
put
(
"digest"
,
CheckSum
.
sha256
(
password
))
.
put
(
"digest"
,
CheckSum
.
sha256
(
password
))
.
put
(
"algorithm"
,
"sha-256"
));
.
put
(
"algorithm"
,
"sha-256"
));
},
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
saveToken
()
);
},
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
this
::
saveToken
);
}
}
/**
/**
...
@@ -124,7 +126,7 @@ public class MethodCallHelper {
...
@@ -124,7 +126,7 @@ public class MethodCallHelper {
.
put
(
"oauth"
,
new
JSONObject
()
.
put
(
"oauth"
,
new
JSONObject
()
.
put
(
"credentialToken"
,
credentialToken
)
.
put
(
"credentialToken"
,
credentialToken
)
.
put
(
"credentialSecret"
,
credentialSecret
)),
.
put
(
"credentialSecret"
,
credentialSecret
)),
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
saveToken
()
);
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
this
::
saveToken
);
}
}
/**
/**
...
@@ -132,7 +134,7 @@ public class MethodCallHelper {
...
@@ -132,7 +134,7 @@ public class MethodCallHelper {
*/
*/
public
Task
<
Void
>
loginWithToken
(
final
String
token
)
{
public
Task
<
Void
>
loginWithToken
(
final
String
token
)
{
return
call
(
"login"
,
param
->
param
.
put
(
"resume"
,
token
),
return
call
(
"login"
,
param
->
param
.
put
(
"resume"
,
token
),
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
saveToken
()
);
task
->
Task
.
forResult
(
task
.
getResult
().
getString
(
"token"
))).
onSuccessTask
(
this
::
saveToken
);
}
}
/**
/**
...
@@ -141,4 +143,36 @@ public class MethodCallHelper {
...
@@ -141,4 +143,36 @@ public class MethodCallHelper {
public
Task
<
Void
>
logout
()
{
public
Task
<
Void
>
logout
()
{
return
call
(
"logout"
,
task
->
Task
.
forResult
(
null
));
return
call
(
"logout"
,
task
->
Task
.
forResult
(
null
));
}
}
/**
* request "rooms/get".
*/
public
Task
<
Void
>
getRooms
()
{
return
call
(
"rooms/get"
,
param
->
param
.
put
(
"$date"
,
0
),
this
::
updateRooms
);
}
private
Task
<
Void
>
updateRooms
(
Task
<
JSONObject
>
task
)
{
JSONObject
result
=
task
.
getResult
();
try
{
JSONArray
updatedRooms
=
result
.
getJSONArray
(
"update"
);
for
(
int
i
=
0
;
i
<
updatedRooms
.
length
();
i
++)
{
updatedRooms
.
getJSONObject
(
i
).
put
(
"serverConfigId"
,
serverConfigId
);
}
return
RealmHelperBolts
.
executeTransaction
(
realm
->
{
realm
.
createOrUpdateAllFromJson
(
Room
.
class
,
result
.
getJSONArray
(
"update"
));
JSONArray
removedRooms
=
result
.
getJSONArray
(
"remove"
);
for
(
int
i
=
0
;
i
<
removedRooms
.
length
();
i
++)
{
realm
.
where
(
Room
.
class
)
.
equalTo
(
"serverConfigId"
,
serverConfigId
)
.
equalTo
(
"_id"
,
removedRooms
.
getJSONObject
(
i
).
getString
(
"_id"
))
.
findAll
().
deleteAllFromRealm
();
}
return
null
;
});
}
catch
(
JSONException
exception
)
{
return
Task
.
forError
(
exception
);
}
}
}
}
app/src/main/java/chat/rocket/android/model/Room.java
0 → 100644
View file @
6dd32a92
package
chat
.
rocket
.
android
.
model
;
import
io.realm.RealmObject
;
import
io.realm.annotations.PrimaryKey
;
/**
* Chat Room.
*/
@SuppressWarnings
(
"PMD.ShortVariable"
)
public
class
Room
extends
RealmObject
{
@PrimaryKey
private
String
_id
;
private
String
serverConfigId
;
private
String
name
;
private
String
t
;
//type { c: channel, d: direct message, p: private }
private
User
u
;
//User who created this room.
private
String
topic
;
}
app/src/main/java/chat/rocket/android/model/User.java
0 → 100644
View file @
6dd32a92
package
chat
.
rocket
.
android
.
model
;
import
io.realm.RealmObject
;
import
io.realm.annotations.PrimaryKey
;
/**
* User.
*/
@SuppressWarnings
(
"PMD.ShortVariable"
)
public
class
User
extends
RealmObject
{
@PrimaryKey
private
String
_id
;
private
String
username
;
}
app/src/main/java/chat/rocket/android/service/RocketChatWebSocketThread.java
View file @
6dd32a92
...
@@ -11,6 +11,7 @@ import chat.rocket.android.helper.TextUtils;
...
@@ -11,6 +11,7 @@ import chat.rocket.android.helper.TextUtils;
import
chat.rocket.android.model.ServerConfig
;
import
chat.rocket.android.model.ServerConfig
;
import
chat.rocket.android.service.ddp_subscriber.LoginServiceConfigurationSubscriber
;
import
chat.rocket.android.service.ddp_subscriber.LoginServiceConfigurationSubscriber
;
import
chat.rocket.android.service.observer.MethodCallObserver
;
import
chat.rocket.android.service.observer.MethodCallObserver
;
import
chat.rocket.android.service.observer.SessionObserver
;
import
chat.rocket.android.service.observer.TokenLoginObserver
;
import
chat.rocket.android.service.observer.TokenLoginObserver
;
import
chat.rocket.android.ws.RocketChatWebSocketAPI
;
import
chat.rocket.android.ws.RocketChatWebSocketAPI
;
import
chat.rocket.android_ddp.DDPClientCallback
;
import
chat.rocket.android_ddp.DDPClientCallback
;
...
@@ -30,7 +31,8 @@ public class RocketChatWebSocketThread extends HandlerThread {
...
@@ -30,7 +31,8 @@ public class RocketChatWebSocketThread extends HandlerThread {
private
static
final
Class
[]
REGISTERABLE_CLASSES
=
{
private
static
final
Class
[]
REGISTERABLE_CLASSES
=
{
LoginServiceConfigurationSubscriber
.
class
,
LoginServiceConfigurationSubscriber
.
class
,
TokenLoginObserver
.
class
,
TokenLoginObserver
.
class
,
MethodCallObserver
.
class
MethodCallObserver
.
class
,
SessionObserver
.
class
};
};
private
final
Context
appContext
;
private
final
Context
appContext
;
private
final
String
serverConfigId
;
private
final
String
serverConfigId
;
...
...
app/src/main/java/chat/rocket/android/service/observer/SessionObserver.java
0 → 100644
View file @
6dd32a92
package
chat
.
rocket
.
android
.
service
.
observer
;
import
android.content.Context
;
import
chat.rocket.android.helper.LogcatIfError
;
import
chat.rocket.android.helper.MethodCallHelper
;
import
chat.rocket.android.model.ServerConfig
;
import
chat.rocket.android.ws.RocketChatWebSocketAPI
;
import
hugo.weaving.DebugLog
;
import
io.realm.Realm
;
import
io.realm.RealmResults
;
import
java.util.List
;
/**
* Observes user is logged into server.
*/
public
class
SessionObserver
extends
AbstractModelObserver
<
ServerConfig
>
{
private
int
count
;
public
SessionObserver
(
Context
context
,
String
serverConfigId
,
RocketChatWebSocketAPI
api
)
{
super
(
context
,
serverConfigId
,
api
);
count
=
0
;
}
@Override
protected
RealmResults
<
ServerConfig
>
queryItems
(
Realm
realm
)
{
return
realm
.
where
(
ServerConfig
.
class
)
.
equalTo
(
"id"
,
serverConfigId
)
.
isNotNull
(
"hostname"
)
.
isNull
(
"connectionError"
)
.
isNotNull
(
"session"
)
.
isNotNull
(
"token"
)
.
equalTo
(
"tokenVerified"
,
true
)
.
findAll
();
}
@Override
protected
void
onCollectionChanged
(
List
<
ServerConfig
>
list
)
{
int
origCount
=
count
;
count
=
list
.
size
();
if
(
origCount
>
0
&&
count
>
0
)
{
return
;
}
if
(
count
==
0
)
{
if
(
origCount
>
0
)
{
onLogout
();
}
return
;
}
if
(
origCount
==
0
&&
count
>
0
)
{
onLogin
();
}
}
@DebugLog
private
void
onLogin
()
{
new
MethodCallHelper
(
serverConfigId
).
getRooms
()
.
continueWith
(
new
LogcatIfError
());
}
@DebugLog
private
void
onLogout
()
{
}
}
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