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
a5488355
Commit
a5488355
authored
Apr 18, 2019
by
Filipe de Lima Brito
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of github.com:RocketChat/Rocket.Chat.Android into new/directory
parents
d1b4d63b
84bdd7c6
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
166 additions
and
126 deletions
+166
-126
Menu.kt
app/src/main/java/chat/rocket/android/chatdetails/ui/Menu.kt
+1
-1
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+61
-7
AndroidPermissionsHelper.kt
...va/chat/rocket/android/helper/AndroidPermissionsHelper.kt
+39
-2
ImageHelper.kt
app/src/main/java/chat/rocket/android/helper/ImageHelper.kt
+3
-22
SettingsFragment.kt
.../java/chat/rocket/android/settings/ui/SettingsFragment.kt
+5
-6
UserDetailsFragment.kt
...chat/rocket/android/userdetails/ui/UserDetailsFragment.kt
+4
-1
VideoConferenceActivity.kt
...ket/android/videoconference/ui/VideoConferenceActivity.kt
+17
-29
avatar_profile.xml
app/src/main/res/layout/avatar_profile.xml
+1
-1
fragment_preferences.xml
app/src/main/res/layout/fragment_preferences.xml
+0
-52
fragment_settings.xml
app/src/main/res/layout/fragment_settings.xml
+2
-4
strings.xml
app/src/main/res/values-ar/strings.xml
+2
-0
strings.xml
app/src/main/res/values-de/strings.xml
+2
-0
strings.xml
app/src/main/res/values-es/strings.xml
+2
-0
strings.xml
app/src/main/res/values-fa/strings.xml
+2
-0
strings.xml
app/src/main/res/values-fr/strings.xml
+2
-0
strings.xml
app/src/main/res/values-hi-rIN/strings.xml
+2
-0
strings.xml
app/src/main/res/values-it/strings.xml
+2
-0
strings.xml
app/src/main/res/values-ja/strings.xml
+2
-0
strings.xml
app/src/main/res/values-pt-rBR/strings.xml
+2
-0
strings.xml
app/src/main/res/values-pt-rPT/strings.xml
+2
-0
strings.xml
app/src/main/res/values-ru-rRU/strings.xml
+2
-0
strings.xml
app/src/main/res/values-tr/strings.xml
+2
-0
strings.xml
app/src/main/res/values-uk/strings.xml
+2
-0
strings.xml
app/src/main/res/values-zh-rCN/strings.xml
+2
-0
strings.xml
app/src/main/res/values-zh-rTW/strings.xml
+2
-0
strings.xml
app/src/main/res/values/strings.xml
+2
-0
dependencies.gradle
dependencies.gradle
+1
-1
No files found.
app/src/main/java/chat/rocket/android/chatdetails/ui/Menu.kt
View file @
a5488355
...
...
@@ -13,7 +13,7 @@ internal fun ChatDetailsFragment.setupMenu(menu: Menu) {
with
(
settings
.
get
(
it
))
{
if
(
isJitsiEnabled
())
{
if
(
roomTypeOf
(
chatRoomType
)
!
is
RoomType
.
DirectMessage
&&
!
isJitsiEnabledForChannels
())
{
return
return
@let
}
menu
.
add
(
Menu
.
NONE
,
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
a5488355
...
...
@@ -5,6 +5,7 @@ import android.content.ClipData
import
android.content.ClipboardManager
import
android.content.Context
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.graphics.drawable.Drawable
import
android.net.Uri
import
android.os.Bundle
...
...
@@ -61,9 +62,13 @@ import chat.rocket.android.emoji.EmojiPickerPopup
import
chat.rocket.android.emoji.EmojiReactionListener
import
chat.rocket.android.emoji.internal.isCustom
import
chat.rocket.android.helper.EndlessRecyclerViewScrollListener
import
chat.rocket.android.helper.ImageHelper
import
chat.rocket.android.helper.KeyboardHelper
import
chat.rocket.android.helper.MessageParser
import
chat.rocket.android.helper.AndroidPermissionsHelper
import
chat.rocket.android.helper.AndroidPermissionsHelper.getCameraPermission
import
chat.rocket.android.helper.AndroidPermissionsHelper.getWriteExternalStoragePermission
import
chat.rocket.android.helper.AndroidPermissionsHelper.hasCameraPermission
import
chat.rocket.android.helper.AndroidPermissionsHelper.hasWriteExternalStoragePermission
import
chat.rocket.android.util.extension.asObservable
import
chat.rocket.android.util.extension.createImageFile
import
chat.rocket.android.util.extensions.circularRevealOrUnreveal
...
...
@@ -81,6 +86,7 @@ import chat.rocket.common.model.RoomType
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.core.internal.realtime.socket.model.State
import
com.bumptech.glide.Glide
import
com.google.android.material.snackbar.Snackbar
import
dagger.android.support.AndroidSupportInjection
import
io.reactivex.Observable
import
io.reactivex.disposables.CompositeDisposable
...
...
@@ -886,8 +892,14 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
button_add_reaction_or_show_keyboard
.
setOnClickListener
{
toggleKeyboard
()
}
button_take_a_photo
.
setOnClickListener
{
dispatchTakePictureIntent
()
// Check for camera permission
context
?.
let
{
if
(
hasCameraPermission
(
it
))
{
dispatchTakePictureIntent
()
}
else
{
getCameraPermission
(
this
)
}
}
handler
.
postDelayed
({
hideAttachmentOptions
()
},
400
)
...
...
@@ -905,11 +917,10 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
button_drawing
.
setOnClickListener
{
activity
?.
let
{
fragmentActivity
->
if
(!
ImageHelper
.
canWriteToExternalStorage
(
fragmentActivity
))
{
ImageHelper
.
checkWritingPermission
(
fragmentActivity
)
if
(!
hasWriteExternalStoragePermission
(
fragmentActivity
))
{
getWriteExternalStoragePermission
(
this
)
}
else
{
val
intent
=
Intent
(
fragmentActivity
,
DrawingActivity
::
class
.
java
)
startActivityForResult
(
intent
,
REQUEST_CODE_FOR_DRAW
)
dispatchDrawingIntent
()
}
}
...
...
@@ -920,6 +931,11 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
private
fun
dispatchDrawingIntent
()
{
val
intent
=
Intent
(
activity
,
DrawingActivity
::
class
.
java
)
startActivityForResult
(
intent
,
REQUEST_CODE_FOR_DRAW
)
}
private
fun
dispatchTakePictureIntent
()
{
Intent
(
MediaStore
.
ACTION_IMAGE_CAPTURE
).
also
{
takePictureIntent
->
// Create the File where the photo should go
...
...
@@ -940,6 +956,44 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
override
fun
onRequestPermissionsResult
(
requestCode
:
Int
,
permissions
:
Array
<
out
String
>,
grantResults
:
IntArray
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
)
when
(
requestCode
)
{
AndroidPermissionsHelper
.
CAMERA_CODE
->
{
if
(
grantResults
.
isNotEmpty
()
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
// permission was granted
dispatchTakePictureIntent
()
}
else
{
// permission denied
Snackbar
.
make
(
root_layout
,
R
.
string
.
msg_camera_permission_denied
,
Snackbar
.
LENGTH_SHORT
).
show
()
}
return
}
AndroidPermissionsHelper
.
WRITE_EXTERNAL_STORAGE_CODE
->
{
if
(
grantResults
.
isNotEmpty
()
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
// permission was granted
dispatchDrawingIntent
()
}
else
{
// permission denied
Snackbar
.
make
(
root_layout
,
R
.
string
.
msg_storage_permission_denied
,
Snackbar
.
LENGTH_SHORT
).
show
()
}
return
}
}
}
private
fun
getDraftMessage
()
{
val
unfinishedMessage
=
presenter
.
getDraftUnfinishedMessage
()
if
(
unfinishedMessage
.
isNotNullNorEmpty
())
{
...
...
app/src/main/java/chat/rocket/android/helper/AndroidPermissionsHelper.kt
View file @
a5488355
package
chat.rocket.android.helper
import
android.Manifest
import
android.app.Activity
import
android.content.Context
import
android.content.pm.PackageManager
import
android.view.ContextThemeWrapper
import
androidx.core.app.ActivityCompat
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
object
AndroidPermissionsHelper
{
const
val
WRITE_EXTERNAL_STORAGE_CODE
=
1
const
val
CAMERA_CODE
=
2
fun
checkPermission
(
context
:
Context
,
permission
:
String
):
Boolean
{
private
fun
checkPermission
(
context
:
Context
,
permission
:
String
):
Boolean
{
return
ContextCompat
.
checkSelfPermission
(
context
,
permission
)
==
PackageManager
.
PERMISSION_GRANTED
}
fun
requestPermission
(
context
:
Activity
,
permission
:
String
,
requestCode
:
Int
)
{
private
fun
requestPermission
(
context
:
Activity
,
permission
:
String
,
requestCode
:
Int
)
{
ActivityCompat
.
requestPermissions
(
context
,
arrayOf
(
permission
),
requestCode
)
}
fun
hasCameraPermission
(
context
:
Context
):
Boolean
{
return
AndroidPermissionsHelper
.
checkPermission
(
context
,
Manifest
.
permission
.
CAMERA
)
}
fun
getCameraPermission
(
fragment
:
Fragment
)
{
fragment
.
requestPermissions
(
arrayOf
(
Manifest
.
permission
.
CAMERA
),
CAMERA_CODE
)
}
fun
hasWriteExternalStoragePermission
(
context
:
Context
):
Boolean
{
return
checkPermission
(
context
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
}
fun
getWriteExternalStoragePermission
(
fragment
:
Fragment
)
{
fragment
.
requestPermissions
(
arrayOf
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
),
WRITE_EXTERNAL_STORAGE_CODE
)
}
fun
checkWritingPermission
(
context
:
Context
)
{
if
(
context
is
ContextThemeWrapper
)
{
val
activity
=
if
(
context
.
baseContext
is
Activity
)
context
.
baseContext
as
Activity
else
context
as
Activity
AndroidPermissionsHelper
.
requestPermission
(
activity
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
AndroidPermissionsHelper
.
WRITE_EXTERNAL_STORAGE_CODE
)
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/helper/ImageHelper.kt
View file @
a5488355
package
chat.rocket.android.helper
import
android.Manifest
import
android.app.Activity
import
android.content.Context
import
android.graphics.Color
import
android.graphics.Typeface
...
...
@@ -9,7 +7,6 @@ import android.media.MediaScannerConnection
import
android.os.Environment
import
android.text.TextUtils
import
android.util.TypedValue
import
android.view.ContextThemeWrapper
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.TextView
...
...
@@ -18,6 +15,8 @@ import androidx.appcompat.widget.Toolbar
import
androidx.core.net.toUri
import
androidx.core.view.setPadding
import
chat.rocket.android.R
import
chat.rocket.android.helper.AndroidPermissionsHelper.checkWritingPermission
import
chat.rocket.android.helper.AndroidPermissionsHelper.hasWriteExternalStoragePermission
import
com.facebook.binaryresource.FileBinaryResource
import
com.facebook.cache.common.CacheKey
import
com.facebook.imageformat.ImageFormatChecker
...
...
@@ -117,7 +116,7 @@ object ImageHelper {
}
private
fun
saveImage
(
context
:
Context
):
Boolean
{
if
(!
canWriteToExternalStorage
(
context
))
{
if
(!
hasWriteExternalStoragePermission
(
context
))
{
checkWritingPermission
(
context
)
return
false
}
...
...
@@ -152,22 +151,4 @@ object ImageHelper {
}
return
true
}
fun
canWriteToExternalStorage
(
context
:
Context
):
Boolean
{
return
AndroidPermissionsHelper
.
checkPermission
(
context
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
}
fun
checkWritingPermission
(
context
:
Context
)
{
if
(
context
is
ContextThemeWrapper
)
{
val
activity
=
if
(
context
.
baseContext
is
Activity
)
context
.
baseContext
as
Activity
else
context
as
Activity
AndroidPermissionsHelper
.
requestPermission
(
activity
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
AndroidPermissionsHelper
.
WRITE_EXTERNAL_STORAGE_CODE
)
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
View file @
a5488355
...
...
@@ -23,7 +23,6 @@ import chat.rocket.android.settings.presentation.SettingsView
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.invalidateFirebaseToken
import
com.bumptech.glide.Glide
import
dagger.android.support.AndroidSupportInjection
import
kotlinx.android.synthetic.main.app_bar.*
import
kotlinx.android.synthetic.main.fragment_settings.*
...
...
@@ -65,7 +64,7 @@ class SettingsFragment : Fragment(), SettingsView {
isDeleteAccountEnabled
:
Boolean
,
serverVersion
:
String
)
{
context
?.
let
{
Glide
.
with
(
it
).
load
(
avatar
).
into
(
image_avatar
)
}
image_avatar
.
setImageURI
(
avatar
)
text_display_name
.
text
=
displayName
...
...
@@ -89,7 +88,7 @@ class SettingsFragment : Fragment(), SettingsView {
text_server_version
.
text
=
getString
(
R
.
string
.
msg_server_version
,
serverVersion
)
text_logout
.
setOnClickListener
{
showLogoutDialog
()}
text_logout
.
setOnClickListener
{
showLogoutDialog
()
}
with
(
text_administration
)
{
isVisible
=
isAdministrationEnabled
...
...
@@ -143,8 +142,8 @@ class SettingsFragment : Fragment(), SettingsView {
private
fun
contactSupport
()
{
val
uriText
=
"mailto:${"
support
@rocket
.
chat
"}"
+
"?subject="
+
Uri
.
encode
(
getString
(
R
.
string
.
msg_android_app_support
))
+
"&body="
+
Uri
.
encode
(
getDeviceAndAppInformation
())
"?subject="
+
Uri
.
encode
(
getString
(
R
.
string
.
msg_android_app_support
))
+
"&body="
+
Uri
.
encode
(
getDeviceAndAppInformation
())
with
(
Intent
(
Intent
.
ACTION_SENDTO
))
{
data
=
uriText
.
toUri
()
...
...
@@ -177,7 +176,7 @@ class SettingsFragment : Fragment(), SettingsView {
context
?.
let
{
val
builder
=
AlertDialog
.
Builder
(
it
)
builder
.
setTitle
(
R
.
string
.
title_are_you_sure
)
.
setPositiveButton
(
R
.
string
.
action_logout
)
{
_
,
_
->
presenter
.
logout
()}
.
setPositiveButton
(
R
.
string
.
action_logout
)
{
_
,
_
->
presenter
.
logout
()
}
.
setNegativeButton
(
android
.
R
.
string
.
no
)
{
dialog
,
_
->
dialog
.
cancel
()
}
.
create
()
.
show
()
...
...
app/src/main/java/chat/rocket/android/userdetails/ui/UserDetailsFragment.kt
View file @
a5488355
...
...
@@ -20,6 +20,7 @@ import chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.ui
import
com.bumptech.glide.Glide
import
com.bumptech.glide.load.MultiTransformation
import
com.bumptech.glide.load.engine.DiskCacheStrategy
import
com.bumptech.glide.load.resource.bitmap.CenterCrop
import
com.bumptech.glide.load.resource.bitmap.RoundedCorners
import
com.bumptech.glide.request.RequestOptions
...
...
@@ -86,6 +87,8 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
isVideoCallAllowed
:
Boolean
)
{
val
requestBuilder
=
Glide
.
with
(
this
).
load
(
avatarUrl
)
.
apply
(
RequestOptions
.
skipMemoryCacheOf
(
true
))
.
apply
(
RequestOptions
.
diskCacheStrategyOf
(
DiskCacheStrategy
.
NONE
))
requestBuilder
.
apply
(
RequestOptions
.
bitmapTransform
(
MultiTransformation
(
BlurTransformation
(),
CenterCrop
()))
...
...
@@ -147,4 +150,4 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
private
fun
setupListeners
()
{
image_arrow_back
.
setOnClickListener
{
activity
?.
onBackPressed
()
}
}
}
\ No newline at end of file
}
app/src/main/java/chat/rocket/android/videoconference/ui/VideoConferenceActivity.kt
View file @
a5488355
...
...
@@ -3,14 +3,15 @@ package chat.rocket.android.videoconference.ui
import
android.content.Context
import
android.content.Intent
import
android.os.Bundle
import
androidx.core.os.bundleOf
import
chat.rocket.android.videoconference.presenter.JitsiVideoConferenceView
import
chat.rocket.android.videoconference.presenter.VideoConferencePresenter
import
dagger.android.AndroidInjection
import
org.jitsi.meet.sdk.JitsiMeetActivity
import
org.jitsi.meet.sdk.JitsiMeetConferenceOptions
import
org.jitsi.meet.sdk.JitsiMeetView
import
org.jitsi.meet.sdk.JitsiMeetViewListener
import
timber.log.Timber
import
java.net.URL
import
javax.inject.Inject
fun
Context
.
videoConferenceIntent
(
chatRoomId
:
String
,
chatRoomType
:
String
):
Intent
=
...
...
@@ -23,8 +24,7 @@ private const val INTENT_CHAT_ROOM_TYPE = "chat_room_type"
class
VideoConferenceActivity
:
JitsiMeetActivity
(),
JitsiVideoConferenceView
,
JitsiMeetViewListener
{
@Inject
lateinit
var
presenter
:
VideoConferencePresenter
@Inject
lateinit
var
presenter
:
VideoConferencePresenter
private
lateinit
var
chatRoomId
:
String
private
lateinit
var
chatRoomType
:
String
private
var
view
:
JitsiMeetView
?
=
null
...
...
@@ -34,9 +34,7 @@ class VideoConferenceActivity : JitsiMeetActivity(), JitsiVideoConferenceView,
super
.
onCreate
(
savedInstanceState
)
chatRoomId
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_ID
)
requireNotNull
(
chatRoomId
)
{
"no chat_room_id provided in Intent extras"
}
chatRoomType
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_TYPE
)
requireNotNull
(
chatRoomType
)
{
"no chat_room_type provided in Intent extras"
}
view
=
JitsiMeetView
(
this
)
view
?.
listener
=
this
...
...
@@ -52,34 +50,24 @@ class VideoConferenceActivity : JitsiMeetActivity(), JitsiVideoConferenceView,
override
fun
onConferenceJoined
(
map
:
MutableMap
<
String
,
Any
>?)
=
logJitsiMeetViewState
(
"Joined video conferencing"
,
map
)
override
fun
onConferenceWillLeave
(
map
:
MutableMap
<
String
,
Any
>?)
=
logJitsiMeetViewState
(
"Leaving video conferencing"
,
map
)
override
fun
onConferenceLeft
(
map
:
MutableMap
<
String
,
Any
>?)
{
logJitsiMeetViewState
(
"Left video conferencing"
,
map
)
override
fun
onConferenceTerminated
(
map
:
MutableMap
<
String
,
Any
>?)
{
map
?.
let
{
if
(
it
.
containsKey
(
"error"
))
{
logJitsiMeetViewState
(
"Terminated video conferencing with error"
,
map
)
}
else
{
logJitsiMeetViewState
(
"Terminated video conferencing"
,
map
)
}
}
finishJitsiVideoConference
()
}
override
fun
onLoadConfigError
(
map
:
MutableMap
<
String
,
Any
>?)
=
logJitsiMeetViewState
(
"Error loading video conference config"
,
map
)
override
fun
onConferenceFailed
(
map
:
MutableMap
<
String
,
Any
>?)
=
logJitsiMeetViewState
(
"Video conference failed"
,
map
)
override
fun
startJitsiVideoConference
(
url
:
String
,
name
:
String
?)
{
view
?.
loadURLObject
(
bundleOf
(
"config"
to
bundleOf
(
"startWithAudioMuted"
to
true
,
"startWithVideoMuted"
to
true
),
"context"
to
bundleOf
(
"user"
to
bundleOf
(
"name"
to
name
),
"iss"
to
"rocketchat-android"
),
"url"
to
url
)
)
JitsiMeetConferenceOptions
.
Builder
()
.
setAudioMuted
(
true
)
.
setVideoMuted
(
true
)
.
setServerURL
(
URL
(
url
))
.
setAudioOnly
(
false
)
.
build
().
let
{
view
?.
join
(
it
)
}
}
override
fun
finishJitsiVideoConference
()
{
...
...
app/src/main/res/layout/avatar_profile.xml
View file @
a5488355
...
...
@@ -15,6 +15,6 @@
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:roundedCornerRadius=
"
2
dp"
/>
app:roundedCornerRadius=
"
4
dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_preferences.xml
deleted
100644 → 0
View file @
d1b4d63b
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_margin=
"16dp"
tools:context=
"preferences.ui.PreferencesFragment"
>
<com.wang.avi.AVLoadingIndicatorView
android:id=
"@+id/view_loading"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
app:indicatorColor=
"@color/colorBlack"
app:indicatorName=
"BallPulseIndicator"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:visibility=
"visible"
/>
<TextView
android:id=
"@+id/text_analytics_tracking"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/msg_analytics_tracking"
android:textColor=
"@color/colorPrimaryText"
android:textSize=
"16sp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/text_analytics_tracking_description"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/msg_send_analytics_tracking"
android:textColor=
"@color/colorSecondaryText"
android:textSize=
"12sp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/text_analytics_tracking"
/>
<Switch
android:id=
"@+id/switch_analytics_tracking"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:checked=
"true"
app:layout_constraintBottom_toBottomOf=
"@+id/text_analytics_tracking_description"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/text_analytics_tracking"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_settings.xml
View file @
a5488355
...
...
@@ -34,14 +34,13 @@
android:paddingBottom=
"5dp"
app:layout_constraintTop_toTopOf=
"parent"
>
<
Imag
eView
<
com.facebook.drawee.view.SimpleDrawe
eView
android:id=
"@+id/image_avatar"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:background=
"@drawable/bg_border_user_details_avatar"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:srcCompat=
"@tools:sample/avatars[6]
"
/>
app:roundedCornerRadius=
"4dp
"
/>
<TextView
android:id=
"@+id/text_display_name"
...
...
@@ -248,7 +247,6 @@
android:textColor=
"#DE000000"
android:textSize=
"16sp"
android:textStyle=
"normal"
app:layout_constraintEnd_toStartOf=
"@id/switch_analytics_tracking"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
...
...
app/src/main/res/values-ar/strings.xml
View file @
a5488355
...
...
@@ -182,6 +182,8 @@
<item
quantity=
"two"
>
%1$s reacted with %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Credentials saved successfully
</string>
<!-- TODO Translate -->
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-de/strings.xml
View file @
a5488355
...
...
@@ -173,6 +173,8 @@
<item
quantity=
"other"
>
%1$s reagierte mit %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Login-Daten erfolgreich gespeichert
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-es/strings.xml
View file @
a5488355
...
...
@@ -193,6 +193,8 @@
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
<!-- TODO - Add proper translation -->
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Credenciales guardadas con éxito
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<!-- Preferences messages -->
<string
name=
"msg_analytics_tracking"
>
Analytics tracking
</string>
<!-- TODO Add translation -->
...
...
app/src/main/res/values-fa/strings.xml
View file @
a5488355
...
...
@@ -177,6 +177,8 @@
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- TODO Add translation -->
<string
name=
"msg_credentials_saved_successfully"
>
اختیارها با موفقیت ذخیره شد
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-fr/strings.xml
View file @
a5488355
...
...
@@ -181,6 +181,8 @@
<item
quantity=
"other"
>
%1$s a réagi avec %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Certificats sauvegardés
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-hi-rIN/strings.xml
View file @
a5488355
...
...
@@ -167,6 +167,8 @@
<string
name=
"msg_continue_with_wordpress"
><b>
WordPress
</b>
के साथ जारी रखें
</string>
<string
name=
"msg_two_factor_authentication"
>
दो तरीकों से प्रमाणीकरण
</string>
<string
name=
"msg__your_2fa_code"
>
आपका 2FA कोड क्या है?
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
प्राइवेट
</string>
...
...
app/src/main/res/values-it/strings.xml
View file @
a5488355
...
...
@@ -174,6 +174,8 @@
<item
quantity=
"other"
>
%1$s ha reagito con %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Credenziali salvate con successo
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-ja/strings.xml
View file @
a5488355
...
...
@@ -177,6 +177,8 @@
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
<!-- TODO - Add proper translation -->
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
資格情報を正常に保存しました
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-pt-rBR/strings.xml
View file @
a5488355
...
...
@@ -185,6 +185,8 @@
<string
name=
"msg_server"
>
Servidor
</string>
<string
name=
"msg_add_new_server"
>
Adicionar Novo Servidor
</string>
<string
name=
"msg_directory"
>
Diretório
</string>
<string
name=
"msg_camera_permission_denied"
>
A permissão da câmera é necessária
</string>
<string
name=
"msg_storage_permission_denied"
>
A permissão de armazenamento é necessária
</string>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Privado
</string>
...
...
app/src/main/res/values-pt-rPT/strings.xml
View file @
a5488355
...
...
@@ -173,6 +173,8 @@
<item
quantity=
"one"
>
%1$s reagiu com %2$s
</item>
<item
quantity=
"other"
>
%1$s reagiram com %2$s
</item>
</plurals>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-ru-rRU/strings.xml
View file @
a5488355
...
...
@@ -180,6 +180,8 @@
<item
quantity=
"many"
>
%1$s реагируют с %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Учетные данные успешно сохранены
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-tr/strings.xml
View file @
a5488355
...
...
@@ -164,6 +164,8 @@
<string
name=
"msg_continue_with_wordpress"
>
Continue with
<b>
WordPress
</b></string>
<!-- TODO Add translation -->
<string
name=
"msg_two_factor_authentication"
>
Two-factor Authentication
</string>
<!-- TODO Add translation -->
<string
name=
"msg__your_2fa_code"
>
What’s your 2FA code?
</string>
<!-- TODO Add translation -->
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Özel
</string>
...
...
app/src/main/res/values-uk/strings.xml
View file @
a5488355
...
...
@@ -179,6 +179,8 @@
<item
quantity=
"many"
>
%1$s reacted with %2$s
</item>
<!-- TODO - Add proper translation -->
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Облікові дані було успішно збережено
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-zh-rCN/strings.xml
View file @
a5488355
...
...
@@ -174,6 +174,8 @@
<item
quantity=
"other"
>
%1$s 使用了 %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
凭证成功保存
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-zh-rTW/strings.xml
View file @
a5488355
...
...
@@ -174,6 +174,8 @@
<item
quantity=
"other"
>
%1$s 使用了 %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
憑證保存成功
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<!-- TODO Add translation -->
<string
name=
"msg_server"
>
Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<!-- TODO Translate -->
<string
name=
"msg_directory"
>
Directory
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values/strings.xml
View file @
a5488355
...
...
@@ -190,6 +190,8 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<string
name=
"msg_credentials_saved_successfully"
>
Credentials saved successfully
</string>
<string
name=
"msg_camera_permission_denied"
>
Camera permission is needed to open camera.
</string>
<string
name=
"msg_storage_permission_denied"
>
Storage permission is needed to open Drawing.
</string>
<string
name=
"msg_server"
>
Server
</string>
<string
name=
"msg_add_new_server"
>
Add New Server
</string>
<string
name=
"msg_directory"
>
Directory
</string>
...
...
dependencies.gradle
View file @
a5488355
...
...
@@ -56,7 +56,7 @@ ext {
glide
:
'4.8.0'
,
glideTransformations
:
'4.0.0'
,
jitsi
:
'
1.2
1.0'
,
jitsi
:
'
2.
1.0'
,
// For testing
junit
:
'4.12'
,
...
...
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