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
8af265c7
Commit
8af265c7
authored
Dec 08, 2017
by
Leonardo Aramaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refresh opened rooms if conn state is SESSION_ESTABLISHED loading
missed messages for that channel
parent
85c02cc3
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
471 additions
and
419 deletions
+471
-419
MainActivity.java
.../main/java/chat/rocket/android/activity/MainActivity.java
+36
-17
MainPresenter.java
...main/java/chat/rocket/android/activity/MainPresenter.java
+6
-3
RoomContract.java
...a/chat/rocket/android/fragment/chatroom/RoomContract.java
+35
-33
RoomFragment.java
...a/chat/rocket/android/fragment/chatroom/RoomFragment.java
+2
-2
RoomPresenter.java
.../chat/rocket/android/fragment/chatroom/RoomPresenter.java
+392
-364
No files found.
app/src/main/java/chat/rocket/android/activity/MainActivity.java
View file @
8af265c7
...
...
@@ -18,6 +18,7 @@ import android.widget.TextView;
import
com.facebook.drawee.view.SimpleDraweeView
;
import
java.util.List
;
import
java.util.concurrent.atomic.AtomicReference
;
import
chat.rocket.android.LaunchUtil
;
import
chat.rocket.android.R
;
...
...
@@ -49,7 +50,7 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
private
RoomToolbar
toolbar
;
private
SlidingPaneLayout
pane
;
private
MainContract
.
Presenter
presenter
;
private
volatile
Snackbar
statusTicker
;
private
volatile
AtomicReference
<
Snackbar
>
statusTicker
=
new
AtomicReference
<>()
;
@Override
public
int
getLayoutContainerForFragment
()
{
...
...
@@ -95,7 +96,9 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
presenter
.
release
();
}
// Dismiss any status ticker
if
(
statusTicker
!=
null
)
statusTicker
.
dismiss
();
if
(
statusTicker
.
get
()
!=
null
)
{
statusTicker
.
get
().
dismiss
();
}
super
.
onPause
();
}
...
...
@@ -250,31 +253,47 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
}
@Override
public
synchronized
void
showConnectionError
()
{
dismissStatusTickerIfShowing
();
statusTicker
=
Snackbar
.
make
(
findViewById
(
getLayoutContainerForFragment
()),
public
void
showConnectionError
()
{
if
(
statusTicker
.
get
()
!=
null
&&
statusTicker
.
get
().
isShown
())
{
statusTicker
.
get
().
setText
(
R
.
string
.
fragment_retry_login_error_title
)
.
setAction
(
R
.
string
.
fragment_retry_login_retry_title
,
view
->
{
statusTicker
.
set
(
null
);
showConnecting
();
ConnectivityManager
.
getInstance
(
getApplicationContext
()).
keepAliveServer
();
});
}
else
{
Snackbar
newStatusTicker
=
Snackbar
.
make
(
findViewById
(
getLayoutContainerForFragment
()),
R
.
string
.
fragment_retry_login_error_title
,
Snackbar
.
LENGTH_INDEFINITE
)
.
setAction
(
R
.
string
.
fragment_retry_login_retry_title
,
view
->
ConnectivityManager
.
getInstance
(
getApplicationContext
()).
keepAliveServer
());
statusTicker
.
show
();
.
setAction
(
R
.
string
.
fragment_retry_login_retry_title
,
view
->
{
statusTicker
.
set
(
null
);
showConnecting
();
ConnectivityManager
.
getInstance
(
getApplicationContext
()).
keepAliveServer
();
});
statusTicker
.
set
(
newStatusTicker
);
statusTicker
.
get
().
show
();
}
}
@Override
public
synchronized
void
showConnecting
()
{
dismissStatusTickerIfShowing
();
statusTicker
=
Snackbar
.
make
(
findViewById
(
getLayoutContainerForFragment
()),
public
void
showConnecting
()
{
if
(
statusTicker
.
get
()
!=
null
&&
statusTicker
.
get
().
isShown
())
{
statusTicker
.
get
().
setText
(
R
.
string
.
server_config_activity_authenticating
);
}
else
{
Snackbar
newStatusTicker
=
Snackbar
.
make
(
findViewById
(
getLayoutContainerForFragment
()),
R
.
string
.
server_config_activity_authenticating
,
Snackbar
.
LENGTH_INDEFINITE
);
statusTicker
.
show
();
statusTicker
.
set
(
newStatusTicker
);
statusTicker
.
get
().
show
();
}
}
@Override
public
synchronized
void
showConnectionOk
()
{
public
void
showConnectionOk
()
{
dismissStatusTickerIfShowing
();
}
private
void
dismissStatusTickerIfShowing
()
{
if
(
statusTicker
!=
null
)
{
statusTicker
.
dismiss
();
statusTicker
.
get
().
dismiss
();
}
}
...
...
@@ -334,7 +353,7 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
Fragment
fragment
=
getSupportFragmentManager
().
findFragmentById
(
getLayoutContainerForFragment
());
if
(
fragment
!=
null
&&
fragment
instanceof
RoomFragment
)
{
RoomFragment
roomFragment
=
(
RoomFragment
)
fragment
;
roomFragment
.
loadMessages
();
roomFragment
.
loadM
issedM
essages
();
}
}
...
...
app/src/main/java/chat/rocket/android/activity/MainPresenter.java
View file @
8af265c7
...
...
@@ -212,7 +212,7 @@ public class MainPresenter extends BasePresenter<MainContract.View>
return
;
}
view
.
showConnectionOk
();
//
view.showConnectionOk();
},
Logger:
:
report
);
...
...
@@ -227,12 +227,15 @@ public class MainPresenter extends BasePresenter<MainContract.View>
.
subscribe
(
connectivity
->
{
if
(
connectivity
.
state
==
ServerConnectivity
.
STATE_CONNECTED
)
{
view
.
showConnectionOk
();
view
.
refreshRoom
();
//TODO: notify almost connected or something like that.
// view.showConnectionOk
();
}
else
if
(
connectivity
.
state
==
ServerConnectivity
.
STATE_DISCONNECTED
)
{
if
(
connectivity
.
code
==
DDPClient
.
REASON_NETWORK_ERROR
)
{
view
.
showConnectionError
();
}
}
else
if
(
connectivity
.
state
==
ServerConnectivity
.
STATE_SESSION_ESTABLISHED
)
{
view
.
refreshRoom
();
view
.
showConnectionOk
();
}
else
{
view
.
showConnecting
();
}
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomContract.java
View file @
8af265c7
...
...
@@ -75,5 +75,7 @@ public interface RoomContract {
void
replyMessage
(
@NonNull
Message
message
,
boolean
justQuote
);
void
acceptMessageDeleteFailure
(
Message
message
);
void
loadMissedMessages
();
}
}
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomFragment.java
View file @
8af265c7
...
...
@@ -716,7 +716,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements
}
}
public
void
loadMessages
()
{
presenter
.
loadMessages
();
public
void
loadM
issedM
essages
()
{
presenter
.
loadM
issedM
essages
();
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomPresenter.java
View file @
8af265c7
...
...
@@ -6,11 +6,17 @@ import android.support.v4.util.Pair;
import
com.hadisatrio.optional.Optional
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
chat.rocket.android.BackgroundLooper
;
import
chat.rocket.android.RocketChatApplication
;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.helper.AbsoluteUrlHelper
;
import
chat.rocket.android.helper.LogIfError
;
import
chat.rocket.android.helper.Logger
;
import
chat.rocket.android.log.RCLog
;
import
chat.rocket.android.service.ConnectivityManagerApi
;
import
chat.rocket.android.shared.BasePresenter
;
import
chat.rocket.core.SyncState
;
...
...
@@ -38,7 +44,7 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
private
final
ConnectivityManagerApi
connectivityManagerApi
;
private
Room
currentRoom
;
public
RoomPresenter
(
String
roomId
,
/* package */
RoomPresenter
(
String
roomId
,
UserRepository
userRepository
,
MessageInteractor
messageInteractor
,
RoomRepository
roomRepository
,
...
...
@@ -161,6 +167,23 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
addSubscription
(
subscription
);
}
@Override
public
void
loadMissedMessages
()
{
RocketChatApplication
appContext
=
RocketChatApplication
.
getInstance
();
JSONObject
openedRooms
=
new
RocketChatCache
(
appContext
).
getOpenedRooms
();
if
(
openedRooms
.
has
(
roomId
))
{
try
{
JSONObject
room
=
openedRooms
.
getJSONObject
(
roomId
);
String
rid
=
room
.
optString
(
"rid"
);
long
ls
=
room
.
optLong
(
"ls"
);
methodCallHelper
.
loadMissedMessages
(
rid
,
ls
)
.
continueWith
(
new
LogIfError
());
}
catch
(
JSONException
e
)
{
RCLog
.
e
(
e
);
}
}
}
private
String
buildReplyOrQuoteMarkdown
(
String
baseUrl
,
Message
message
,
boolean
justQuote
)
{
if
(
currentRoom
==
null
||
message
.
getUser
()
==
null
)
{
return
""
;
...
...
@@ -345,6 +368,11 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
})
.
filter
(
Optional:
:
isPresent
)
.
map
(
Optional:
:
get
)
.
map
(
room
->
{
new
RocketChatCache
(
RocketChatApplication
.
getInstance
())
.
addOpenedRoom
(
room
.
getRoomId
(),
room
.
getLastSeen
());
return
room
;
})
.
flatMap
(
messageInteractor:
:
getAllFrom
)
.
subscribeOn
(
AndroidSchedulers
.
from
(
BackgroundLooper
.
get
()))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
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