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
265d6c5a
Commit
265d6c5a
authored
May 05, 2017
by
Tiago Cunha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rough edit
parent
8b3ed8b1
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
118 additions
and
10 deletions
+118
-10
MethodCallHelper.java
...c/main/java/chat/rocket/android/api/MethodCallHelper.java
+14
-3
RoomContract.java
...a/chat/rocket/android/fragment/chatroom/RoomContract.java
+2
-0
RoomFragment.java
...a/chat/rocket/android/fragment/chatroom/RoomFragment.java
+15
-1
RoomPresenter.java
.../chat/rocket/android/fragment/chatroom/RoomPresenter.java
+18
-0
MessageOptionsDialogFragment.java
...ragment/chatroom/dialog/MessageOptionsDialogFragment.java
+2
-0
MessageFormManager.java
...ket/android/layouthelper/chatroom/MessageFormManager.java
+5
-0
NewMessageObserver.java
...t/rocket/android/service/observer/NewMessageObserver.java
+2
-1
Migration.java
...rc/main/java/chat/rocket/persistence/realm/Migration.java
+8
-0
RealmStore.java
...c/main/java/chat/rocket/persistence/realm/RealmStore.java
+1
-1
RealmMessage.java
...hat/rocket/persistence/realm/models/ddp/RealmMessage.java
+20
-0
RealmMessageRepository.java
...ersistence/realm/repositories/RealmMessageRepository.java
+1
-0
MessageFormLayout.java
...chat/rocket/android/widget/message/MessageFormLayout.java
+12
-3
MessageInteractor.kt
...in/java/chat/rocket/core/interactors/MessageInteractor.kt
+9
-0
Message.java
...t-core/src/main/java/chat/rocket/core/models/Message.java
+9
-1
No files found.
app/src/main/java/chat/rocket/android/api/MethodCallHelper.java
View file @
265d6c5a
...
...
@@ -364,12 +364,18 @@ public class MethodCallHelper {
/**
* send message.
*/
public
Task
<
Void
>
sendMessage
(
String
messageId
,
String
roomId
,
String
msg
)
{
public
Task
<
Void
>
sendMessage
(
String
messageId
,
String
roomId
,
String
msg
,
long
editedAt
)
{
try
{
return
sendMessage
(
new
JSONObject
()
JSONObject
messageJson
=
new
JSONObject
()
.
put
(
"_id"
,
messageId
)
.
put
(
"rid"
,
roomId
)
.
put
(
"msg"
,
msg
));
.
put
(
"msg"
,
msg
);
if
(
editedAt
==
0
)
{
return
sendMessage
(
messageJson
);
}
else
{
return
updateMessage
(
messageJson
);
}
}
catch
(
JSONException
exception
)
{
return
Task
.
forError
(
exception
);
}
...
...
@@ -383,6 +389,11 @@ public class MethodCallHelper {
.
onSuccessTask
(
task
->
Task
.
forResult
(
null
));
}
private
Task
<
Void
>
updateMessage
(
final
JSONObject
messageJson
)
{
return
call
(
"updateMessage"
,
TIMEOUT_MS
,
()
->
new
JSONArray
().
put
(
messageJson
))
.
onSuccessTask
(
task
->
Task
.
forResult
(
null
));
}
/**
* mark all messages are read in the room.
*/
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomContract.java
View file @
265d6c5a
...
...
@@ -42,6 +42,8 @@ public interface RoomContract {
void
resendMessage
(
Message
message
);
void
updateMessage
(
Message
message
,
String
content
);
void
deleteMessage
(
Message
message
);
void
onUnreadCount
();
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomFragment.java
View file @
265d6c5a
...
...
@@ -120,6 +120,8 @@ public class RoomFragment extends AbstractChatRoomFragment
private
MethodCallHelper
methodCallHelper
;
private
AbsoluteUrlHelper
absoluteUrlHelper
;
private
Message
edittingMessage
=
null
;
public
RoomFragment
()
{
}
...
...
@@ -459,6 +461,11 @@ public class RoomFragment extends AbstractChatRoomFragment
@Override
public
boolean
onBackPressed
()
{
if
(
edittingMessage
!=
null
)
{
edittingMessage
=
null
;
messageFormManager
.
clearComposingText
();
return
true
;
}
return
closeSideMenuIfNeeded
();
}
...
...
@@ -513,7 +520,11 @@ public class RoomFragment extends AbstractChatRoomFragment
}
private
void
sendMessage
(
String
messageText
)
{
presenter
.
sendMessage
(
messageText
);
if
(
edittingMessage
==
null
)
{
presenter
.
sendMessage
(
messageText
);
}
else
{
presenter
.
updateMessage
(
edittingMessage
,
messageText
);
}
}
@Override
...
...
@@ -560,6 +571,7 @@ public class RoomFragment extends AbstractChatRoomFragment
public
void
onMessageSendSuccessfully
()
{
scrollToLatestMessage
();
messageFormManager
.
onMessageSend
();
edittingMessage
=
null
;
}
@Override
...
...
@@ -597,5 +609,7 @@ public class RoomFragment extends AbstractChatRoomFragment
}
private
void
onEditMessage
(
Message
message
)
{
edittingMessage
=
message
;
messageFormManager
.
setEditMessage
(
message
.
getMessage
());
}
}
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomPresenter.java
View file @
265d6c5a
...
...
@@ -141,6 +141,24 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
addSubscription
(
subscription
);
}
@Override
public
void
updateMessage
(
Message
message
,
String
content
)
{
final
Disposable
subscription
=
getCurrentUser
()
.
flatMap
(
user
->
messageInteractor
.
update
(
message
,
user
,
content
))
.
subscribeOn
(
AndroidSchedulers
.
from
(
BackgroundLooper
.
get
()))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
success
->
{
if
(
success
)
{
view
.
onMessageSendSuccessfully
();
}
},
Logger:
:
report
);
addSubscription
(
subscription
);
}
@Override
public
void
deleteMessage
(
Message
message
)
{
final
Disposable
subscription
=
messageInteractor
.
delete
(
message
)
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/dialog/MessageOptionsDialogFragment.java
View file @
265d6c5a
...
...
@@ -119,6 +119,8 @@ public class MessageOptionsDialogFragment extends BottomSheetDialogFragment {
.
subscribe
(
pair
->
{
if
(
pair
.
second
)
{
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_info
)
.
setVisibility
(
View
.
GONE
);
View
editView
=
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_edit_action
);
editView
.
setVisibility
(
View
.
VISIBLE
);
editView
.
setOnClickListener
(
view
->
internalListener
.
onEdit
(
pair
.
first
));
...
...
app/src/main/java/chat/rocket/android/layouthelper/chatroom/MessageFormManager.java
View file @
265d6c5a
...
...
@@ -33,6 +33,11 @@ public class MessageFormManager {
messageFormLayout
.
setEnabled
(
true
);
}
public
void
setEditMessage
(
String
message
)
{
clearComposingText
();
messageFormLayout
.
setText
(
message
);
}
private
void
sendMessage
(
String
message
)
{
if
(
sendMessageCallback
==
null
)
{
return
;
...
...
app/src/main/java/chat/rocket/android/service/observer/NewMessageObserver.java
View file @
265d6c5a
...
...
@@ -57,13 +57,14 @@ public class NewMessageObserver extends AbstractModelObserver<RealmMessage> {
final
String
messageId
=
message
.
getId
();
final
String
roomId
=
message
.
getRoomId
();
final
String
msg
=
message
.
getMessage
();
final
long
editedAt
=
message
.
getEditedAt
();
realmHelper
.
executeTransaction
(
realm
->
realm
.
createOrUpdateObjectFromJson
(
RealmMessage
.
class
,
new
JSONObject
()
.
put
(
RealmMessage
.
ID
,
messageId
)
.
put
(
RealmMessage
.
SYNC_STATE
,
SyncState
.
SYNCING
)
)
).
onSuccessTask
(
task
->
methodCall
.
sendMessage
(
messageId
,
roomId
,
msg
)
).
onSuccessTask
(
task
->
methodCall
.
sendMessage
(
messageId
,
roomId
,
msg
,
editedAt
)
).
continueWith
(
task
->
{
if
(
task
.
isFaulted
())
{
RCLog
.
w
(
task
.
getError
());
...
...
persistence-realm/src/main/java/chat/rocket/persistence/realm/Migration.java
View file @
265d6c5a
...
...
@@ -6,6 +6,7 @@ import io.realm.RealmMigration;
import
io.realm.RealmObjectSchema
;
import
io.realm.RealmSchema
;
import
chat.rocket.persistence.realm.models.ddp.RealmMessage
;
import
chat.rocket.persistence.realm.models.ddp.RealmPermission
;
import
chat.rocket.persistence.realm.models.ddp.RealmRole
;
import
chat.rocket.persistence.realm.models.ddp.RealmRoomRole
;
...
...
@@ -60,6 +61,13 @@ public class Migration implements RealmMigration {
.
addField
(
RealmRoomRole
.
Columns
.
ROOM_ID
,
String
.
class
)
.
addRealmObjectField
(
RealmRoomRole
.
Columns
.
USER
,
schema
.
get
(
"RealmUser"
))
.
addRealmListField
(
RealmRoomRole
.
Columns
.
ROLES
,
schema
.
get
(
"RealmRole"
));
oldVersion
++;
}
if
(
oldVersion
==
4
)
{
RealmObjectSchema
messageSchema
=
schema
.
get
(
"RealmMessage"
);
messageSchema
.
addField
(
RealmMessage
.
EDITED_AT
,
long
.
class
);
}
}
}
persistence-realm/src/main/java/chat/rocket/persistence/realm/RealmStore.java
View file @
265d6c5a
...
...
@@ -15,7 +15,7 @@ public class RealmStore {
.
name
(
name
+
".realm"
)
.
modules
(
new
RocketChatLibraryModule
())
.
migration
(
new
Migration
())
.
schemaVersion
(
4
)
.
schemaVersion
(
5
)
.
build
();
}
...
...
persistence-realm/src/main/java/chat/rocket/persistence/realm/models/ddp/RealmMessage.java
View file @
265d6c5a
...
...
@@ -43,6 +43,7 @@ public class RealmMessage extends RealmObject {
public
static
final
String
GROUPABLE
=
"groupable"
;
public
static
final
String
ATTACHMENTS
=
"attachments"
;
public
static
final
String
URLS
=
"urls"
;
public
static
final
String
EDITED_AT
=
"editedAt"
;
@PrimaryKey
private
String
_id
;
private
String
t
;
//type:
...
...
@@ -56,6 +57,7 @@ public class RealmMessage extends RealmObject {
private
String
avatar
;
private
String
attachments
;
//JSONArray.
private
String
urls
;
//JSONArray.
private
long
editedAt
;
public
static
JSONObject
customizeJson
(
JSONObject
messageJson
)
throws
JSONException
{
long
ts
=
messageJson
.
getJSONObject
(
TIMESTAMP
).
getLong
(
JsonConstants
.
DATE
);
...
...
@@ -66,6 +68,15 @@ public class RealmMessage extends RealmObject {
messageJson
.
put
(
GROUPABLE
,
true
);
}
long
editedAt
=
0L
;
JSONObject
editedAtObj
=
messageJson
.
optJSONObject
(
EDITED_AT
);
if
(
editedAtObj
!=
null
)
{
editedAt
=
editedAtObj
.
optLong
(
JsonConstants
.
DATE
);
}
messageJson
.
remove
(
EDITED_AT
);
messageJson
.
put
(
EDITED_AT
,
editedAt
);
return
messageJson
;
}
...
...
@@ -165,6 +176,14 @@ public class RealmMessage extends RealmObject {
this
.
avatar
=
avatar
;
}
public
long
getEditedAt
()
{
return
editedAt
;
}
public
void
setEditedAt
(
long
editedAt
)
{
this
.
editedAt
=
editedAt
;
}
public
Message
asMessage
()
{
return
Message
.
builder
()
.
setId
(
_id
)
...
...
@@ -177,6 +196,7 @@ public class RealmMessage extends RealmObject {
.
setGroupable
(
groupable
)
.
setAlias
(
alias
)
.
setAvatar
(
avatar
)
.
setEditedAt
(
editedAt
)
.
setAttachments
(
getCoreAttachments
())
.
setWebContents
(
getWebContents
())
.
build
();
...
...
persistence-realm/src/main/java/chat/rocket/persistence/realm/repositories/RealmMessageRepository.java
View file @
265d6c5a
...
...
@@ -71,6 +71,7 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
realmMessage
.
setTimestamp
(
message
.
getTimestamp
());
realmMessage
.
setRoomId
(
message
.
getRoomId
());
realmMessage
.
setMessage
(
message
.
getMessage
());
realmMessage
.
setEditedAt
(
message
.
getEditedAt
());
RealmUser
realmUser
=
realmMessage
.
getUser
();
if
(
realmUser
==
null
)
{
...
...
rocket-chat-android-widgets/src/main/java/chat/rocket/android/widget/message/MessageFormLayout.java
View file @
265d6c5a
...
...
@@ -12,6 +12,7 @@ import android.util.AttributeSet;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.EditText
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
...
...
@@ -135,8 +136,8 @@ public class MessageFormLayout extends LinearLayout {
}
}
private
TextView
getEditor
()
{
return
(
TextView
)
composer
.
findViewById
(
R
.
id
.
editor
);
private
EditText
getEditor
()
{
return
(
EditText
)
composer
.
findViewById
(
R
.
id
.
editor
);
}
public
final
String
getText
()
{
...
...
@@ -144,11 +145,19 @@ public class MessageFormLayout extends LinearLayout {
}
public
final
void
setText
(
final
CharSequence
text
)
{
final
TextView
editor
=
getEditor
();
final
EditText
editor
=
getEditor
();
editor
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
editor
.
setText
(
text
);
if
(
text
.
length
()
>
0
)
{
editor
.
setSelection
(
text
.
length
());
InputMethodManager
inputMethodManager
=
(
InputMethodManager
)
editor
.
getContext
()
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
editor
.
requestFocus
();
inputMethodManager
.
showSoftInput
(
editor
,
0
);
}
}
});
}
...
...
rocket-chat-core/src/main/java/chat/rocket/core/interactors/MessageInteractor.kt
View file @
265d6c5a
...
...
@@ -56,6 +56,7 @@ class MessageInteractor(private val messageRepository: MessageRepository,
.
setMessage
(
messageText
)
.
setGroupable
(
false
)
.
setUser
(
sender
)
.
setEditedAt
(
0
)
.
build
()
return
messageRepository
.
save
(
message
)
...
...
@@ -66,6 +67,14 @@ class MessageInteractor(private val messageRepository: MessageRepository,
message
.
withSyncState
(
SyncState
.
NOT_SYNCED
).
withUser
(
sender
))
}
fun
update
(
message
:
Message
,
sender
:
User
,
content
:
String
):
Single
<
Boolean
>
{
return
messageRepository
.
save
(
message
.
withSyncState
(
SyncState
.
NOT_SYNCED
)
.
withUser
(
sender
)
.
withMessage
(
content
)
.
withEditedAt
(
message
.
editedAt
+
1
))
}
fun
delete
(
message
:
Message
):
Single
<
Boolean
>
{
return
messageRepository
.
delete
(
message
)
}
...
...
rocket-chat-core/src/main/java/chat/rocket/core/models/Message.java
View file @
265d6c5a
...
...
@@ -38,10 +38,16 @@ public abstract class Message {
@Nullable
public
abstract
String
getAvatar
();
public
abstract
long
getEditedAt
();
public
abstract
Message
withSyncState
(
int
syncState
);
public
abstract
Message
withUser
(
User
user
);
public
abstract
Message
withMessage
(
String
message
);
public
abstract
Message
withEditedAt
(
long
editedAt
);
public
static
Builder
builder
()
{
return
new
AutoValue_Message
.
Builder
();
}
...
...
@@ -59,7 +65,7 @@ public abstract class Message {
public
abstract
Builder
setTimestamp
(
long
timestamp
);
public
abstract
Builder
setMessage
(
String
m
sg
);
public
abstract
Builder
setMessage
(
String
m
essage
);
public
abstract
Builder
setUser
(
User
user
);
...
...
@@ -73,6 +79,8 @@ public abstract class Message {
public
abstract
Builder
setAvatar
(
String
avatar
);
public
abstract
Builder
setEditedAt
(
long
editedAt
);
public
abstract
Message
build
();
}
}
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