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
c687071d
Commit
c687071d
authored
May 05, 2017
by
Tiago Cunha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Show dialog.
parent
29497c84
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
193 additions
and
9 deletions
+193
-9
RoomFragment.java
...a/chat/rocket/android/fragment/chatroom/RoomFragment.java
+6
-2
MessageOptionsDialogFragment.java
...ragment/chatroom/dialog/MessageOptionsDialogFragment.java
+141
-0
dialog_message_options.xml
app/src/main/res/layout/dialog_message_options.xml
+25
-0
strings.xml
app/src/main/res/values/strings.xml
+3
-0
RealmPermissionRepository.java
...istence/realm/repositories/RealmPermissionRepository.java
+7
-2
RealmRoomRoleRepository.java
...rsistence/realm/repositories/RealmRoomRoleRepository.java
+9
-3
build.gradle
rocket-chat-core/build.gradle
+2
-2
No files found.
app/src/main/java/chat/rocket/android/fragment/chatroom/RoomFragment.java
View file @
c687071d
...
...
@@ -37,6 +37,7 @@ import chat.rocket.android.BackgroundLooper;
import
chat.rocket.android.R
;
import
chat.rocket.android.api.MethodCallHelper
;
import
chat.rocket.android.fragment.chatroom.dialog.FileUploadProgressDialogFragment
;
import
chat.rocket.android.fragment.chatroom.dialog.MessageOptionsDialogFragment
;
import
chat.rocket.android.fragment.chatroom.dialog.UsersOfRoomDialogFragment
;
import
chat.rocket.android.helper.AbsoluteUrlHelper
;
import
chat.rocket.android.helper.FileUploadHelper
;
...
...
@@ -285,8 +286,11 @@ public class RoomFragment extends AbstractChatRoomFragment
}
@Override
public
boolean
onItemLongClick
(
PairedMessage
model
)
{
return
false
;
public
boolean
onItemLongClick
(
PairedMessage
pairedMessage
)
{
MessageOptionsDialogFragment
messageOptionsDialogFragment
=
MessageOptionsDialogFragment
.
create
(
pairedMessage
.
target
);
messageOptionsDialogFragment
.
show
(
getChildFragmentManager
(),
"MessageOptionsDialogFragment"
);
return
true
;
}
private
void
setupSideMenu
()
{
...
...
app/src/main/java/chat/rocket/android/fragment/chatroom/dialog/MessageOptionsDialogFragment.java
0 → 100644
View file @
c687071d
package
chat
.
rocket
.
android
.
fragment
.
chatroom
.
dialog
;
import
android.app.Dialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.design.widget.BottomSheetDialog
;
import
android.support.design.widget.BottomSheetDialogFragment
;
import
android.view.View
;
import
android.widget.TextView
;
import
io.reactivex.Single
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.CompositeDisposable
;
import
io.reactivex.disposables.Disposable
;
import
chat.rocket.android.BackgroundLooper
;
import
chat.rocket.android.R
;
import
chat.rocket.android.RocketChatCache
;
import
chat.rocket.android.helper.Logger
;
import
chat.rocket.core.interactors.EditMessageInteractor
;
import
chat.rocket.core.interactors.PermissionInteractor
;
import
chat.rocket.core.models.Message
;
import
chat.rocket.core.repositories.MessageRepository
;
import
chat.rocket.core.repositories.PermissionRepository
;
import
chat.rocket.core.repositories.PublicSettingRepository
;
import
chat.rocket.core.repositories.RoomRepository
;
import
chat.rocket.core.repositories.RoomRoleRepository
;
import
chat.rocket.core.repositories.UserRepository
;
import
chat.rocket.persistence.realm.repositories.RealmMessageRepository
;
import
chat.rocket.persistence.realm.repositories.RealmPermissionRepository
;
import
chat.rocket.persistence.realm.repositories.RealmPublicSettingRepository
;
import
chat.rocket.persistence.realm.repositories.RealmRoomRepository
;
import
chat.rocket.persistence.realm.repositories.RealmRoomRoleRepository
;
import
chat.rocket.persistence.realm.repositories.RealmUserRepository
;
public
class
MessageOptionsDialogFragment
extends
BottomSheetDialogFragment
{
public
final
static
String
ARG_MESSAGE_ID
=
"messageId"
;
private
CompositeDisposable
compositeDisposable
=
new
CompositeDisposable
();
public
static
MessageOptionsDialogFragment
create
(
@NonNull
Message
message
)
{
Bundle
bundle
=
new
Bundle
();
bundle
.
putString
(
ARG_MESSAGE_ID
,
message
.
getId
());
MessageOptionsDialogFragment
messageOptionsDialogFragment
=
new
MessageOptionsDialogFragment
();
messageOptionsDialogFragment
.
setArguments
(
bundle
);
return
messageOptionsDialogFragment
;
}
@NonNull
@Override
public
Dialog
onCreateDialog
(
Bundle
savedInstanceState
)
{
BottomSheetDialog
bottomSheetDialog
=
new
BottomSheetDialog
(
getContext
());
bottomSheetDialog
.
setContentView
(
R
.
layout
.
dialog_message_options
);
TextView
info
=
(
TextView
)
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_info
);
Bundle
args
=
getArguments
();
if
(
args
==
null
||
!
args
.
containsKey
(
ARG_MESSAGE_ID
))
{
info
.
setText
(
R
.
string
.
message_options_no_message_info
);
}
else
{
setUpDialog
(
bottomSheetDialog
,
args
.
getString
(
ARG_MESSAGE_ID
));
}
return
bottomSheetDialog
;
}
@Override
public
void
onDismiss
(
DialogInterface
dialog
)
{
compositeDisposable
.
clear
();
super
.
onDismiss
(
dialog
);
}
private
void
setUpDialog
(
final
BottomSheetDialog
bottomSheetDialog
,
String
messageId
)
{
RocketChatCache
cache
=
new
RocketChatCache
(
bottomSheetDialog
.
getContext
());
String
hostname
=
cache
.
getSelectedServerHostname
();
EditMessageInteractor
editMessageInteractor
=
getEditMessageInteractor
(
hostname
);
MessageRepository
messageRepository
=
new
RealmMessageRepository
(
hostname
);
Disposable
disposable
=
messageRepository
.
getById
(
messageId
)
.
flatMap
(
it
->
{
if
(!
it
.
isPresent
())
{
return
Single
.
just
(
false
);
}
return
editMessageInteractor
.
isAllowed
(
it
.
get
());
})
.
subscribeOn
(
AndroidSchedulers
.
from
(
BackgroundLooper
.
get
()))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
isEditAllowed
->
{
if
(
isEditAllowed
)
{
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_edit_action
)
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
((
TextView
)
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_info
))
.
setText
(
R
.
string
.
message_options_no_permissions_info
);
}
},
throwable
->
{
((
TextView
)
bottomSheetDialog
.
findViewById
(
R
.
id
.
message_options_info
))
.
setText
(
R
.
string
.
message_options_no_message_info
);
Logger
.
report
(
throwable
);
}
);
compositeDisposable
.
add
(
disposable
);
}
private
EditMessageInteractor
getEditMessageInteractor
(
String
hostname
)
{
UserRepository
userRepository
=
new
RealmUserRepository
(
hostname
);
RoomRoleRepository
roomRoleRepository
=
new
RealmRoomRoleRepository
(
hostname
);
PermissionRepository
permissionRepository
=
new
RealmPermissionRepository
(
hostname
);
PermissionInteractor
permissionInteractor
=
new
PermissionInteractor
(
userRepository
,
roomRoleRepository
,
permissionRepository
);
MessageRepository
messageRepository
=
new
RealmMessageRepository
(
hostname
);
RoomRepository
roomRepository
=
new
RealmRoomRepository
(
hostname
);
PublicSettingRepository
publicSettingRepository
=
new
RealmPublicSettingRepository
(
hostname
);
return
new
EditMessageInteractor
(
permissionInteractor
,
userRepository
,
messageRepository
,
roomRepository
,
publicSettingRepository
);
}
}
app/src/main/res/layout/dialog_message_options.xml
0 → 100644
View file @
c687071d
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/message_options_info"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/margin_8"
android:gravity=
"center"
tools:text=
"Edit message"
/>
<Button
android:id=
"@+id/message_options_edit_action"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
style=
"@style/Base.Widget.AppCompat.Button.Colored"
android:text=
"@string/edit_message"
android:visibility=
"gone"
tools:visibility=
"visible"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
c687071d
...
...
@@ -51,4 +51,7 @@
<string
name=
"open_your_authentication_app_and_enter_the_code"
>
Open your authentication app and enter the code
</string>
<string
name=
"two_factor_code"
>
Two-factor code
</string>
<string
name=
"navigation_search_rooms"
>
Search Rooms
</string>
<string
name=
"edit_message"
>
Edit message
</string>
<string
name=
"message_options_no_message_info"
>
Ooops. Something\'s up!
</string>
<string
name=
"message_options_no_permissions_info"
>
You have no permissions
</string>
</resources>
persistence-realm/src/main/java/chat/rocket/persistence/realm/repositories/RealmPermissionRepository.java
View file @
c687071d
...
...
@@ -34,8 +34,13 @@ public class RealmPermissionRepository extends RealmRepository implements Permis
pair
->
close
(
pair
.
first
,
pair
.
second
)
)
.
unsubscribeOn
(
AndroidSchedulers
.
from
(
Looper
.
myLooper
()))
.
filter
(
it
->
it
.
isLoaded
()
&&
it
.
isValid
()
&&
it
.
size
()
>
0
)
.
map
(
it
->
Optional
.
of
(
it
.
get
(
0
).
asPermission
()))
.
filter
(
it
->
it
.
isLoaded
()
&&
it
.
isValid
())
.
map
(
it
->
{
if
(
it
.
size
()
==
0
)
{
return
Optional
.<
Permission
>
absent
();
}
return
Optional
.
of
(
it
.
get
(
0
).
asPermission
());
})
.
first
(
Optional
.
absent
()));
}
}
persistence-realm/src/main/java/chat/rocket/persistence/realm/repositories/RealmRoomRoleRepository.java
View file @
c687071d
...
...
@@ -14,6 +14,7 @@ import chat.rocket.core.models.User;
import
chat.rocket.core.repositories.RoomRoleRepository
;
import
chat.rocket.persistence.realm.RealmStore
;
import
chat.rocket.persistence.realm.models.ddp.RealmRoomRole
;
import
chat.rocket.persistence.realm.models.ddp.RealmUser
;
import
hu.akarnokd.rxjava.interop.RxJavaInterop
;
public
class
RealmRoomRoleRepository
extends
RealmRepository
implements
RoomRoleRepository
{
...
...
@@ -31,14 +32,19 @@ public class RealmRoomRoleRepository extends RealmRepository implements RoomRole
pair
->
RxJavaInterop
.
toV2Flowable
(
pair
.
first
.
where
(
RealmRoomRole
.
class
)
.
equalTo
(
RealmRoomRole
.
Columns
.
ROOM_ID
,
room
.
getId
())
.
equalTo
(
RealmRoomRole
.
Columns
.
USER
+
".
id"
,
user
.
getId
())
.
equalTo
(
RealmRoomRole
.
Columns
.
USER
+
".
"
+
RealmUser
.
ID
,
user
.
getId
())
.
findAll
()
.<
RealmResults
<
RealmRoomRole
>>
asObservable
()),
pair
->
close
(
pair
.
first
,
pair
.
second
)
)
.
unsubscribeOn
(
AndroidSchedulers
.
from
(
Looper
.
myLooper
()))
.
filter
(
it
->
it
.
isLoaded
()
&&
it
.
isValid
()
&&
it
.
size
()
>
0
)
.
map
(
it
->
Optional
.
of
(
it
.
get
(
0
).
asRoomRole
()))
.
filter
(
it
->
it
.
isLoaded
()
&&
it
.
isValid
())
.
map
(
it
->
{
if
(
it
.
size
()
==
0
)
{
return
Optional
.<
RoomRole
>
absent
();
}
return
Optional
.
of
(
it
.
get
(
0
).
asRoomRole
());
})
.
first
(
Optional
.
absent
()));
}
}
rocket-chat-core/build.gradle
View file @
c687071d
plugins
{
id
"org.jetbrains.kotlin.jvm"
version
"1.1.2"
id
"org.jetbrains.kotlin.jvm"
version
"1.1.2
-2
"
}
apply
plugin:
'idea'
...
...
@@ -8,7 +8,7 @@ apply plugin: 'java'
dependencies
{
compile
fileTree
(
dir:
'libs'
,
include:
[
'*.jar'
])
compile
'org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2'
compile
'org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2
-3
'
compile
'com.google.code.findbugs:jsr305:3.0.1'
...
...
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