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
92a70c60
Commit
92a70c60
authored
Dec 19, 2016
by
laggedHero
Committed by
GitHub
Dec 19, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #88 from RocketChat/feature/unread-mode
Feature/unread mode
parents
f91a845d
1880ace4
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
508 additions
and
327 deletions
+508
-327
build.gradle
android-ddp/build.gradle
+30
-30
build.gradle
app/build.gradle
+95
-95
RocketChatApplication.java
.../main/java/chat/rocket/android/RocketChatApplication.java
+1
-1
DDPClientWrapper.java
...c/main/java/chat/rocket/android/api/DDPClientWrapper.java
+5
-3
SidebarMainFragment.java
.../rocket/android/fragment/sidebar/SidebarMainFragment.java
+19
-4
RoomListManager.java
...rocket/android/layouthelper/chatroom/RoomListManager.java
+78
-37
Preferences.java
.../main/java/chat/rocket/android/model/ddp/Preferences.java
+87
-0
Settings.java
...src/main/java/chat/rocket/android/model/ddp/Settings.java
+16
-0
User.java
app/src/main/java/chat/rocket/android/model/ddp/User.java
+5
-0
LoadMessageProcedure.java
...t/rocket/android/model/internal/LoadMessageProcedure.java
+1
-0
RocketChatService.java
...n/java/chat/rocket/android/service/RocketChatService.java
+2
-2
RocketChatWebSocketThread.java
...hat/rocket/android/service/RocketChatWebSocketThread.java
+6
-6
UserDataSubscriber.java
...t/rocket/android/service/ddp/base/UserDataSubscriber.java
+22
-0
fragment_sidebar_main.xml
app/src/main/res/layout/fragment_sidebar_main.xml
+48
-57
strings.xml
app/src/main/res/values/strings.xml
+1
-0
dependencies.gradle
dependencies.gradle
+32
-32
build.gradle
realm-helpers/build.gradle
+32
-32
build.gradle
rocket-chat-android-widgets/build.gradle
+28
-28
No files found.
android-ddp/build.gradle
View file @
92a70c60
...
...
@@ -2,42 +2,42 @@ apply plugin: 'com.android.library'
apply
plugin:
'me.tatarka.retrolambda'
buildscript
{
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
}
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
}
}
android
{
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"0.0.8"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"0.0.8"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
}
dependencies
{
compile
project
(
':log-wrapper'
)
compile
rootProject
.
ext
.
supportAnnotations
compile
'com.squareup.okhttp3:okhttp-ws:3.4.1'
compile
rootProject
.
ext
.
rxJava
compile
rootProject
.
ext
.
boltsTask
compile
project
(
':log-wrapper'
)
compile
rootProject
.
ext
.
supportAnnotations
compile
'com.squareup.okhttp3:okhttp-ws:3.4.1'
compile
rootProject
.
ext
.
rxJava
compile
rootProject
.
ext
.
boltsTask
}
app/build.gradle
View file @
92a70c60
...
...
@@ -6,123 +6,123 @@ apply plugin: 'com.github.triplet.play'
apply
from:
'../config/quality/quality.gradle'
buildscript
{
repositories
{
jcenter
()
mavenCentral
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
classpath
rootProject
.
ext
.
realmPlugin
classpath
'com.jakewharton.hugo:hugo-plugin:1.2.1'
classpath
'com.google.gms:google-services:3.0.0'
classpath
'com.github.triplet.gradle:play-publisher:1.1.5'
}
// Exclude the version that the android plugin depends on.
configurations
.
classpath
.
exclude
group:
'com.android.tools.external.lombok'
repositories
{
jcenter
()
mavenCentral
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
classpath
rootProject
.
ext
.
realmPlugin
classpath
'com.jakewharton.hugo:hugo-plugin:1.2.1'
classpath
'com.google.gms:google-services:3.0.0'
classpath
'com.github.triplet.gradle:play-publisher:1.1.5'
}
// Exclude the version that the android plugin depends on.
configurations
.
classpath
.
exclude
group:
'com.android.tools.external.lombok'
}
android
{
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
defaultConfig
{
applicationId
"chat.rocket.android"
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
2
versionName
"1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
vectorDrawables
.
useSupportLibrary
=
true
multiDexEnabled
true
}
signingConfigs
{
release
{
storeFile
project
.
rootProject
.
file
(
'Rocket.jks'
).
getCanonicalFile
()
storePassword
System
.
getenv
(
"KEYSTORE_PASSWORD"
)
keyAlias
System
.
getenv
(
"KEY_ALIAS"
)
keyPassword
System
.
getenv
(
"KEY_PASSWORD"
)
}
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
defaultConfig
{
applicationId
"chat.rocket.android"
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
2
versionName
"1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
vectorDrawables
.
useSupportLibrary
=
true
multiDexEnabled
true
}
signingConfigs
{
release
{
storeFile
project
.
rootProject
.
file
(
'Rocket.jks'
).
getCanonicalFile
()
storePassword
System
.
getenv
(
"KEYSTORE_PASSWORD"
)
keyAlias
System
.
getenv
(
"KEY_ALIAS"
)
keyPassword
System
.
getenv
(
"KEY_PASSWORD"
)
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
signingConfig
signingConfigs
.
release
}
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
signingConfig
signingConfigs
.
release
}
productFlavors
{
qa
{
// something - qa builds will have some extra stuff for alpha testers
}
prod
{
// another
}
}
productFlavors
{
qa
{
// something - qa builds will have some extra stuff for alpha testers
}
packagingOptions
{
exclude
'META-INF/LICENSE.txt'
exclude
'META-INF/NOTICE.txt'
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
lintOptions
{
//avoiding okio error: https://github.com/square/okhttp/issues/896
lintConfig
file
(
"lint.xml"
)
prod
{
// another
}
}
packagingOptions
{
exclude
'META-INF/LICENSE.txt'
exclude
'META-INF/NOTICE.txt'
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
lintOptions
{
//avoiding okio error: https://github.com/square/okhttp/issues/896
lintConfig
file
(
"lint.xml"
)
}
}
play
{
jsonFile
=
file
(
'rocket-chat.json'
)
track
=
"${track}"
jsonFile
=
file
(
'rocket-chat.json'
)
track
=
"${track}"
}
repositories
{
mavenCentral
()
maven
{
url
'https://github.com/lijingle1/stetho-realm/raw/master/maven-repo'
}
maven
{
url
'http://dl.bintray.com/amulyakhare/maven'
}
maven
{
url
"https://clojars.org/repo/"
}
//for icepick.
mavenCentral
()
maven
{
url
'https://github.com/lijingle1/stetho-realm/raw/master/maven-repo'
}
maven
{
url
'http://dl.bintray.com/amulyakhare/maven'
}
maven
{
url
"https://clojars.org/repo/"
}
//for icepick.
}
dependencies
{
compile
project
(
':log-wrapper'
)
compile
project
(
':android-ddp'
)
compile
project
(
':rocket-chat-android-widgets'
)
compile
project
(
':realm-helpers'
)
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
qaCompile
(
'com.instabug.library:instabug:3.1.0'
)
{
exclude
group:
'io.reactivex'
}
compile
'com.android.support:multidex:1.0.1'
compile
project
(
':log-wrapper'
)
compile
project
(
':android-ddp'
)
compile
project
(
':rocket-chat-android-widgets'
)
compile
project
(
':realm-helpers'
)
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
qaCompile
(
'com.instabug.library:instabug:3.1.0'
)
{
exclude
group:
'io.reactivex'
}
compile
'com.android.support:multidex:1.0.1'
compile
'com.google.firebase:firebase-core:10.0.0'
compile
'com.google.firebase:firebase-crash:10.0.0'
compile
'com.google.firebase:firebase-core:10.0.0'
compile
'com.google.firebase:firebase-crash:10.0.0'
compile
rootProject
.
ext
.
okhttp3
compile
rootProject
.
ext
.
picasso
compile
rootProject
.
ext
.
okhttp3
compile
rootProject
.
ext
.
picasso
compile
'com.facebook.stetho:stetho:1.4.1'
compile
'com.facebook.stetho:stetho-okhttp3:1.4.1'
compile
'com.uphyca:stetho_realm:2.0.1'
compile
'com.facebook.stetho:stetho:1.4.1'
compile
'com.facebook.stetho:stetho-okhttp3:1.4.1'
compile
'com.uphyca:stetho_realm:2.0.1'
compile
'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile
'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0'
compile
'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile
'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0'
compile
'com.trello:rxlifecycle:1.0'
compile
'com.trello:rxlifecycle-android:1.0'
compile
'com.trello:rxlifecycle-components:1.0'
compile
'com.trello:rxlifecycle:1.0'
compile
'com.trello:rxlifecycle-android:1.0'
compile
'com.trello:rxlifecycle-components:1.0'
compile
'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile
'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile
'frankiesardo:icepick:3.2.0'
provided
'frankiesardo:icepick-processor:3.2.0'
compile
'frankiesardo:icepick:3.2.0'
provided
'frankiesardo:icepick-processor:3.2.0'
}
apply
plugin:
'com.google.gms.google-services'
app/src/main/java/chat/rocket/android/RocketChatApplication.java
View file @
92a70c60
...
...
@@ -36,6 +36,6 @@ public class RocketChatApplication extends MultiDexApplication {
InstabugWrapper
.
build
(
this
,
getString
(
R
.
string
.
instabug_api_key
));
//TODO: add periodic trigger for RocketChatService.keep
a
live(this) here!
//TODO: add periodic trigger for RocketChatService.keep
A
live(this) here!
}
}
app/src/main/java/chat/rocket/android/api/DDPClientWrapper.java
View file @
92a70c60
package
chat
.
rocket
.
android
.
api
;
import
android.support.annotation.Nullable
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
java.util.UUID
;
import
bolts.Task
;
import
chat.rocket.android.helper.OkHttpHelper
;
import
chat.rocket.android.helper.TextUtils
;
...
...
@@ -12,6 +9,11 @@ import chat.rocket.android.log.RCLog;
import
chat.rocket.android_ddp.DDPClient
;
import
chat.rocket.android_ddp.DDPClientCallback
;
import
chat.rocket.android_ddp.DDPSubscription
;
import
java.util.UUID
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
rx.Observable
;
/**
...
...
app/src/main/java/chat/rocket/android/fragment/sidebar/SidebarMainFragment.java
View file @
92a70c60
...
...
@@ -7,16 +7,14 @@ import android.widget.CompoundButton;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
com.jakewharton.rxbinding.view.RxView
;
import
com.jakewharton.rxbinding.widget.RxCompoundButton
;
import
chat.rocket.android.R
;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.fragment.AbstractFragment
;
import
chat.rocket.android.fragment.sidebar.dialog.AbstractAddRoomDialogFragment
;
import
chat.rocket.android.fragment.sidebar.dialog.AddChannelDialogFragment
;
import
chat.rocket.android.fragment.sidebar.dialog.AddDirectMessageDialogFragment
;
import
chat.rocket.android.fragment.sidebar.dialog.AddChannelDialogFragment
;
import
chat.rocket.android.helper.LogcatIfError
;
import
chat.rocket.android.helper.TextUtils
;
import
chat.rocket.android.layouthelper.chatroom.RoomListManager
;
...
...
@@ -29,6 +27,9 @@ import chat.rocket.android.realm_helper.RealmObjectObserver;
import
chat.rocket.android.realm_helper.RealmStore
;
import
chat.rocket.android.renderer.UserRenderer
;
import
com.jakewharton.rxbinding.view.RxView
;
import
com.jakewharton.rxbinding.widget.RxCompoundButton
;
public
class
SidebarMainFragment
extends
AbstractFragment
{
private
String
serverConfigId
;
...
...
@@ -75,7 +76,7 @@ public class SidebarMainFragment extends AbstractFragment {
currentUserObserver
=
realmHelper
.
createObjectObserver
(
User:
:
queryCurrentUser
)
.
setOnUpdateListener
(
this
::
on
Render
CurrentUser
);
.
setOnUpdateListener
(
this
::
onCurrentUser
);
methodCallHelper
=
new
MethodCallHelper
(
getContext
(),
serverConfigId
);
}
...
...
@@ -103,6 +104,8 @@ public class SidebarMainFragment extends AbstractFragment {
setupAddChannelButton
();
roomListManager
=
new
RoomListManager
(
rootView
.
findViewById
(
R
.
id
.
unread_title
),
(
LinearLayout
)
rootView
.
findViewById
(
R
.
id
.
unread_container
),
(
LinearLayout
)
rootView
.
findViewById
(
R
.
id
.
channels_container
),
(
LinearLayout
)
rootView
.
findViewById
(
R
.
id
.
direct_messages_container
));
roomListManager
.
setOnItemClickListener
(
view
->
{
...
...
@@ -142,6 +145,11 @@ public class SidebarMainFragment extends AbstractFragment {
}
}
private
void
onCurrentUser
(
User
user
)
{
onRenderCurrentUser
(
user
);
updateRoomListMode
(
user
);
}
private
void
onRenderCurrentUser
(
User
user
)
{
if
(
user
!=
null
&&
!
TextUtils
.
isEmpty
(
hostname
))
{
new
UserRenderer
(
getContext
(),
user
)
...
...
@@ -151,6 +159,13 @@ public class SidebarMainFragment extends AbstractFragment {
}
}
private
void
updateRoomListMode
(
User
user
)
{
if
(
user
==
null
||
user
.
getSettings
()
==
null
||
user
.
getSettings
().
getPreferences
()
==
null
)
{
return
;
}
roomListManager
.
setUnreadRoomMode
(
user
.
getSettings
().
getPreferences
().
isUnreadRoomsMode
());
}
private
void
setupLogoutButton
()
{
rootView
.
findViewById
(
R
.
id
.
btn_logout
).
setOnClickListener
(
view
->
{
if
(
methodCallHelper
!=
null
)
{
...
...
app/src/main/java/chat/rocket/android/layouthelper/chatroom/RoomListManager.java
View file @
92a70c60
...
...
@@ -3,61 +3,60 @@ package chat.rocket.android.layouthelper.chatroom;
import
android.view.View
;
import
android.view.ViewGroup
;
import
java.util.List
;
import
chat.rocket.android.helper.TextUtils
;
import
chat.rocket.android.model.ddp.RoomSubscription
;
import
chat.rocket.android.widget.internal.RoomListItemView
;
import
java.util.List
;
/**
* Utility class for mapping Room list into channel list ViewGroup.
*/
public
class
RoomListManager
{
private
View
unreadTitle
;
private
ViewGroup
unreadRoomsContainer
;
private
ViewGroup
channelsContainer
;
private
ViewGroup
dmContainer
;
private
boolean
unreadRoomMode
=
false
;
private
List
<
RoomSubscription
>
roomSubscriptionList
;
/**
* Callback interface for List item clicked.
*/
public
interface
OnItemClickListener
{
void
onItemClick
(
RoomListItemView
roomListItemView
);
}
private
OnItemClickListener
listener
;
/**
* constructor with three ViewGroups.
*/
public
RoomListManager
(
View
unreadTitle
,
ViewGroup
unreadRoomsContainer
,
ViewGroup
channelsContainer
,
ViewGroup
dmContainer
)
{
this
(
unreadTitle
,
unreadRoomsContainer
,
channelsContainer
,
dmContainer
,
false
);
}
/**
* constructor with two ViewGroups.
*/
public
RoomListManager
(
ViewGroup
channelsContainer
,
ViewGroup
dmContainer
)
{
public
RoomListManager
(
View
unreadTitle
,
ViewGroup
unreadRoomsContainer
,
ViewGroup
channelsContainer
,
ViewGroup
dmContainer
,
boolean
unreadRoomMode
)
{
this
.
unreadTitle
=
unreadTitle
;
this
.
unreadRoomsContainer
=
unreadRoomsContainer
;
this
.
channelsContainer
=
channelsContainer
;
this
.
dmContainer
=
dmContainer
;
}
private
static
void
removeItemIfExists
(
ViewGroup
parent
,
String
roomName
)
{
for
(
int
i
=
0
;
i
<
parent
.
getChildCount
();
i
++)
{
RoomListItemView
roomListItemView
=
(
RoomListItemView
)
parent
.
getChildAt
(
i
);
if
(
roomName
.
equals
(
roomListItemView
.
getRoomName
()))
{
parent
.
removeViewAt
(
i
);
break
;
}
}
this
.
unreadRoomMode
=
unreadRoomMode
;
}
/**
* update ViewGroups with room list.
*/
public
void
setRooms
(
List
<
RoomSubscription
>
roomSubscriptionList
)
{
removeDeletedItem
(
channelsContainer
,
roomSubscriptionList
);
removeDeletedItem
(
dmContainer
,
roomSubscriptionList
);
for
(
RoomSubscription
roomSubscription
:
roomSubscriptionList
)
{
String
name
=
roomSubscription
.
getName
();
if
(
TextUtils
.
isEmpty
(
name
))
{
continue
;
}
String
type
=
roomSubscription
.
getType
();
if
(
RoomSubscription
.
TYPE_CHANNEL
.
equals
(
type
)
||
RoomSubscription
.
TYPE_PRIVATE
.
equals
(
type
))
{
insertOrUpdateItem
(
channelsContainer
,
roomSubscription
);
removeItemIfExists
(
dmContainer
,
name
);
}
else
if
(
RoomSubscription
.
TYPE_DIRECT_MESSAGE
.
equals
(
type
))
{
removeItemIfExists
(
channelsContainer
,
name
);
insertOrUpdateItem
(
dmContainer
,
roomSubscription
);
}
}
this
.
roomSubscriptionList
=
roomSubscriptionList
;
updateRoomsList
();
}
/**
...
...
@@ -86,6 +85,11 @@ public class RoomListManager {
}
}
public
void
setUnreadRoomMode
(
boolean
unreadRoomMode
)
{
this
.
unreadRoomMode
=
unreadRoomMode
;
updateRoomsList
();
}
private
void
insertOrUpdateItem
(
ViewGroup
parent
,
RoomSubscription
roomSubscription
)
{
final
String
roomName
=
roomSubscription
.
getName
();
...
...
@@ -129,10 +133,47 @@ public class RoomListManager {
}
}
/**
* Callback interface for List item clicked.
*/
public
interface
OnItemClickListener
{
void
onItemClick
(
RoomListItemView
roomListItemView
);
private
void
updateRoomsList
()
{
removeDeletedItem
(
unreadRoomsContainer
,
roomSubscriptionList
);
removeDeletedItem
(
channelsContainer
,
roomSubscriptionList
);
removeDeletedItem
(
dmContainer
,
roomSubscriptionList
);
for
(
RoomSubscription
roomSubscription
:
roomSubscriptionList
)
{
String
name
=
roomSubscription
.
getName
();
if
(
TextUtils
.
isEmpty
(
name
))
{
continue
;
}
String
type
=
roomSubscription
.
getType
();
if
(
unreadRoomMode
&&
roomSubscription
.
isAlert
())
{
insertOrUpdateItem
(
unreadRoomsContainer
,
roomSubscription
);
removeItemIfExists
(
channelsContainer
,
name
);
removeItemIfExists
(
dmContainer
,
name
);
}
else
if
(
RoomSubscription
.
TYPE_CHANNEL
.
equals
(
type
)
||
RoomSubscription
.
TYPE_PRIVATE
.
equals
(
type
))
{
removeItemIfExists
(
unreadRoomsContainer
,
name
);
insertOrUpdateItem
(
channelsContainer
,
roomSubscription
);
removeItemIfExists
(
dmContainer
,
name
);
}
else
if
(
RoomSubscription
.
TYPE_DIRECT_MESSAGE
.
equals
(
type
))
{
removeItemIfExists
(
unreadRoomsContainer
,
name
);
removeItemIfExists
(
channelsContainer
,
name
);
insertOrUpdateItem
(
dmContainer
,
roomSubscription
);
}
}
boolean
showUnread
=
unreadRoomMode
&&
unreadRoomsContainer
.
getChildCount
()
!=
0
;
unreadTitle
.
setVisibility
(
showUnread
?
View
.
VISIBLE
:
View
.
GONE
);
unreadRoomsContainer
.
setVisibility
(
showUnread
?
View
.
VISIBLE
:
View
.
GONE
);
}
private
static
void
removeItemIfExists
(
ViewGroup
parent
,
String
roomName
)
{
for
(
int
i
=
0
;
i
<
parent
.
getChildCount
();
i
++)
{
RoomListItemView
roomListItemView
=
(
RoomListItemView
)
parent
.
getChildAt
(
i
);
if
(
roomName
.
equals
(
roomListItemView
.
getRoomName
()))
{
parent
.
removeViewAt
(
i
);
break
;
}
}
}
}
app/src/main/java/chat/rocket/android/model/ddp/Preferences.java
0 → 100644
View file @
92a70c60
package
chat
.
rocket
.
android
.
model
.
ddp
;
import
io.realm.RealmObject
;
import
io.realm.annotations.PrimaryKey
;
@SuppressWarnings
({
"PMD.ShortVariable"
})
public
class
Preferences
extends
RealmObject
{
@PrimaryKey
private
String
id
;
private
boolean
newRoomNotification
;
private
boolean
newMessageNotification
;
private
boolean
useEmojis
;
private
boolean
convertAsciiEmoji
;
private
boolean
saveMobileBandwidth
;
private
boolean
collapseMediaByDefault
;
private
boolean
unreadRoomsMode
;
private
boolean
autoImageLoad
;
private
String
emailNotificationMode
;
private
boolean
unreadAlert
;
private
int
desktopNotificationDuration
;
private
int
viewMode
;
private
boolean
hideUsernames
;
private
boolean
hideAvatars
;
private
boolean
hideFlexTab
;
// private List<String> highlights; // Realm does not support this yet
public
boolean
isNewRoomNotification
()
{
return
newRoomNotification
;
}
public
boolean
isNewMessageNotification
()
{
return
newMessageNotification
;
}
public
boolean
isUseEmojis
()
{
return
useEmojis
;
}
public
boolean
isConvertAsciiEmoji
()
{
return
convertAsciiEmoji
;
}
public
boolean
isSaveMobileBandwidth
()
{
return
saveMobileBandwidth
;
}
public
boolean
isCollapseMediaByDefault
()
{
return
collapseMediaByDefault
;
}
public
boolean
isUnreadRoomsMode
()
{
return
unreadRoomsMode
;
}
public
boolean
isAutoImageLoad
()
{
return
autoImageLoad
;
}
public
String
getEmailNotificationMode
()
{
return
emailNotificationMode
;
}
public
boolean
isUnreadAlert
()
{
return
unreadAlert
;
}
public
int
getDesktopNotificationDuration
()
{
return
desktopNotificationDuration
;
}
public
int
getViewMode
()
{
return
viewMode
;
}
public
boolean
isHideUsernames
()
{
return
hideUsernames
;
}
public
boolean
isHideAvatars
()
{
return
hideAvatars
;
}
public
boolean
isHideFlexTab
()
{
return
hideFlexTab
;
}
}
app/src/main/java/chat/rocket/android/model/ddp/Settings.java
0 → 100644
View file @
92a70c60
package
chat
.
rocket
.
android
.
model
.
ddp
;
import
io.realm.RealmObject
;
import
io.realm.annotations.PrimaryKey
;
@SuppressWarnings
({
"PMD.ShortVariable"
})
public
class
Settings
extends
RealmObject
{
@PrimaryKey
private
String
id
;
private
Preferences
preferences
;
public
Preferences
getPreferences
()
{
return
preferences
;
}
}
app/src/main/java/chat/rocket/android/model/ddp/User.java
View file @
92a70c60
...
...
@@ -22,6 +22,7 @@ public class User extends RealmObject {
private
String
status
;
private
double
utcOffset
;
private
RealmList
<
Email
>
emails
;
private
Settings
settings
;
public
static
RealmQuery
<
User
>
queryCurrentUser
(
Realm
realm
)
{
return
realm
.
where
(
User
.
class
).
isNotEmpty
(
"emails"
);
...
...
@@ -66,4 +67,8 @@ public class User extends RealmObject {
public
void
setEmails
(
RealmList
<
Email
>
emails
)
{
this
.
emails
=
emails
;
}
public
Settings
getSettings
()
{
return
settings
;
}
}
app/src/main/java/chat/rocket/android/model/internal/LoadMessageProcedure.java
View file @
92a70c60
...
...
@@ -14,6 +14,7 @@ public class LoadMessageProcedure extends RealmObject {
private
long
timestamp
;
private
int
count
;
@SuppressWarnings
({
"PMD.AvoidFieldNameMatchingMethodName"
})
private
boolean
hasNext
;
public
String
getRoomId
()
{
...
...
app/src/main/java/chat/rocket/android/service/RocketChatService.java
View file @
92a70c60
...
...
@@ -71,7 +71,7 @@ public class RocketChatService extends Service {
if
(
webSocketThreads
.
containsKey
(
serverConfigId
))
{
RocketChatWebSocketThread
thread
=
webSocketThreads
.
get
(
serverConfigId
);
if
(
thread
!=
null
)
{
thread
.
keep
a
live
();
thread
.
keep
A
live
();
}
}
}
...
...
@@ -110,7 +110,7 @@ public class RocketChatService extends Service {
.
onSuccessTask
(
task
->
{
RocketChatWebSocketThread
thread
=
task
.
getResult
();
if
(
thread
!=
null
)
{
thread
.
keep
a
live
();
thread
.
keep
A
live
();
}
return
ServerConfig
.
updateState
(
serverConfigId
,
ServerConfig
.
STATE_CONNECTED
);
}).
continueWith
(
new
LogcatIfError
());
...
...
app/src/main/java/chat/rocket/android/service/RocketChatWebSocketThread.java
View file @
92a70c60
...
...
@@ -140,7 +140,7 @@ public class RocketChatWebSocketThread extends HandlerThread {
* synchronize the state of the thread with ServerConfig.
*/
@DebugLog
public
void
keep
a
live
()
{
public
void
keep
A
live
()
{
if
(
ddpClient
==
null
||
!
ddpClient
.
isConnected
())
{
defaultRealm
.
executeTransaction
(
realm
->
{
ServerConfig
config
=
realm
.
where
(
ServerConfig
.
class
)
...
...
@@ -242,9 +242,9 @@ public class RocketChatWebSocketThread extends HandlerThread {
Object
obj
=
ctor
.
newInstance
(
appContext
,
hostname
,
serverConfigRealm
,
ddpClient
);
if
(
obj
instanceof
Registrable
)
{
Registrable
regist
e
rable
=
(
Registrable
)
obj
;
regist
e
rable
.
register
();
listeners
.
add
(
regist
e
rable
);
Registrable
registrable
=
(
Registrable
)
obj
;
registrable
.
register
();
listeners
.
add
(
registrable
);
}
}
catch
(
Exception
exception
)
{
RCLog
.
w
(
exception
,
"Failed to register listeners!!"
);
...
...
@@ -260,8 +260,8 @@ public class RocketChatWebSocketThread extends HandlerThread {
Iterator
<
Registrable
>
iterator
=
listeners
.
iterator
();
while
(
iterator
.
hasNext
())
{
Registrable
regist
e
rable
=
iterator
.
next
();
regist
e
rable
.
unregister
();
Registrable
registrable
=
iterator
.
next
();
registrable
.
unregister
();
iterator
.
remove
();
}
if
(
ddpClient
!=
null
)
{
...
...
app/src/main/java/chat/rocket/android/service/ddp/base/UserDataSubscriber.java
View file @
92a70c60
...
...
@@ -3,6 +3,9 @@ package chat.rocket.android.service.ddp.base;
import
android.content.Context
;
import
io.realm.RealmObject
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
chat.rocket.android.api.DDPClientWrapper
;
import
chat.rocket.android.model.ddp.User
;
import
chat.rocket.android.realm_helper.RealmHelper
;
...
...
@@ -30,4 +33,23 @@ public class UserDataSubscriber extends AbstractBaseSubscriber {
protected
Class
<?
extends
RealmObject
>
getModelClass
()
{
return
User
.
class
;
}
@Override
protected
JSONObject
customizeFieldJson
(
JSONObject
json
)
throws
JSONException
{
json
=
super
.
customizeFieldJson
(
json
);
// The user object may have some children without a proper primary key (ex.: settings)
// Here we identify this and add a local key
if
(
json
.
has
(
"settings"
))
{
final
JSONObject
settingsJson
=
json
.
getJSONObject
(
"settings"
);
settingsJson
.
put
(
"id"
,
json
.
getString
(
"_id"
));
if
(
settingsJson
.
has
(
"preferences"
))
{
final
JSONObject
preferencesJson
=
settingsJson
.
getJSONObject
(
"preferences"
);
preferencesJson
.
put
(
"id"
,
json
.
getString
(
"_id"
));
}
}
return
json
;
}
}
app/src/main/res/layout/fragment_sidebar_main.xml
View file @
92a70c60
This diff is collapsed.
Click to expand it.
app/src/main/res/values/strings.xml
View file @
92a70c60
...
...
@@ -33,4 +33,5 @@
<string
name=
"add_server_activity_waiting_server"
>
Connecting to server…
</string>
<string
name=
"server_config_activity_authenticating"
>
Authenticating…
</string>
<string
name=
"home_fragment_title"
>
Rocket.Chat - Home
</string>
<string
name=
"fragment_sidebar_main_unread_rooms_title"
>
UNREAD ROOMS
</string>
</resources>
dependencies.gradle
View file @
92a70c60
ext
{
androidPlugin
=
'com.android.tools.build:gradle:2.2.3'
realmPlugin
=
'io.realm:realm-gradle-plugin:2.2.1'
retroLambdaPlugin
=
'me.tatarka:gradle-retrolambda:3.3.1'
retroLambdaPatch
=
'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
compileSdkVersion
=
25
buildToolsVersion
=
'25.0.1'
minSdkVersion
=
21
//for accelerating multi-dex build. OVERRIDEN BY Circle CI to 17
androidPlugin
=
'com.android.tools.build:gradle:2.2.3'
realmPlugin
=
'io.realm:realm-gradle-plugin:2.2.1'
retroLambdaPlugin
=
'me.tatarka:gradle-retrolambda:3.3.1'
retroLambdaPatch
=
'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
compileSdkVersion
=
25
buildToolsVersion
=
'25.0.1'
minSdkVersion
=
16
supportVersion
=
'25.0.1'
supportAnnotations
=
"com.android.support:support-annotations:$supportVersion"
supportRecyclerView
=
"com.android.support:recyclerview-v7:$supportVersion"
supportAppCompat
=
"com.android.support:appcompat-v7:$supportVersion"
supportDesign
=
"com.android.support:design:$supportVersion"
supportVersion
=
'25.0.1'
supportAnnotations
=
"com.android.support:support-annotations:$supportVersion"
supportRecyclerView
=
"com.android.support:recyclerview-v7:$supportVersion"
supportAppCompat
=
"com.android.support:appcompat-v7:$supportVersion"
supportDesign
=
"com.android.support:design:$supportVersion"
rxJava
=
'io.reactivex:rxjava:1.2.2'
boltsTask
=
'com.parse.bolts:bolts-tasks:1.4.0'
okhttp3
=
'com.squareup.okhttp3:okhttp:3.4.1'
picasso
=
'com.squareup.picasso:picasso:2.5.2'
picasso2Okhttp3Downloader
=
'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
rxJava
=
'io.reactivex:rxjava:1.2.2'
boltsTask
=
'com.parse.bolts:bolts-tasks:1.4.0'
okhttp3
=
'com.squareup.okhttp3:okhttp:3.4.1'
picasso
=
'com.squareup.picasso:picasso:2.5.2'
picasso2Okhttp3Downloader
=
'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
preDexLibs
=
!
"true"
.
equals
(
System
.
getenv
(
"CI"
))
preDexLibs
=
!
"true"
.
equals
(
System
.
getenv
(
"CI"
))
}
subprojects
{
project
->
project
.
configurations
.
all
{
resolutionStrategy
{
eachDependency
{
details
->
if
(
details
.
requested
.
group
==
'com.android.support'
&&
details
.
requested
.
name
.
indexOf
(
"multidex"
)
==
-
1
)
{
details
.
useVersion
(
rootProject
.
ext
.
supportVersion
)
}
}
project
.
configurations
.
all
{
resolutionStrategy
{
eachDependency
{
details
->
if
(
details
.
requested
.
group
==
'com.android.support'
&&
details
.
requested
.
name
.
indexOf
(
"multidex"
)
==
-
1
)
{
details
.
useVersion
(
rootProject
.
ext
.
supportVersion
)
}
}
}
}
}
subprojects
{
project
.
plugins
.
whenPluginAdded
{
plugin
->
if
(
"com.android.build.gradle.AppPlugin"
.
equals
(
plugin
.
class
.
name
))
{
project
.
android
.
dexOptions
.
preDexLibraries
=
rootProject
.
ext
.
preDexLibs
}
else
if
(
"com.android.build.gradle.LibraryPlugin"
.
equals
(
plugin
.
class
.
name
))
{
project
.
android
.
dexOptions
.
preDexLibraries
=
rootProject
.
ext
.
preDexLibs
}
project
.
plugins
.
whenPluginAdded
{
plugin
->
if
(
"com.android.build.gradle.AppPlugin"
.
equals
(
plugin
.
class
.
name
))
{
project
.
android
.
dexOptions
.
preDexLibraries
=
rootProject
.
ext
.
preDexLibs
}
else
if
(
"com.android.build.gradle.LibraryPlugin"
.
equals
(
plugin
.
class
.
name
))
{
project
.
android
.
dexOptions
.
preDexLibraries
=
rootProject
.
ext
.
preDexLibs
}
}
}
\ No newline at end of file
realm-helpers/build.gradle
View file @
92a70c60
...
...
@@ -3,44 +3,44 @@ apply plugin: 'realm-android'
apply
plugin:
'me.tatarka.retrolambda'
buildscript
{
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
classpath
rootProject
.
ext
.
realmPlugin
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
}
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
classpath
rootProject
.
ext
.
realmPlugin
classpath
rootProject
.
ext
.
retroLambdaPlugin
classpath
rootProject
.
ext
.
retroLambdaPatch
}
}
android
{
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"1"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"1"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
}
dependencies
{
testCompile
'junit:junit:4.12'
compile
project
(
':log-wrapper'
)
compile
rootProject
.
ext
.
boltsTask
compile
rootProject
.
ext
.
supportAnnotations
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
testCompile
'junit:junit:4.12'
compile
project
(
':log-wrapper'
)
compile
rootProject
.
ext
.
boltsTask
compile
rootProject
.
ext
.
supportAnnotations
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
}
rocket-chat-android-widgets/build.gradle
View file @
92a70c60
apply
plugin:
'com.android.library'
buildscript
{
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
}
repositories
{
jcenter
()
}
dependencies
{
classpath
rootProject
.
ext
.
androidPlugin
}
}
android
{
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"1"
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
compileSdkVersion
versionCode
1
versionName
"1"
vectorDrawables
.
useSupportLibrary
=
true
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
vectorDrawables
.
useSupportLibrary
=
true
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
}
dependencies
{
testCompile
'junit:junit:4.12'
compile
rootProject
.
ext
.
supportAnnotations
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
compile
'org.nibor.autolink:autolink:0.5.0'
compile
rootProject
.
ext
.
okhttp3
compile
rootProject
.
ext
.
picasso
compile
rootProject
.
ext
.
picasso2Okhttp3Downloader
testCompile
'junit:junit:4.12'
compile
rootProject
.
ext
.
supportAnnotations
compile
rootProject
.
ext
.
supportAppCompat
compile
rootProject
.
ext
.
supportDesign
compile
'org.nibor.autolink:autolink:0.5.0'
compile
rootProject
.
ext
.
okhttp3
compile
rootProject
.
ext
.
picasso
compile
rootProject
.
ext
.
picasso2Okhttp3Downloader
}
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