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
05c4fcb0
Unverified
Commit
05c4fcb0
authored
Dec 26, 2017
by
Leonardo Aramaki
Committed by
GitHub
Dec 26, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into patch-5
parents
da33e61f
fcc9a2a5
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
376 additions
and
162 deletions
+376
-162
RocketChatCache.kt
app/src/main/java/chat/rocket/android/RocketChatCache.kt
+19
-0
RestApiHelper.kt
...c/main/java/chat/rocket/android/api/rest/RestApiHelper.kt
+53
-0
UserRegistrationDialogFragment.java
...ragment/server_config/UserRegistrationDialogFragment.java
+165
-110
GcmPushHelper.kt
...c/main/java/chat/rocket/android/push/gcm/GcmPushHelper.kt
+38
-0
RocketChatWebSocketThread.java
...hat/rocket/android/service/RocketChatWebSocketThread.java
+2
-2
CurrentUserObserver.java
.../rocket/android/service/observer/CurrentUserObserver.java
+5
-0
GcmPushRegistrationObserver.java
...android/service/observer/GcmPushRegistrationObserver.java
+60
-50
RocketChatMessageAttachmentsLayout.java
...id/widget/message/RocketChatMessageAttachmentsLayout.java
+2
-0
slide_in_left.xml
...-chat-android-widgets/src/main/res/anim/slide_in_left.xml
+8
-0
slide_in_right.xml
...chat-android-widgets/src/main/res/anim/slide_in_right.xml
+8
-0
slide_out_left.xml
...chat-android-widgets/src/main/res/anim/slide_out_left.xml
+8
-0
slide_out_right.xml
...hat-android-widgets/src/main/res/anim/slide_out_right.xml
+8
-0
No files found.
app/src/main/java/chat/rocket/android/RocketChatCache.kt
View file @
05c4fcb0
...
@@ -25,6 +25,9 @@ object RocketChatCache {
...
@@ -25,6 +25,9 @@ object RocketChatCache {
private
val
KEY_HOSTNAME_LIST
=
"KEY_HOSTNAME_LIST"
private
val
KEY_HOSTNAME_LIST
=
"KEY_HOSTNAME_LIST"
private
val
KEY_OPENED_ROOMS
=
"KEY_OPENED_ROOMS"
private
val
KEY_OPENED_ROOMS
=
"KEY_OPENED_ROOMS"
private
val
KEY_SESSION_TOKEN
=
"KEY_SESSION_TOKEN"
private
val
KEY_SESSION_TOKEN
=
"KEY_SESSION_TOKEN"
private
val
KEY_USER_ID
=
"KEY_USER_ID"
private
val
KEY_USER_NAME
=
"KEY_USER_NAME"
private
val
KEY_USER_USERNAME
=
"KEY_USER_USERNAME"
private
lateinit
var
sharedPreferences
:
SharedPreferences
private
lateinit
var
sharedPreferences
:
SharedPreferences
...
@@ -404,4 +407,20 @@ object RocketChatCache {
...
@@ -404,4 +407,20 @@ object RocketChatCache {
sharedPreferences
.
registerOnSharedPreferenceChangeListener
(
listener
)
sharedPreferences
.
registerOnSharedPreferenceChangeListener
(
listener
)
},
BackpressureStrategy
.
LATEST
)
},
BackpressureStrategy
.
LATEST
)
}
}
fun
setUserId
(
userId
:
String
)
=
setString
(
KEY_USER_ID
,
userId
)
fun
getUserId
():
String
?
=
getString
(
KEY_USER_ID
,
null
)
fun
setUserName
(
name
:
String
?)
{
name
?.
let
{
setString
(
KEY_USER_NAME
,
name
)
}
}
fun
getUserName
():
String
?
=
getString
(
KEY_USER_NAME
,
null
)
fun
setUserUsername
(
username
:
String
)
=
setString
(
KEY_USER_USERNAME
,
username
)
fun
getUserUsername
():
String
?
=
getString
(
KEY_USER_USERNAME
,
null
)
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/api/rest/RestApiHelper.kt
View file @
05c4fcb0
package
chat.rocket.android.api.rest
package
chat.rocket.android.api.rest
import
chat.rocket.android.R
import
chat.rocket.android.RocketChatApplication
import
chat.rocket.android.helper.UrlHelper
import
chat.rocket.android.helper.UrlHelper
import
chat.rocket.android.push.gcm.GcmPushHelper
import
chat.rocket.core.models.Room
import
chat.rocket.core.models.Room
import
com.google.android.gms.gcm.GoogleCloudMessaging
import
com.google.android.gms.iid.InstanceID
import
okhttp3.HttpUrl
import
okhttp3.HttpUrl
import
okhttp3.MediaType
import
okhttp3.Request
import
okhttp3.Request
import
okhttp3.RequestBody
import
org.json.JSONObject
import
java.io.IOException
/**
/**
* Helper class for dealing with Rest API calls.
* Helper class for dealing with Rest API calls.
...
@@ -139,6 +148,30 @@ object RestApiHelper {
...
@@ -139,6 +148,30 @@ object RestApiHelper {
.
build
()
.
build
()
}
}
fun
getRequestForPushTokenRegistration
(
hostname
:
String
,
token
:
String
,
userId
:
String
):
Request
{
val
parsedHttpUrl
=
HttpUrl
.
parse
(
getEndpointUrlForPushToken
(
hostname
))
?.
newBuilder
()
?.
build
()
val
json
=
JSONObject
()
.
put
(
"type"
,
"gcm"
)
.
put
(
"appName"
,
"main"
)
.
put
(
"value"
,
GcmPushHelper
.
getGcmToken
())
val
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
json
.
toString
())
return
Request
.
Builder
()
.
url
(
parsedHttpUrl
)
.
post
(
requestBody
)
.
addHeader
(
"X-Auth-Token"
,
token
)
.
addHeader
(
"X-User-Id"
,
userId
)
.
addHeader
(
"Content-Type"
,
"application/json"
)
.
build
()
}
/**
/**
* Returns a Rest API endpoint URL for favorite or pinned messages accordingly with the room type and the server hostname.
* Returns a Rest API endpoint URL for favorite or pinned messages accordingly with the room type and the server hostname.
*
*
...
@@ -169,6 +202,9 @@ object RestApiHelper {
...
@@ -169,6 +202,9 @@ object RestApiHelper {
fun
getEndpointUrlForMemberList
(
roomType
:
String
,
hostname
:
String
):
String
=
fun
getEndpointUrlForMemberList
(
roomType
:
String
,
hostname
:
String
):
String
=
UrlHelper
.
getSafeHostname
(
hostname
)
+
getRestApiUrlForMemberList
(
roomType
)
UrlHelper
.
getSafeHostname
(
hostname
)
+
getRestApiUrlForMemberList
(
roomType
)
fun
getEndpointUrlForPushToken
(
hostname
:
String
):
String
=
UrlHelper
.
getSafeHostname
(
hostname
)
+
getRestApiUrlForPushToken
()
/**
/**
* Returns the correspondent Rest API URL accordingly with the room type to get its favorite or pinned messages.
* Returns the correspondent Rest API URL accordingly with the room type to get its favorite or pinned messages.
*
*
...
@@ -216,4 +252,21 @@ object RestApiHelper {
...
@@ -216,4 +252,21 @@ object RestApiHelper {
}
}
return
restApiUrl
return
restApiUrl
}
}
/**
* Returns the correspondent Rest API URL for registration/deletion of Gcm Registration token.
*/
fun
getRestApiUrlForPushToken
():
String
{
return
"/api/v1/push.token"
}
@Throws
(
IOException
::
class
)
private
fun
getGcmToken
(
senderId
:
String
):
String
{
return
InstanceID
.
getInstance
(
RocketChatApplication
.
getInstance
())
.
getToken
(
senderId
,
GoogleCloudMessaging
.
INSTANCE_ID_SCOPE
,
null
)
}
private
fun
getSenderId
():
String
{
return
RocketChatApplication
.
getInstance
().
getString
(
R
.
string
.
gcm_sender_id
)
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/fragment/server_config/UserRegistrationDialogFragment.java
View file @
05c4fcb0
...
@@ -4,14 +4,17 @@ import android.app.Dialog;
...
@@ -4,14 +4,17 @@ import android.app.Dialog;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.support.design.widget.TextInputEditText
;
import
android.support.design.widget.TextInputLayout
;
import
android.support.v4.app.DialogFragment
;
import
android.support.v4.app.DialogFragment
;
import
android.support.v7.app.AlertDialog
;
import
android.support.v7.app.AlertDialog
;
import
android.util.Patterns
;
import
android.util.Patterns
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.jakewharton.rxbinding2.widget.RxTextView
;
import
chat.rocket.android.R
;
import
chat.rocket.android.R
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.helper.TextUtils
;
import
chat.rocket.android.helper.TextUtils
;
...
@@ -24,7 +27,13 @@ public class UserRegistrationDialogFragment extends DialogFragment {
...
@@ -24,7 +27,13 @@ public class UserRegistrationDialogFragment extends DialogFragment {
private
String
username
;
private
String
username
;
private
String
email
;
private
String
email
;
private
String
password
;
private
String
password
;
private
TextInputEditText
txtUsername
;
private
TextInputEditText
txtEmail
;
private
TextInputEditText
txtPasswd
;
private
TextInputLayout
textInputUsername
;
private
TextInputLayout
textInputEmail
;
private
TextInputLayout
textInputPassword
;
private
View
waitingView
;
public
UserRegistrationDialogFragment
()
{
public
UserRegistrationDialogFragment
()
{
super
();
super
();
}
}
...
@@ -88,9 +97,8 @@ public class UserRegistrationDialogFragment extends DialogFragment {
...
@@ -88,9 +97,8 @@ public class UserRegistrationDialogFragment extends DialogFragment {
View
dialog
=
LayoutInflater
.
from
(
getContext
())
View
dialog
=
LayoutInflater
.
from
(
getContext
())
.
inflate
(
R
.
layout
.
dialog_user_registration
,
null
,
false
);
.
inflate
(
R
.
layout
.
dialog_user_registration
,
null
,
false
);
final
TextView
txtUsername
=
(
TextView
)
dialog
.
findViewById
(
R
.
id
.
editor_username
);
initViews
(
dialog
);
final
TextView
txtEmail
=
(
TextView
)
dialog
.
findViewById
(
R
.
id
.
editor_email
);
setUpRxBinders
();
final
TextView
txtPasswd
=
(
TextView
)
dialog
.
findViewById
(
R
.
id
.
editor_passwd
);
if
(!
TextUtils
.
isEmpty
(
username
))
{
if
(!
TextUtils
.
isEmpty
(
username
))
{
txtUsername
.
setText
(
username
);
txtUsername
.
setText
(
username
);
...
@@ -102,17 +110,19 @@ public class UserRegistrationDialogFragment extends DialogFragment {
...
@@ -102,17 +110,19 @@ public class UserRegistrationDialogFragment extends DialogFragment {
txtPasswd
.
setText
(
password
);
txtPasswd
.
setText
(
password
);
}
}
final
View
waitingView
=
dialog
.
findViewById
(
R
.
id
.
waiting
);
waitingView
.
setVisibility
(
View
.
GONE
);
waitingView
.
setVisibility
(
View
.
GONE
);
dialog
.
findViewById
(
R
.
id
.
btn_register_user
).
setOnClickListener
(
view
->
{
dialog
.
findViewById
(
R
.
id
.
btn_register_user
).
setOnClickListener
(
registerButton
->
{
view
.
setEnabled
(
false
);
if
(
checkIfEditTextsEmpty
())
return
;
registerButton
.
setEnabled
(
false
);
registerButton
.
setAlpha
(
0.5f
);
waitingView
.
setVisibility
(
View
.
VISIBLE
);
waitingView
.
setVisibility
(
View
.
VISIBLE
);
username
=
txtUsername
.
getText
().
toString
();
username
=
txtUsername
.
getText
().
toString
();
email
=
txtEmail
.
getText
().
toString
();
email
=
txtEmail
.
getText
().
toString
();
password
=
txtPasswd
.
getText
().
toString
();
password
=
txtPasswd
.
getText
().
toString
();
MethodCallHelper
methodCallHelper
=
new
MethodCallHelper
(
getContext
(),
hostname
);
MethodCallHelper
methodCallHelper
=
new
MethodCallHelper
(
getContext
(),
hostname
);
methodCallHelper
.
registerUser
(
username
,
email
,
password
,
password
)
methodCallHelper
.
registerUser
(
username
,
email
,
password
,
password
)
.
onSuccessTask
(
task
->
methodCallHelper
.
loginWithEmail
(
email
,
password
))
.
onSuccessTask
(
task
->
methodCallHelper
.
loginWithEmail
(
email
,
password
))
...
@@ -126,7 +136,7 @@ public class UserRegistrationDialogFragment extends DialogFragment {
...
@@ -126,7 +136,7 @@ public class UserRegistrationDialogFragment extends DialogFragment {
if
(
task
.
isFaulted
())
{
if
(
task
.
isFaulted
())
{
Exception
exception
=
task
.
getError
();
Exception
exception
=
task
.
getError
();
showError
(
exception
.
getMessage
());
showError
(
exception
.
getMessage
());
view
.
setEnabled
(
true
);
registerButton
.
setEnabled
(
true
);
waitingView
.
setVisibility
(
View
.
GONE
);
waitingView
.
setVisibility
(
View
.
GONE
);
}
}
return
null
;
return
null
;
...
@@ -135,6 +145,51 @@ public class UserRegistrationDialogFragment extends DialogFragment {
...
@@ -135,6 +145,51 @@ public class UserRegistrationDialogFragment extends DialogFragment {
return
dialog
;
return
dialog
;
}
}
private
void
initViews
(
View
dialog
)
{
txtUsername
=
dialog
.
findViewById
(
R
.
id
.
editor_username
);
txtEmail
=
dialog
.
findViewById
(
R
.
id
.
editor_email
);
txtPasswd
=
dialog
.
findViewById
(
R
.
id
.
editor_passwd
);
textInputEmail
=
dialog
.
findViewById
(
R
.
id
.
text_input_email
);
textInputUsername
=
dialog
.
findViewById
(
R
.
id
.
text_input_username
);
textInputPassword
=
dialog
.
findViewById
(
R
.
id
.
text_input_passwd
);
waitingView
=
dialog
.
findViewById
(
R
.
id
.
waiting
);
}
private
boolean
checkIfEditTextsEmpty
()
{
boolean
check
=
false
;
if
(
TextUtils
.
isEmpty
(
txtEmail
.
getText
().
toString
()))
{
textInputEmail
.
setError
(
"Enter an email address"
);
textInputEmail
.
setErrorEnabled
(
true
);
check
=
true
;
}
if
(
TextUtils
.
isEmpty
(
txtUsername
.
getText
().
toString
()))
{
textInputUsername
.
setError
(
"Enter a username"
);
textInputUsername
.
setErrorEnabled
(
true
);
check
=
true
;
}
if
(
TextUtils
.
isEmpty
(
txtPasswd
.
getText
().
toString
()))
{
textInputPassword
.
setError
(
"Enter a password"
);
textInputPassword
.
setErrorEnabled
(
true
);
check
=
true
;
}
return
check
;
}
private
void
setUpRxBinders
()
{
RxTextView
.
textChanges
(
txtUsername
).
subscribe
(
text
->
{
if
(!
TextUtils
.
isEmpty
(
text
)
&&
textInputUsername
.
isErrorEnabled
())
textInputUsername
.
setErrorEnabled
(
false
);
});
RxTextView
.
textChanges
(
txtEmail
).
subscribe
(
text
->
{
if
(!
TextUtils
.
isEmpty
(
text
)
&&
textInputEmail
.
isErrorEnabled
())
textInputEmail
.
setErrorEnabled
(
false
);
});
RxTextView
.
textChanges
(
txtPasswd
).
subscribe
(
text
->
{
if
(!
TextUtils
.
isEmpty
(
text
)
&&
textInputPassword
.
isErrorEnabled
())
textInputPassword
.
setErrorEnabled
(
false
);
});
}
private
void
showError
(
String
errMessage
)
{
private
void
showError
(
String
errMessage
)
{
Toast
.
makeText
(
getContext
(),
errMessage
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
getContext
(),
errMessage
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
...
...
app/src/main/java/chat/rocket/android/push/gcm/GcmPushHelper.kt
0 → 100644
View file @
05c4fcb0
package
chat.rocket.android.push.gcm
import
bolts.Task
import
chat.rocket.android.R
import
chat.rocket.android.RocketChatApplication
import
chat.rocket.android.RocketChatCache
import
chat.rocket.android.api.RaixPushHelper
import
chat.rocket.persistence.realm.RealmHelper
import
chat.rocket.persistence.realm.models.ddp.RealmUser
import
com.google.android.gms.gcm.GoogleCloudMessaging
import
com.google.android.gms.iid.InstanceID
import
java.io.IOException
object
GcmPushHelper
{
fun
getGcmToken
():
String
?
=
getGcmToken
(
getSenderId
())
@Throws
(
IOException
::
class
)
private
fun
registerGcmTokenForServer
(
realmHelper
:
RealmHelper
):
Task
<
Void
>
{
val
gcmToken
=
getGcmToken
(
getSenderId
())
val
currentUser
=
realmHelper
.
executeTransactionForRead
({
realm
->
RealmUser
.
queryCurrentUser
(
realm
).
findFirst
()
})
val
userId
=
if
(
currentUser
!=
null
)
currentUser
.
getId
()
else
null
val
pushId
=
RocketChatCache
.
getOrCreatePushId
()
return
RaixPushHelper
(
realmHelper
)
.
pushUpdate
(
pushId
!!
,
gcmToken
,
userId
)
}
@Throws
(
IOException
::
class
)
private
fun
getGcmToken
(
senderId
:
String
):
String
{
return
InstanceID
.
getInstance
(
RocketChatApplication
.
getInstance
())
.
getToken
(
senderId
,
GoogleCloudMessaging
.
INSTANCE_ID_SCOPE
,
null
)
}
private
fun
getSenderId
():
String
{
return
RocketChatApplication
.
getInstance
().
getString
(
R
.
string
.
gcm_sender_id
)
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/service/RocketChatWebSocketThread.java
View file @
05c4fcb0
...
@@ -70,10 +70,10 @@ public class RocketChatWebSocketThread extends HandlerThread {
...
@@ -70,10 +70,10 @@ public class RocketChatWebSocketThread extends HandlerThread {
private
final
String
hostname
;
private
final
String
hostname
;
private
final
RealmHelper
realmHelper
;
private
final
RealmHelper
realmHelper
;
private
final
ConnectivityManagerInternal
connectivityManager
;
private
final
ConnectivityManagerInternal
connectivityManager
;
private
final
ArrayList
<
Registrable
>
listeners
=
new
ArrayList
<>();
private
volatile
ArrayList
<
Registrable
>
listeners
=
new
ArrayList
<>();
private
final
CompositeDisposable
heartbeatDisposable
=
new
CompositeDisposable
();
private
final
CompositeDisposable
heartbeatDisposable
=
new
CompositeDisposable
();
private
final
CompositeDisposable
reconnectDisposable
=
new
CompositeDisposable
();
private
final
CompositeDisposable
reconnectDisposable
=
new
CompositeDisposable
();
private
boolean
listenersRegistered
;
private
volatile
boolean
listenersRegistered
;
private
RocketChatWebSocketThread
(
Context
appContext
,
String
hostname
)
{
private
RocketChatWebSocketThread
(
Context
appContext
,
String
hostname
)
{
super
(
"RC_thread_"
+
hostname
);
super
(
"RC_thread_"
+
hostname
);
...
...
app/src/main/java/chat/rocket/android/service/observer/CurrentUserObserver.java
View file @
05c4fcb0
...
@@ -5,6 +5,7 @@ import android.content.Context;
...
@@ -5,6 +5,7 @@ import android.content.Context;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.helper.LogIfError
;
import
chat.rocket.android.helper.LogIfError
;
import
chat.rocket.android.service.Registrable
;
import
chat.rocket.android.service.Registrable
;
...
@@ -56,6 +57,10 @@ public class CurrentUserObserver extends AbstractModelObserver<RealmUser> {
...
@@ -56,6 +57,10 @@ public class CurrentUserObserver extends AbstractModelObserver<RealmUser> {
}
}
listeners
=
new
ArrayList
<>();
listeners
=
new
ArrayList
<>();
RocketChatCache
.
INSTANCE
.
setUserId
(
user
.
getId
());
RocketChatCache
.
INSTANCE
.
setUserUsername
(
user
.
getUsername
());
RocketChatCache
.
INSTANCE
.
setUserName
(
user
.
getName
());
final
String
userId
=
user
.
getId
();
final
String
userId
=
user
.
getId
();
// get and observe Room subscriptions.
// get and observe Room subscriptions.
...
...
app/src/main/java/chat/rocket/android/service/observer/GcmPushRegistrationObserver.java
View file @
05c4fcb0
...
@@ -13,6 +13,7 @@ import chat.rocket.android.R;
...
@@ -13,6 +13,7 @@ import chat.rocket.android.R;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.api.RaixPushHelper
;
import
chat.rocket.android.api.RaixPushHelper
;
import
chat.rocket.android.helper.LogIfError
;
import
chat.rocket.android.helper.LogIfError
;
import
chat.rocket.android.push.gcm.GcmPushHelper
;
import
chat.rocket.core.SyncState
;
import
chat.rocket.core.SyncState
;
import
chat.rocket.persistence.realm.RealmHelper
;
import
chat.rocket.persistence.realm.RealmHelper
;
import
chat.rocket.persistence.realm.models.ddp.RealmUser
;
import
chat.rocket.persistence.realm.models.ddp.RealmUser
;
...
@@ -24,6 +25,7 @@ import io.realm.RealmResults;
...
@@ -24,6 +25,7 @@ import io.realm.RealmResults;
* call raix:push-update if needed.
* call raix:push-update if needed.
*/
*/
public
class
GcmPushRegistrationObserver
extends
AbstractModelObserver
<
GcmPushRegistration
>
{
public
class
GcmPushRegistrationObserver
extends
AbstractModelObserver
<
GcmPushRegistration
>
{
public
GcmPushRegistrationObserver
(
Context
context
,
String
hostname
,
public
GcmPushRegistrationObserver
(
Context
context
,
String
hostname
,
RealmHelper
realmHelper
)
{
RealmHelper
realmHelper
)
{
super
(
context
,
hostname
,
realmHelper
);
super
(
context
,
hostname
,
realmHelper
);
...
@@ -39,11 +41,19 @@ public class GcmPushRegistrationObserver extends AbstractModelObserver<GcmPushRe
...
@@ -39,11 +41,19 @@ public class GcmPushRegistrationObserver extends AbstractModelObserver<GcmPushRe
@Override
@Override
public
void
onUpdateResults
(
List
<
GcmPushRegistration
>
results
)
{
public
void
onUpdateResults
(
List
<
GcmPushRegistration
>
results
)
{
if
(
results
.
isEmpty
())
{
String
gcmToken
=
GcmPushHelper
.
INSTANCE
.
getGcmToken
();
return
;
if
(
gcmToken
!=
null
&&
!
gcmToken
.
isEmpty
())
{
// We already have gcm token, so try to register it.
try
{
tryToRegisterToken
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
realmHelper
.
executeTransaction
(
realm
->
{
private
Task
<
Void
>
tryToRegisterToken
()
{
return
realmHelper
.
executeTransaction
(
realm
->
{
GcmPushRegistration
.
queryDefault
(
realm
).
findFirst
().
setSyncState
(
SyncState
.
SYNCING
);
GcmPushRegistration
.
queryDefault
(
realm
).
findFirst
().
setSyncState
(
SyncState
.
SYNCING
);
return
null
;
return
null
;
}).
onSuccessTask
(
_task
->
registerGcmTokenForServer
()
}).
onSuccessTask
(
_task
->
registerGcmTokenForServer
()
...
...
rocket-chat-android-widgets/src/main/java/chat/rocket/android/widget/message/RocketChatMessageAttachmentsLayout.java
View file @
05c4fcb0
...
@@ -173,6 +173,8 @@ public class RocketChatMessageAttachmentsLayout extends LinearLayout {
...
@@ -173,6 +173,8 @@ public class RocketChatMessageAttachmentsLayout extends LinearLayout {
public
void
onClick
(
View
view
)
{
public
void
onClick
(
View
view
)
{
new
CustomTabsIntent
.
Builder
()
new
CustomTabsIntent
.
Builder
()
.
setToolbarColor
(
ContextCompat
.
getColor
(
getContext
(),
R
.
color
.
colorPrimary
))
.
setToolbarColor
(
ContextCompat
.
getColor
(
getContext
(),
R
.
color
.
colorPrimary
))
.
setStartAnimations
(
getContext
(),
R
.
anim
.
slide_in_right
,
R
.
anim
.
slide_out_left
)
.
setExitAnimations
(
getContext
(),
R
.
anim
.
slide_in_left
,
R
.
anim
.
slide_out_right
)
.
build
()
.
build
()
.
launchUrl
(
getContext
(),
Uri
.
parse
(
link
));
.
launchUrl
(
getContext
(),
Uri
.
parse
(
link
));
}
}
...
...
rocket-chat-android-widgets/src/main/res/anim/slide_in_left.xml
0 → 100644
View file @
05c4fcb0
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
android:fromXDelta=
"-100%p"
android:toXDelta=
"0"
android:duration=
"@android:integer/config_mediumAnimTime"
/>
</set>
\ No newline at end of file
rocket-chat-android-widgets/src/main/res/anim/slide_in_right.xml
0 → 100644
View file @
05c4fcb0
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
android:fromXDelta=
"100%p"
android:toXDelta=
"0"
android:duration=
"@android:integer/config_mediumAnimTime"
/>
</set>
\ No newline at end of file
rocket-chat-android-widgets/src/main/res/anim/slide_out_left.xml
0 → 100644
View file @
05c4fcb0
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
android:fromXDelta=
"0"
android:toXDelta=
"-100%p"
android:duration=
"@android:integer/config_mediumAnimTime"
/>
</set>
\ No newline at end of file
rocket-chat-android-widgets/src/main/res/anim/slide_out_right.xml
0 → 100644
View file @
05c4fcb0
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
android:fromXDelta=
"0"
android:toXDelta=
"100%p"
android:duration=
"@android:integer/config_mediumAnimTime"
/>
</set>
\ No newline at end of file
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