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
c531561a
Unverified
Commit
c531561a
authored
Nov 23, 2018
by
Lucio Maciel
Committed by
GitHub
Nov 23, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into improvement/avoid-typing-domain-and-tld-for-rc
parents
689cffce
77ae37ce
Changes
36
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
1769 additions
and
86 deletions
+1769
-86
12.json
app/schemas/chat.rocket.android.db.RCDatabase/12.json
+1087
-0
Analytics.kt
app/src/main/java/chat/rocket/android/analytics/Analytics.kt
+8
-1
AnalyticsManager.kt
...in/java/chat/rocket/android/analytics/AnalyticsManager.kt
+6
-0
BaseViewHolder.kt
...va/chat/rocket/android/chatroom/adapter/BaseViewHolder.kt
+4
-0
MessageReactionsAdapter.kt
...ocket/android/chatroom/adapter/MessageReactionsAdapter.kt
+8
-1
ChatRoomPresenter.kt
...rocket/android/chatroom/presentation/ChatRoomPresenter.kt
+5
-5
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+52
-2
ReactionUiModel.kt
...a/chat/rocket/android/chatroom/uimodel/ReactionUiModel.kt
+3
-2
UiModelMapper.kt
...ava/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
+5
-2
RoomUiModel.kt
...hat/rocket/android/chatrooms/adapter/model/RoomUiModel.kt
+3
-2
ChatRoomsPresenter.kt
...cket/android/chatrooms/presentation/ChatRoomsPresenter.kt
+2
-1
ChatRoomsViewModel.kt
.../rocket/android/chatrooms/viewmodel/ChatRoomsViewModel.kt
+2
-2
DatabaseManager.kt
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
+51
-46
RCDatabase.kt
app/src/main/java/chat/rocket/android/db/RCDatabase.kt
+5
-2
ChatRoomEntity.kt
.../main/java/chat/rocket/android/db/model/ChatRoomEntity.kt
+6
-2
PasswordPresenter.kt
...droid/settings/password/presentation/PasswordPresenter.kt
+5
-1
SettingsFragment.kt
.../java/chat/rocket/android/settings/ui/SettingsFragment.kt
+11
-0
emoji_image_row_item.xml
app/src/main/res/layout/emoji_image_row_item.xml
+14
-0
emoji_row_item.xml
app/src/main/res/layout/emoji_row_item.xml
+12
-0
reaction_praises_list_item.xml
app/src/main/res/layout/reaction_praises_list_item.xml
+35
-0
strings.xml
app/src/main/res/values-de/strings.xml
+10
-1
strings.xml
app/src/main/res/values-es/strings.xml
+10
-1
strings.xml
app/src/main/res/values-fr/strings.xml
+10
-1
strings.xml
app/src/main/res/values-hi-rIN/strings.xml
+10
-1
strings.xml
app/src/main/res/values-it/strings.xml
+319
-0
strings.xml
app/src/main/res/values-ja/strings.xml
+11
-5
strings.xml
app/src/main/res/values-pt-rBR/strings.xml
+10
-3
strings.xml
app/src/main/res/values-ru-rRU/strings.xml
+11
-1
strings.xml
app/src/main/res/values-tr/strings.xml
+10
-1
strings.xml
app/src/main/res/values-uk/strings.xml
+11
-1
defaults.xml
app/src/main/res/values/defaults.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+8
-1
AnswersAnalytics.kt
...ay/java/chat/rocket/android/analytics/AnswersAnalytics.kt
+7
-0
GoogleAnalyticsForFirebase.kt
...at/rocket/android/analytics/GoogleAnalyticsForFirebase.kt
+5
-0
EmojiReactionListener.kt
...n/java/chat/rocket/android/emoji/EmojiReactionListener.kt
+11
-1
strings.xml
emoji/src/main/res/values/strings.xml
+1
-0
No files found.
app/schemas/chat.rocket.android.db.RCDatabase/12.json
0 → 100644
View file @
c531561a
This diff is collapsed.
Click to expand it.
app/src/main/java/chat/rocket/android/analytics/Analytics.kt
View file @
c531561a
...
...
@@ -61,7 +61,14 @@ interface Analytics {
fun
logServerSwitch
(
serverUrl
:
String
,
serverCount
:
Int
)
{}
/**
* Logs the admin opening.
* Logs the admin opening
event
.
*/
fun
logOpenAdmin
()
{}
/**
* Logs the reset password event.
*
* @param resetPasswordSucceeded True if successful reset password, false otherwise.
*/
fun
logResetPassword
(
resetPasswordSucceeded
:
Boolean
)
{}
}
app/src/main/java/chat/rocket/android/analytics/AnalyticsManager.kt
View file @
c531561a
...
...
@@ -70,4 +70,10 @@ class AnalyticsManager @Inject constructor(
analytics
.
forEach
{
it
.
logOpenAdmin
()
}
}
}
fun
logResetPassword
(
resetPasswordSucceeded
:
Boolean
)
{
if
(
analyticsTrackingInteractor
.
get
())
{
analytics
.
forEach
{
it
.
logResetPassword
(
resetPasswordSucceeded
)
}
}
}
}
app/src/main/java/chat/rocket/android/chatroom/adapter/BaseViewHolder.kt
View file @
c531561a
...
...
@@ -61,6 +61,10 @@ abstract class BaseViewHolder<T : BaseUiModel<*>>(
reactionListener
?.
onReactionAdded
(
messageId
,
emoji
)
}
}
override
fun
onReactionLongClicked
(
shortname
:
String
,
isCustom
:
Boolean
,
url
:
String
?,
usernames
:
List
<
String
>)
{
reactionListener
?.
onReactionLongClicked
(
shortname
,
isCustom
,
url
,
usernames
)
}
}
val
context
=
itemView
.
context
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/MessageReactionsAdapter.kt
View file @
c531561a
...
...
@@ -75,7 +75,7 @@ class MessageReactionsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>()
class
ReactionViewHolder
(
view
:
View
,
private
val
listener
:
EmojiReactionListener
?
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
,
View
.
OnLongClickListener
{
@Inject
lateinit
var
localRepository
:
LocalRepository
...
...
@@ -121,6 +121,8 @@ class MessageReactionsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>()
view_flipper_reaction
.
setOnClickListener
(
this
@ReactionViewHolder
)
text_count
.
setOnClickListener
(
this
@ReactionViewHolder
)
view_flipper_reaction
.
setOnLongClickListener
(
this
@ReactionViewHolder
)
text_count
.
setOnLongClickListener
(
this
@ReactionViewHolder
)
}
}
...
...
@@ -132,6 +134,11 @@ class MessageReactionsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>()
}
}
}
override
fun
onLongClick
(
v
:
View
?):
Boolean
{
listener
?.
onReactionLongClicked
(
reaction
.
shortname
,
reaction
.
isCustom
,
reaction
.
url
,
reaction
.
usernames
)
return
true
}
}
class
AddReactionViewHolder
(
...
...
app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt
View file @
c531561a
...
...
@@ -34,11 +34,9 @@ import chat.rocket.android.server.domain.uploadMimeTypeFilter
import
chat.rocket.android.server.domain.useRealName
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.server.infraestructure.state
import
chat.rocket.android.util.extension.compressImageAndGetByteArray
import
chat.rocket.android.util.extension.getByteArray
import
chat.rocket.android.util.extension.launchUI
import
chat.rocket.android.util.extensions.avatarUrl
import
chat.rocket.android.util.extensions.getBitmpap
import
chat.rocket.android.util.retryIO
import
chat.rocket.common.RocketChatException
import
chat.rocket.common.model.RoomType
...
...
@@ -82,7 +80,6 @@ import kotlinx.coroutines.experimental.launch
import
kotlinx.coroutines.experimental.withContext
import
org.threeten.bp.Instant
import
timber.log.Timber
import
java.io.InputStream
import
java.util.*
import
javax.inject.Inject
...
...
@@ -138,9 +135,12 @@ class ChatRoomPresenter @Inject constructor(
}
finally
{
// User has at least an 'owner' or 'moderator' role.
val
userCanMod
=
isOwnerOrMod
()
val
chatRoom
=
dbManager
.
getRoom
(
roomId
)
val
muted
=
chatRoom
?.
chatRoom
?.
muted
?:
emptyList
()
// Can post anyway if has the 'post-readonly' permission on server.
val
userCanPost
=
userCanMod
||
permissions
.
canPostToReadOnlyChannels
()
chatIsBroadcast
=
dbManager
.
getRoom
(
roomId
)
?.
chatRoom
?.
run
{
val
userCanPost
=
userCanMod
||
permissions
.
canPostToReadOnlyChannels
()
||
!
muted
.
contains
(
currentLoggedUsername
)
chatIsBroadcast
=
chatRoom
?.
chatRoom
?.
run
{
broadcast
}
?:
false
view
.
onRoomUpdated
(
userCanPost
,
chatIsBroadcast
,
userCanMod
)
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
c531561a
...
...
@@ -60,6 +60,7 @@ import chat.rocket.android.emoji.EmojiKeyboardPopup
import
chat.rocket.android.emoji.EmojiParser
import
chat.rocket.android.emoji.EmojiPickerPopup
import
chat.rocket.android.emoji.EmojiReactionListener
import
chat.rocket.android.emoji.internal.GlideApp
import
chat.rocket.android.emoji.internal.isCustom
import
chat.rocket.android.helper.EndlessRecyclerViewScrollListener
import
chat.rocket.android.helper.ImageHelper
...
...
@@ -84,6 +85,8 @@ import dagger.android.support.AndroidSupportInjection
import
io.reactivex.Observable
import
io.reactivex.disposables.CompositeDisposable
import
io.reactivex.disposables.Disposable
import
kotlinx.android.synthetic.main.emoji_image_row_item.*
import
kotlinx.android.synthetic.main.emoji_row_item.*
import
kotlinx.android.synthetic.main.fragment_chat_room.*
import
kotlinx.android.synthetic.main.message_attachment_options.*
import
kotlinx.android.synthetic.main.message_composer.*
...
...
@@ -91,6 +94,7 @@ import kotlinx.android.synthetic.main.message_list.*
import
timber.log.Timber
import
java.io.File
import
java.io.IOException
import
kotlinx.android.synthetic.main.reaction_praises_list_item.*
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.atomic.AtomicInteger
import
javax.inject.Inject
...
...
@@ -611,7 +615,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
override
fun
showGenericErrorMessage
(){
override
fun
showGenericErrorMessage
()
{
ui
{
showMessage
(
getString
(
R
.
string
.
msg_generic_error
))
}
...
...
@@ -688,6 +692,44 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
presenter
.
react
(
messageId
,
emoji
.
shortname
)
}
override
fun
onReactionLongClicked
(
shortname
:
String
,
isCustom
:
Boolean
,
url
:
String
?,
usernames
:
List
<
String
>)
{
val
layout
=
LayoutInflater
.
from
(
requireContext
()).
inflate
(
R
.
layout
.
reaction_praises_list_item
,
null
)
val
dialog
=
AlertDialog
.
Builder
(
requireContext
())
.
setView
(
layout
)
.
setCancelable
(
true
)
with
(
layout
)
{
view_flipper
.
displayedChild
=
if
(
isCustom
)
1
else
0
if
(
isCustom
&&
url
!=
null
)
{
val
glideRequest
=
if
(
url
.
endsWith
(
"gif"
,
true
))
{
GlideApp
.
with
(
requireContext
()).
asGif
()
}
else
{
GlideApp
.
with
(
requireContext
()).
asBitmap
()
}
glideRequest
.
load
(
url
).
into
(
emoji_image_view
)
}
else
{
emoji_view
.
text
=
EmojiParser
.
parse
(
requireContext
(),
shortname
)
}
var
listing
=
""
if
(
usernames
.
size
==
1
)
{
listing
=
usernames
.
first
()
}
else
{
usernames
.
forEachIndexed
{
index
,
username
->
listing
+=
if
(
index
==
usernames
.
size
-
1
)
"|$username"
else
"$username, "
}
listing
=
listing
.
replace
(
", |"
,
" ${requireContext().getString(R.string.msg_and)} "
)
}
text_view_usernames
.
text
=
requireContext
().
resources
.
getQuantityString
(
R
.
plurals
.
msg_reacted_with_
,
usernames
.
size
,
listing
,
shortname
)
dialog
.
show
()
}
}
override
fun
showReactionsPopup
(
messageId
:
String
)
{
ui
{
val
emojiPickerPopup
=
EmojiPickerPopup
(
it
)
...
...
@@ -787,9 +829,17 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
private
fun
setupMessageComposer
(
canPost
:
Boolean
)
{
if
(
isReadOnly
&&
!
canPost
)
{
if
(!
canPost
)
{
text_room_is_read_only
.
isVisible
=
true
input_container
.
isVisible
=
false
text_room_is_read_only
.
setText
(
if
(
isReadOnly
)
{
R
.
string
.
msg_this_room_is_read_only
}
else
{
// Not a read-only channel but user has been muted.
R
.
string
.
msg_muted_on_this_channel
}
)
}
else
if
(!
isSubscribed
&&
roomTypeOf
(
chatRoomType
)
!
is
RoomType
.
DirectMessage
)
{
input_container
.
isVisible
=
false
button_join_chat
.
isVisible
=
true
...
...
app/src/main/java/chat/rocket/android/chatroom/uimodel/ReactionUiModel.kt
View file @
c531561a
...
...
@@ -6,5 +6,6 @@ data class ReactionUiModel(
val
unicode
:
CharSequence
,
val
count
:
Int
,
val
usernames
:
List
<
String
>
=
emptyList
(),
var
url
:
String
?
=
null
)
\ No newline at end of file
var
url
:
String
?
=
null
,
val
isCustom
:
Boolean
=
false
)
app/src/main/java/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
View file @
c531561a
...
...
@@ -19,6 +19,7 @@ import chat.rocket.android.dagger.scope.PerFragment
import
chat.rocket.android.db.DatabaseManager
import
chat.rocket.android.emoji.EmojiParser
import
chat.rocket.android.emoji.EmojiRepository
import
chat.rocket.android.emoji.internal.isCustom
import
chat.rocket.android.helper.MessageHelper
import
chat.rocket.android.helper.MessageParser
import
chat.rocket.android.helper.UserHelper
...
...
@@ -31,6 +32,7 @@ import chat.rocket.android.server.domain.messageReadReceiptEnabled
import
chat.rocket.android.server.domain.messageReadReceiptStoreUsers
import
chat.rocket.android.server.domain.useRealName
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.util.extension.orFalse
import
chat.rocket.android.util.extensions.avatarUrl
import
chat.rocket.android.util.extensions.ifNotNullNorEmpty
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
...
...
@@ -469,7 +471,7 @@ class UiModelMapper @Inject constructor(
val
list
=
mutableListOf
<
ReactionUiModel
>()
val
customEmojis
=
EmojiRepository
.
getCustomEmojis
()
it
.
getShortNames
().
forEach
{
shortname
->
val
usernames
=
it
.
getUsernames
(
shortname
)
?:
emptyList
()
val
usernames
=
it
.
getUsernames
(
shortname
)
.
orEmpty
()
val
count
=
usernames
.
size
val
custom
=
customEmojis
.
firstOrNull
{
emoji
->
emoji
.
shortname
==
shortname
}
list
.
add
(
...
...
@@ -478,7 +480,8 @@ class UiModelMapper @Inject constructor(
unicode
=
EmojiParser
.
parse
(
context
,
shortname
),
count
=
count
,
usernames
=
usernames
,
url
=
custom
?.
url
)
url
=
custom
?.
url
,
isCustom
=
custom
!=
null
)
)
}
list
...
...
app/src/main/java/chat/rocket/android/chatrooms/adapter/model/RoomUiModel.kt
View file @
c531561a
...
...
@@ -14,5 +14,6 @@ data class RoomUiModel(
val
alert
:
Boolean
=
false
,
val
lastMessage
:
CharSequence
?
=
null
,
val
status
:
UserStatus
?
=
null
,
val
username
:
String
?
=
null
)
\ No newline at end of file
val
username
:
String
?
=
null
,
val
muted
:
List
<
String
>
=
emptyList
()
)
app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt
View file @
c531561a
...
...
@@ -56,7 +56,8 @@ class ChatRoomsPresenter @Inject constructor(
type
=
type
.
toString
(),
name
=
username
?:
name
.
toString
(),
fullname
=
name
.
toString
(),
open
=
open
open
=
open
,
muted
=
muted
)
loadChatRoom
(
entity
,
false
)
}
...
...
app/src/main/java/chat/rocket/android/chatrooms/viewmodel/ChatRoomsViewModel.kt
View file @
c531561a
...
...
@@ -27,7 +27,7 @@ import kotlinx.coroutines.experimental.launch
import
kotlinx.coroutines.experimental.newSingleThreadContext
import
kotlinx.coroutines.experimental.withContext
import
timber.log.Timber
import
java.
security.InvalidParameter
Exception
import
java.
lang.IllegalArgument
Exception
import
kotlin.coroutines.experimental.coroutineContext
...
...
@@ -171,6 +171,6 @@ fun Query.asSortingOrder(): ChatRoomsRepository.Order {
ChatRoomsRepository
.
Order
.
ACTIVITY
}
}
else
->
throw
I
nvalidParameter
Exception
(
"Should be ByName or ByActivity"
)
else
->
throw
I
llegalArgument
Exception
(
"Should be ByName or ByActivity"
)
}
}
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
View file @
c531561a
...
...
@@ -41,13 +41,12 @@ import timber.log.Timber
import
java.util.HashSet
import
kotlin.system.measureTimeMillis
class
DatabaseManager
(
val
context
:
Application
,
val
serverUrl
:
String
)
{
class
DatabaseManager
(
val
context
:
Application
,
val
serverUrl
:
String
)
{
private
val
database
:
RCDatabase
=
androidx
.
room
.
Room
.
databaseBuilder
(
context
,
RCDatabase
::
class
.
java
,
serverUrl
.
databaseName
())
.
fallbackToDestructiveMigration
()
.
build
()
RCDatabase
::
class
.
java
,
serverUrl
.
databaseName
())
.
fallbackToDestructiveMigration
()
.
build
()
private
val
dbContext
=
newSingleThreadContext
(
"$serverUrl-db-context"
)
private
val
dbManagerContext
=
newSingleThreadContext
(
"$serverUrl-db-manager-context"
)
...
...
@@ -124,11 +123,11 @@ class DatabaseManager(val context: Application,
val
toInsert
=
ArrayList
<
ChatRoomEntity
>(
batch
.
size
/
2
)
val
toUpdate
=
ArrayList
<
ChatRoomEntity
>(
batch
.
size
)
batch
.
forEach
{
when
(
it
.
type
)
{
when
(
it
.
type
)
{
is
Type
.
Removed
->
toRemove
.
add
(
removeChatRoom
(
it
.
data
))
is
Type
.
Inserted
->
insertChatRoom
(
it
.
data
)
?.
let
{
toInsert
.
add
(
it
)
}
is
Type
.
Updated
->
{
when
(
it
.
data
)
{
when
(
it
.
data
)
{
is
Subscription
->
updateSubs
[(
it
.
data
as
Subscription
).
roomId
]
=
it
.
data
as
Subscription
is
Room
->
updateRooms
[(
it
.
data
as
Room
).
id
]
=
it
.
data
as
Room
}
...
...
@@ -154,10 +153,10 @@ class DatabaseManager(val context: Application,
launch
(
dbManagerContext
)
{
val
user
=
userDao
().
getUser
(
myself
.
id
)
val
entity
=
user
?.
copy
(
name
=
myself
.
name
?:
user
.
name
,
username
=
myself
.
username
?:
user
.
username
,
utcOffset
=
myself
.
utcOffset
?:
user
.
utcOffset
,
status
=
myself
.
status
?.
toString
()
?:
user
.
status
name
=
myself
.
name
?:
user
.
name
,
username
=
myself
.
username
?:
user
.
username
,
utcOffset
=
myself
.
utcOffset
?:
user
.
utcOffset
,
status
=
myself
.
status
?.
toString
()
?:
user
.
status
)
?:
myself
.
asUser
().
toEntity
()
Timber
.
d
(
"UPDATING SELF: $entity"
)
...
...
@@ -187,7 +186,7 @@ class DatabaseManager(val context: Application,
private
suspend
fun
createMessageEntities
(
message
:
Message
):
Pair
<
MessageEntity
,
List
<
BaseMessageEntity
>>
{
val
messageEntity
=
message
.
toEntity
()
val
list
=
mutableListOf
<
BaseMessageEntity
>()
createAttachments
(
message
)
?.
let
{
list
.
addAll
(
it
)
}
createAttachments
(
message
)
?.
let
{
list
.
addAll
(
it
)
}
createFavoriteRelations
(
message
)
?.
let
{
list
.
addAll
(
it
)
}
createMentionRelations
(
message
)
?.
let
{
list
.
addAll
(
it
)
}
createChannelRelations
(
message
)
?.
let
{
list
.
addAll
(
it
)
}
...
...
@@ -225,7 +224,7 @@ class DatabaseManager(val context: Application,
val
list
=
mutableListOf
<
UrlEntity
>()
message
.
urls
!!
.
forEach
{
url
->
list
.
add
(
UrlEntity
(
message
.
id
,
url
.
url
,
url
.
parsedUrl
?.
host
,
url
.
meta
?.
title
,
url
.
meta
?.
description
,
url
.
meta
?.
imageUrl
))
url
.
meta
?.
description
,
url
.
meta
?.
imageUrl
))
}
return
list
...
...
@@ -329,7 +328,7 @@ class DatabaseManager(val context: Application,
}
private
fun
removeChatRoom
(
data
:
BaseRoom
):
String
{
return
when
(
data
)
{
return
when
(
data
)
{
is
Subscription
->
data
.
roomId
else
->
data
.
id
}
...
...
@@ -344,14 +343,15 @@ class DatabaseManager(val context: Application,
insertUserIfMissing
(
user
)
chatRoom
.
copy
(
name
=
name
?:
chatRoom
.
name
,
fullname
=
fullName
?:
chatRoom
.
fullname
,
ownerId
=
user
?.
id
?:
chatRoom
.
ownerId
,
readonly
=
readonly
,
updatedAt
=
updatedAt
?:
chatRoom
.
updatedAt
,
lastMessageText
=
mapLastMessageText
(
lastMessage
),
lastMessageUserId
=
lastMessage
?.
sender
?.
id
,
lastMessageTimestamp
=
lastMessage
?.
timestamp
name
=
name
?:
chatRoom
.
name
,
fullname
=
fullName
?:
chatRoom
.
fullname
,
ownerId
=
user
?.
id
?:
chatRoom
.
ownerId
,
readonly
=
readonly
,
updatedAt
=
updatedAt
?:
chatRoom
.
updatedAt
,
lastMessageText
=
mapLastMessageText
(
lastMessage
),
lastMessageUserId
=
lastMessage
?.
sender
?.
id
,
lastMessageTimestamp
=
lastMessage
?.
timestamp
,
muted
=
muted
)
}
}
...
...
@@ -386,30 +386,32 @@ class DatabaseManager(val context: Application,
val
chatRoom
=
current
.
chatRoom
chatRoom
.
copy
(
id
=
roomId
,
subscriptionId
=
id
,
type
=
type
.
toString
(),
name
=
name
?:
throw
NullPointerException
(),
// this should be filtered on the SDK
fullname
=
fullName
?:
chatRoom
.
fullname
,
userId
=
userId
?:
chatRoom
.
userId
,
readonly
=
readonly
?:
chatRoom
.
readonly
,
isDefault
=
isDefault
,
favorite
=
isFavorite
,
open
=
open
,
alert
=
alert
,
unread
=
unread
,
userMentions
=
userMentions
?:
chatRoom
.
userMentions
,
groupMentions
=
groupMentions
?:
chatRoom
.
groupMentions
,
updatedAt
=
updatedAt
?:
chatRoom
.
updatedAt
,
timestamp
=
timestamp
?:
chatRoom
.
timestamp
,
lastSeen
=
lastSeen
?:
chatRoom
.
lastSeen
id
=
roomId
,
subscriptionId
=
id
,
type
=
type
.
toString
(),
name
=
name
?:
throw
NullPointerException
(),
// this should be filtered on the SDK
fullname
=
fullName
?:
chatRoom
.
fullname
,
userId
=
userId
?:
chatRoom
.
userId
,
readonly
=
readonly
?:
chatRoom
.
readonly
,
isDefault
=
isDefault
,
favorite
=
isFavorite
,
open
=
open
,
alert
=
alert
,
unread
=
unread
,
userMentions
=
userMentions
?:
chatRoom
.
userMentions
,
groupMentions
=
groupMentions
?:
chatRoom
.
groupMentions
,
updatedAt
=
updatedAt
?:
chatRoom
.
updatedAt
,
timestamp
=
timestamp
?:
chatRoom
.
timestamp
,
lastSeen
=
lastSeen
?:
chatRoom
.
lastSeen
,
muted
=
chatRoom
.
muted
)
}
}
}
private
suspend
fun
insertChatRoom
(
data
:
BaseRoom
):
ChatRoomEntity
?
{
return
when
(
data
)
{
return
when
(
data
)
{
is
Room
->
insertRoom
(
data
)
is
Subscription
->
insertSubscription
(
data
)
else
->
null
...
...
@@ -451,7 +453,8 @@ class DatabaseManager(val context: Application,
id
=
room
.
id
,
subscriptionId
=
subscription
.
id
,
type
=
room
.
type
.
toString
(),
name
=
room
.
name
?:
subscription
.
name
?:
throw
NullPointerException
(),
// this should be filtered on the SDK
name
=
room
.
name
?:
subscription
.
name
?:
throw
NullPointerException
(),
// this should be filtered on the SDK
fullname
=
subscription
.
fullName
?:
room
.
fullName
,
userId
=
userId
,
ownerId
=
room
.
user
?.
id
,
...
...
@@ -506,7 +509,8 @@ class DatabaseManager(val context: Application,
lastMessageText
=
mapLastMessageText
(
lastMessage
),
lastMessageUserId
=
lastMessage
?.
sender
?.
id
,
lastMessageTimestamp
=
lastMessage
?.
timestamp
,
broadcast
=
broadcast
broadcast
=
broadcast
,
muted
=
room
.
muted
)
}
}
...
...
@@ -579,6 +583,7 @@ sealed class Operation {
val
toUpdate
:
List
<
ChatRoomEntity
>,
val
toRemove
:
List
<
String
>
)
:
Operation
()
data class
InsertRooms
(
val
chatRooms
:
List
<
ChatRoomEntity
>)
:
Operation
()
data class
CleanInsertRooms
(
val
chatRooms
:
List
<
ChatRoomEntity
>)
:
Operation
()
...
...
@@ -607,10 +612,10 @@ private fun Myself.asUser(): User {
private
fun
String
.
databaseName
():
String
{
val
tmp
=
this
.
removePrefix
(
"https://"
)
.
removePrefix
(
"http://"
)
.
removeTrailingSlash
()
.
replace
(
"/"
,
"-"
)
.
replace
(
"."
,
"_"
)
.
removePrefix
(
"http://"
)
.
removeTrailingSlash
()
.
replace
(
"/"
,
"-"
)
.
replace
(
"."
,
"_"
)
return
"$tmp.db"
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/db/RCDatabase.kt
View file @
c531561a
...
...
@@ -2,6 +2,7 @@ package chat.rocket.android.db
import
androidx.room.Database
import
androidx.room.RoomDatabase
import
androidx.room.TypeConverters
import
chat.rocket.android.db.model.AttachmentActionEntity
import
chat.rocket.android.db.model.AttachmentEntity
import
chat.rocket.android.db.model.AttachmentFieldEntity
...
...
@@ -14,6 +15,7 @@ import chat.rocket.android.db.model.MessagesSync
import
chat.rocket.android.db.model.ReactionEntity
import
chat.rocket.android.db.model.UrlEntity
import
chat.rocket.android.db.model.UserEntity
import
chat.rocket.android.emoji.internal.db.StringListConverter
@Database
(
entities
=
[
...
...
@@ -23,11 +25,12 @@ import chat.rocket.android.db.model.UserEntity
AttachmentFieldEntity
::
class
,
AttachmentActionEntity
::
class
,
UrlEntity
::
class
,
ReactionEntity
::
class
,
MessagesSync
::
class
],
version
=
1
0
,
version
=
1
2
,
exportSchema
=
true
)
@TypeConverters
(
StringListConverter
::
class
)
abstract
class
RCDatabase
:
RoomDatabase
()
{
abstract
fun
userDao
():
UserDao
abstract
fun
chatRoomDao
():
ChatRoomDao
abstract
fun
messageDao
():
MessageDao
}
\ No newline at end of file
}
app/src/main/java/chat/rocket/android/db/model/ChatRoomEntity.kt
View file @
c531561a
...
...
@@ -5,6 +5,8 @@ import androidx.room.Entity
import
androidx.room.ForeignKey
import
androidx.room.Index
import
androidx.room.PrimaryKey
import
androidx.room.TypeConverters
import
chat.rocket.android.emoji.internal.db.StringListConverter
@Entity
(
tableName
=
"chatrooms"
,
indices
=
[
...
...
@@ -20,6 +22,7 @@ import androidx.room.PrimaryKey
ForeignKey
(
entity
=
UserEntity
::
class
,
parentColumns
=
[
"id"
],
childColumns
=
[
"lastMessageUserId"
])
]
)
@TypeConverters
(
StringListConverter
::
class
)
data class
ChatRoomEntity
(
@PrimaryKey
var
id
:
String
,
var
subscriptionId
:
String
,
...
...
@@ -42,7 +45,8 @@ data class ChatRoomEntity(
var
lastMessageText
:
String
?
=
null
,
var
lastMessageUserId
:
String
?
=
null
,
var
lastMessageTimestamp
:
Long
?
=
null
,
var
broadcast
:
Boolean
?
=
false
var
broadcast
:
Boolean
?
=
false
,
var
muted
:
List
<
String
>?
=
null
)
data class
ChatRoom
(
...
...
@@ -52,4 +56,4 @@ data class ChatRoom(
var
status
:
String
?,
var
lastMessageUserName
:
String
?,
var
lastMessageUserFullName
:
String
?
)
\ No newline at end of file
)
app/src/main/java/chat/rocket/android/settings/password/presentation/PasswordPresenter.kt
View file @
c531561a
package
chat.rocket.android.settings.password.presentation
import
chat.rocket.android.analytics.AnalyticsManager
import
chat.rocket.android.core.lifecycle.CancelStrategy
import
chat.rocket.android.server.domain.GetCurrentServerInteractor
import
chat.rocket.android.server.infraestructure.RocketChatClientFactory
...
...
@@ -14,6 +15,7 @@ import javax.inject.Inject
class
PasswordPresenter
@Inject
constructor
(
private
val
view
:
PasswordView
,
private
val
strategy
:
CancelStrategy
,
private
val
analyticsManager
:
AnalyticsManager
,
serverInteractor
:
GetCurrentServerInteractor
,
factory
:
RocketChatClientFactory
)
{
...
...
@@ -30,10 +32,12 @@ class PasswordPresenter @Inject constructor(
client
.
updateProfile
(
me
.
id
,
null
,
null
,
password
,
null
)
}
analyticsManager
.
logResetPassword
(
true
)
view
.
showPasswordSuccessfullyUpdatedMessage
()
view
.
hideLoading
()
}
catch
(
exception
:
RocketChatException
)
{
analyticsManager
.
logResetPassword
(
false
)
view
.
showPasswordFailsUpdateMessage
(
exception
.
message
)
}
finally
{
view
.
hideLoading
()
}
}
...
...
app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
View file @
c531561a
package
chat.rocket.android.settings.ui
import
android.content.ActivityNotFoundException
import
android.content.Intent
import
android.net.Uri
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.AdapterView
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.net.toUri
import
androidx.fragment.app.Fragment
import
chat.rocket.android.R
import
chat.rocket.android.about.ui.AboutFragment
...
...
@@ -84,7 +87,15 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen
shareIntent
.
putExtra
(
Intent
.
EXTRA_TEXT
,
shareSub
)
startActivity
(
Intent
.
createChooser
(
shareIntent
,
getString
(
R
.
string
.
msg_share_using
)))
}
resources
.
getString
(
R
.
string
.
title_rate_us
)
->
startAppPlayStore
()
}
}
private
fun
startAppPlayStore
()
{
try
{
startActivity
(
Intent
(
Intent
.
ACTION_VIEW
,
getString
(
R
.
string
.
market_link
).
toUri
()))
}
catch
(
error
:
ActivityNotFoundException
)
{
startActivity
(
Intent
(
Intent
.
ACTION_VIEW
,
getString
(
R
.
string
.
play_store_link
).
toUri
()))
}
}
...
...
app/src/main/res/layout/emoji_image_row_item.xml
0 → 100644
View file @
c531561a
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:layout_gravity=
"center"
>
<ImageView
android:id=
"@+id/emoji_image_view"
android:layout_width=
"32dp"
android:layout_height=
"32dp"
android:layout_gravity=
"center"
tools:src=
"@tools:sample/avatars"
/>
</FrameLayout>
app/src/main/res/layout/emoji_row_item.xml
0 → 100644
View file @
c531561a
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/emoji_view"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:foreground=
"?selectableItemBackground"
android:layout_gravity=
"center"
android:gravity=
"center"
android:textColor=
"#000000"
android:textSize=
"24sp"
tools:text=
"😀"
/>
app/src/main/res/layout/reaction_praises_list_item.xml
0 → 100644
View file @
c531561a
<?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=
"wrap_content"
android:background=
"@color/colorWhite"
android:padding=
"16dp"
>
<ViewFlipper
android:id=
"@+id/view_flipper"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:foregroundGravity=
"center"
app:layout_constraintTop_toTopOf=
"parent"
>
<include
layout=
"@layout/emoji_row_item"
/>
<include
layout=
"@layout/emoji_image_row_item"
/>
</ViewFlipper>
<TextView
android:id=
"@+id/text_view_usernames"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:fontFamily=
"sans-serif-light"
android:textColor=
"@color/darkGray"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"@+id/view_flipper"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@+id/view_flipper"
app:layout_constraintTop_toTopOf=
"@+id/view_flipper"
tools:text=
"Ann reacted with :grin:"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/values-de/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Einstellungen
</string>
<string
name=
"title_preferences"
>
Preferences
</string>
<!-- TODO Add translation -->
<string
name=
"title_change_password"
>
Ändere Passwort
</string>
<string
name=
"title_rate_us"
>
Bewerten Sie uns
</string>
<string
name=
"title_admin_panel"
>
Admin panel
</string>
<!-- TODO Add translation -->
<string
name=
"title_password"
>
Ändere Passwort
</string>
<string
name=
"title_update_profile"
>
Update Profil
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Preferences
</item>
<!-- TODO Add translation -->
<item
name=
"item_password"
>
Ändere Passwort
</item>
<item
name=
"item_password"
>
Über
</item>
<item
name=
"item_share_app"
>
App teilen
</item>
<item
name=
"item_rate_us"
>
Bewerten Sie uns
</item>
<item
name=
"item_password"
>
Über
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -148,6 +150,13 @@
<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 -->
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Privat
</string>
...
...
app/src/main/res/values-es/strings.xml
View file @
c531561a
...
...
@@ -15,6 +15,7 @@
<string
name=
"title_settings"
>
Configuraciones
</string>
<string
name=
"title_preferences"
>
Preferences
</string>
<!-- TODO Add translation -->
<string
name=
"title_change_password"
>
Cambia la contraseña
</string>
<string
name=
"title_rate_us"
>
Nos califica
</string>
<string
name=
"title_admin_panel"
>
Admin panel
</string>
<!-- TODO Add translation -->
<string
name=
"title_password"
>
Cambia la contraseña
</string>
<string
name=
"title_update_profile"
>
Actualización del perfil
</string>
...
...
@@ -57,8 +58,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Preferences
</item>
<!-- TODO Add translation -->
<item
name=
"item_password"
>
Cambia la contraseña
</item>
<item
name=
"item_password"
>
Acerca de
</item>
<item
name=
"item_share_app"
>
Compartir aplicación
</item>
<item
name=
"item_rate_us"
>
Nos califica
</item>
<item
name=
"item_password"
>
Acerca de
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -166,6 +168,13 @@
<string
name=
"msg_view_less"
>
view less
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Preferences messages -->
<string
name=
"msg_analytics_tracking"
>
Analytics tracking
</string>
<!-- TODO Add translation -->
...
...
app/src/main/res/values-fr/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Paramètres
</string>
<string
name=
"title_preferences"
>
Préférences
</string>
<string
name=
"title_change_password"
>
Changer le mot de passe
</string>
<string
name=
"title_rate_us"
>
évaluez nous
</string>
<string
name=
"title_admin_panel"
>
Administration
</string>
<string
name=
"title_password"
>
Changer le mot de passe
</string>
<string
name=
"title_update_profile"
>
Mettre à jour le profil
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Préférences
</item>
<item
name=
"item_password"
>
Changer le mot de passe
</item>
<item
name=
"item_password"
>
À propos
</item>
<item
name=
"item_share_app"
>
Partager l\'application
</item>
<item
name=
"item_rate_us"
>
évaluez nous
</item>
<item
name=
"item_password"
>
À propos
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -158,6 +160,13 @@
<string
name=
"msg_view_less"
>
view less
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Privé
</string>
...
...
app/src/main/res/values-hi-rIN/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
सेटिंग्स
</string>
<string
name=
"title_preferences"
>
प्राथमिकताएँ
</string>
<string
name=
"title_change_password"
>
पासवर्ड बदलें
</string>
<string
name=
"title_rate_us"
>
हमें रेटिंग दें
</string>
<string
name=
"title_admin_panel"
>
एडमिन पैनल
</string>
<string
name=
"title_password"
>
पासवर्ड बदलें
</string>
<string
name=
"title_update_profile"
>
प्रोफ़ाइल अपडेट करें
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
प्राथमिकताएँ
</item>
<item
name=
"item_password"
>
पासवर्ड बदलें
</item>
<item
name=
"item_password"
>
परिचय
</item>
<item
name=
"item_share_app"
>
ऐप शेयर करें
</item>
<item
name=
"item_rate_us"
>
हमें रेटिंग दें
</item>
<item
name=
"item_password"
>
परिचय
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -170,6 +172,13 @@
<string
name=
"msg_view_less"
>
कम देखें
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Preferences messages -->
<string
name=
"msg_analytics_tracking"
>
एनालिटिक्स ट्रैकिंग
</string>
...
...
app/src/main/res/values-it/strings.xml
0 → 100644
View file @
c531561a
This diff is collapsed.
Click to expand it.
app/src/main/res/values-ja/strings.xml
View file @
c531561a
...
...
@@ -18,11 +18,13 @@
<string
name=
"title_settings"
>
設定
</string>
<string
name=
"title_preferences"
>
環境設定
</string>
<string
name=
"title_change_password"
>
パスワードの変更
</string>
<string
name=
"title_rate_us"
>
私たちを評価してください
</string>
<string
name=
"title_admin_panel"
>
管理パネル
</string>
<string
name=
"title_password"
>
パスワードの変更
</string>
<string
name=
"title_update_profile"
>
プロフィールの更新
</string>
<string
name=
"title_about"
>
About
</string>
<string
name=
"title_create_channel"
>
新しいチャネルを作成
</string>
<string
name=
"title_are_you_sure"
>
本気ですか?
</string>
<!-- Actions -->
<string
name=
"action_connect"
>
接続
</string>
...
...
@@ -53,14 +55,15 @@
<string
name=
"action_create_server"
>
新規サーバーを作成
</string>
<string
name=
"action_register"
>
登録
</string>
<string
name=
"action_confirm"
>
確認
</string>
<string
name=
"action_delete_account"
>
Delete account
</string>
<!-- TODO Add translation --
>
<string
name=
"action_delete_account"
>
アカウントを削除する
</string
>
<!-- Settings List -->
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
環境設定
</item>
<item
name=
"item_password"
>
パスワードの変更
</item>
<item
name=
"item_password"
>
アプリ情報
</item>
<item
name=
"item_share_app"
>
アプリを共有する
</item>
<item
name=
"item_rate_us"
>
私たちを評価してください
</item>
<item
name=
"item_password"
>
アプリ情報
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -152,10 +155,14 @@
<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_view_more"
>
更に表示
</string>
<string
name=
"msg_view_less"
>
隠す
</string>
<string
name=
"msg_muted_on_this_channel"
>
あなたはこのチャンネルでミュートされています
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
プライベート
</string>
...
...
@@ -209,7 +216,6 @@
<string
name=
"action_msg_share"
>
Share
</string>
<string
name=
"action_title_editing"
>
メッセージの編集
</string>
<string
name=
"action_msg_add_reaction"
>
リアクションする
</string>
<!-- TODO - Add proper translation -->
<string
name=
"action_msg_copy_permalink"
>
パーマリンクのコピー
</string>
<!-- Permission messages -->
...
...
app/src/main/res/values-pt-rBR/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Configurações
</string>
<string
name=
"title_preferences"
>
Preferencias
</string>
<string
name=
"title_change_password"
>
Alterar senha
</string>
<string
name=
"title_rate_us"
>
nos avalie
</string>
<string
name=
"title_admin_panel"
>
Painel administrativo
</string>
<string
name=
"title_password"
>
Alterar senha
</string>
<string
name=
"title_update_profile"
>
Editar perfil
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Preferencias
</item>
<item
name=
"item_password"
>
Alterar senha
</item>
<item
name=
"item_password"
>
Sobre
</item>
<item
name=
"item_share_app"
>
Compartilhe o aplicativo
</item>
<item
name=
"item_rate_us"
>
nos avalie
</item>
<item
name=
"item_password"
>
Sobre
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -157,6 +159,11 @@
<string
name=
"msg_view_less"
>
visualizar menos
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copiado
</string>
<string
name=
"msg_muted_on_this_channel"
>
Você está silenciado neste canal
</string>
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reagiu com %2$s
</item>
<item
quantity=
"other"
>
%1$s reagiram com %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Privado
</string>
...
...
@@ -185,8 +192,8 @@
<string
name=
"message_welcome"
>
Bem-vindo, %s
</string>
<string
name=
"message_removed"
>
Mensagem removida
</string>
<string
name=
"message_pinned"
>
Pinou uma mensagem:
</string>
<string
name=
"message_muted"
>
Usuário %1$s
entrou no modo mu
do por %2$s
</string>
<string
name=
"message_unmuted"
>
Usuário %1$s saiu do modo
mu
do por %2$s
</string>
<string
name=
"message_muted"
>
Usuário %1$s
foi silencia
do por %2$s
</string>
<string
name=
"message_unmuted"
>
Usuário %1$s saiu do modo
silencia
do por %2$s
</string>
<string
name=
"message_role_add"
>
%1$s foi definido %2$s por %3$s
</string>
<string
name=
"message_role_removed"
>
%1$s não é mais %2$s por %3$s
</string>
// TODO:Add proper translation.
...
...
app/src/main/res/values-ru-rRU/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Настройки
</string>
<string
name=
"title_preferences"
>
Персональные
</string>
<string
name=
"title_change_password"
>
Изменить пароль
</string>
<string
name=
"title_rate_us"
>
оцените нас
</string>
<string
name=
"title_admin_panel"
>
Панель админа
</string>
<string
name=
"title_password"
>
Изменить пароль
</string>
<string
name=
"title_update_profile"
>
Обновить профиль
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Персональные
</item>
<item
name=
"item_password"
>
Изменить пароль
</item>
<item
name=
"item_
password"
>
О программе
</item>
<item
name=
"item_
rate_us"
>
оцените нас
</item>
<item
name=
"item_share_app"
>
добавить приложение
</item>
<item
name=
"item_password"
>
О программе
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -154,6 +156,14 @@
<string
name=
"msg_view_more"
>
больше
</string>
<string
name=
"msg_view_less"
>
меньше
</string>
<string
name=
"msg_permalink_copied"
>
Ссылка скопирована
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"few"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"many"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Приватный
</string>
...
...
app/src/main/res/values-tr/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Ayarlar
</string>
<string
name=
"title_preferences"
>
Tercihler
</string>
<string
name=
"title_change_password"
>
Şifre Değişikliği
</string>
<string
name=
"title_rate_us"
>
Bizi değerlendirin
</string>
<string
name=
"title_admin_panel"
>
Yönetici Paneli
</string>
<string
name=
"title_password"
>
Şifrenizi Değiştirin
</string>
<string
name=
"title_update_profile"
>
Profilinizi Düzenleyin
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Tercihler
</item>
<item
name=
"item_password"
>
Şifre Değiştir
</item>
<item
name=
"item_password"
>
Hakkında
</item>
<item
name=
"item_share_app"
>
uygulamayı Paylaş
</item>
<item
name=
"item_rate_us"
>
Bizi değerlendirin
</item>
<item
name=
"item_password"
>
Hakkında
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -171,6 +173,13 @@
<string
name=
"msg_view_less"
>
Daha az göster
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Preferences messages -->
<string
name=
"msg_analytics_tracking"
>
İstatistik takibi
</string>
...
...
app/src/main/res/values-uk/strings.xml
View file @
c531561a
...
...
@@ -16,6 +16,7 @@
<string
name=
"title_settings"
>
Налаштування
</string>
<string
name=
"title_preferences"
>
Персональні
</string>
<string
name=
"title_change_password"
>
Змінити пароль
</string>
<string
name=
"title_rate_us"
>
Оцініть нас
</string>
<string
name=
"title_admin_panel"
>
Панель адміністратора
</string>
<string
name=
"title_password"
>
Змінити пароль
</string>
<string
name=
"title_update_profile"
>
Оновити профіль
</string>
...
...
@@ -58,8 +59,9 @@
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Preferences
</item>
<!-- TODO Add translation -->
<item
name=
"item_password"
>
Change Password
</item>
<!-- TODO Add translation -->
<item
name=
"item_password"
>
About
</item>
<!-- TODO Add translation -->
<item
name=
"item_share_app"
>
поділитися прикладом
</item>
<item
name=
"item_rate_us"
>
Оцініть нас
</item>
<item
name=
"item_password"
>
About
</item>
<!-- TODO Add translation -->
</string-array>
<!-- Regular information messages -->
...
...
@@ -156,6 +158,14 @@
<string
name=
"msg_view_less"
>
view less
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<!-- TODO - Add proper translation -->
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- TODO - Add proper translation -->
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"few"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"many"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Приватний
</string>
...
...
app/src/main/res/values/defaults.xml
View file @
c531561a
...
...
@@ -5,4 +5,5 @@
<string
name=
"community_server_url"
translatable=
"false"
>
open.rocket.chat
</string>
<string
name=
"create_server_url"
translatable=
"false"
>
cloud.rocket.chat/trial
</string>
<string
name=
"play_store_link"
translatable=
"false"
>
https://play.google.com/store/apps/details?id=chat.rocket.android
</string>
<string
name=
"market_link"
translatable=
"false"
>
market://details?id=chat.rocket.android
</string>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
c531561a
...
...
@@ -28,6 +28,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string
name=
"title_settings"
>
Settings
</string>
<string
name=
"title_preferences"
>
Preferences
</string>
<string
name=
"title_change_password"
>
Change Password
</string>
<string
name=
"title_rate_us"
>
Rate Us
</string>
<string
name=
"title_admin_panel"
>
Admin panel
</string>
<string
name=
"title_password"
>
Change Password
</string>
<string
name=
"title_update_profile"
>
Update profile
</string>
...
...
@@ -70,8 +71,9 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string-array
name=
"settings_actions"
>
<item
name=
"item_preferences"
>
Preferences
</item>
<item
name=
"item_password"
>
Change Password
</item>
<item
name=
"item_password"
>
About
</item>
<item
name=
"item_share_app"
>
Share App
</item>
<item
name=
"item_rate_us"
>
Rate Us
</item>
<item
name=
"item_password"
>
About
</item>
</string-array>
<!-- Regular information messages -->
...
...
@@ -166,6 +168,10 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string
name=
"msg_two_factor_authentication"
>
Two-factor Authentication
</string>
<string
name=
"msg__your_2fa_code"
>
What’s your 2FA code?
</string>
<string
name=
"msg_permalink_copied"
>
Permalink copied
</string>
<plurals
name=
"msg_reacted_with_"
>
<item
quantity=
"one"
>
%1$s reacted with %2$s
</item>
<item
quantity=
"other"
>
%1$s reacted with %2$s
</item>
</plurals>
<!-- Create channel messages -->
<string
name=
"msg_private_channel"
>
Private
</string>
...
...
@@ -183,6 +189,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string
name=
"msg_delete_description"
>
Are you sure you want to delete this message
</string>
<string
name=
"msg_view_more"
>
view more
</string>
<string
name=
"msg_view_less"
>
view less
</string>
<string
name=
"msg_muted_on_this_channel"
>
You are muted on this channel
</string>
<!-- Preferences messages -->
<string
name=
"msg_analytics_tracking"
>
Analytics tracking
</string>
...
...
app/src/play/java/chat/rocket/android/analytics/AnswersAnalytics.kt
View file @
c531561a
...
...
@@ -67,4 +67,11 @@ class AnswersAnalytics : Analytics {
)
override
fun
logOpenAdmin
()
=
Answers
.
getInstance
().
logCustom
(
CustomEvent
(
"open_admin"
))
override
fun
logResetPassword
(
resetPasswordSucceeded
:
Boolean
)
=
Answers
.
getInstance
()
.
logCustom
(
CustomEvent
(
"reset_password"
)
.
putCustomAttribute
(
"resetPasswordSucceeded"
,
resetPasswordSucceeded
.
toString
())
)
}
app/src/play/java/chat/rocket/android/analytics/GoogleAnalyticsForFirebase.kt
View file @
c531561a
...
...
@@ -60,4 +60,9 @@ class GoogleAnalyticsForFirebase @Inject constructor(val context: Context) :
}
override
fun
logOpenAdmin
()
=
firebaseAnalytics
.
logEvent
(
"open_admin"
,
null
)
override
fun
logResetPassword
(
resetPasswordSucceeded
:
Boolean
)
=
firebaseAnalytics
.
logEvent
(
"reset_password"
,
Bundle
(
1
).
apply
{
putBoolean
(
"resetPasswordSucceeded"
,
resetPasswordSucceeded
)
})
}
emoji/src/main/java/chat/rocket/android/emoji/EmojiReactionListener.kt
View file @
c531561a
...
...
@@ -16,4 +16,14 @@ interface EmojiReactionListener {
* @param emojiShortname The shortname of the emoji (:grin:, :smiley:, etc).
*/
fun
onReactionTouched
(
messageId
:
String
,
emojiShortname
:
String
)
}
\ No newline at end of file
/**
* Callback when an added reaction is long-clicked.
*
* @param shortname The shortname of the emoji (:grin:, :smiley:, etc).
* @param isCustom Whether the reaction is custom or one of the defaults.
* @param url In case of a custom emoji, this is the url to find it. Can be null if not a custom.
* @param usernames The list of usernames of users who added the reaction.
*/
fun
onReactionLongClicked
(
shortname
:
String
,
isCustom
:
Boolean
,
url
:
String
?,
usernames
:
List
<
String
>)
}
emoji/src/main/res/values/strings.xml
View file @
c531561a
<resources>
<string
name=
"msg_no_recent_emoji"
>
No recent emoji
</string>
<string
name=
"alert_title_default_skin_tone"
>
Default skin tone
</string>
<string
name=
"msg_reactions"
translatable=
"false"
>
Reactions
</string>
</resources>
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