Commit 5455af45 authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Shows settings view

parent 6304bd95
package chat.rocket.android.about.di
import chat.rocket.android.about.ui.AboutFragment
import dagger.Module
import dagger.android.ContributesAndroidInjector
@Module
abstract class AboutFragmentProvider {
@ContributesAndroidInjector()
abstract fun provideAboutFragment(): AboutFragment
}
package chat.rocket.android.about.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import chat.rocket.android.BuildConfig
import chat.rocket.android.R
import chat.rocket.android.analytics.AnalyticsManager
import chat.rocket.android.analytics.event.ScreenViewEvent
import chat.rocket.android.main.ui.MainActivity
import dagger.android.support.AndroidSupportInjection
import kotlinx.android.synthetic.main.app_bar.*
import kotlinx.android.synthetic.main.fragment_about.*
import javax.inject.Inject
internal const val TAG_ABOUT_FRAGMENT = "AboutFragment"
class AboutFragment : Fragment() {
@Inject
lateinit var analyticsManager: AnalyticsManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AndroidSupportInjection.inject(this)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_about, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
analyticsManager.logScreenView(ScreenViewEvent.About)
}
override fun onResume() {
super.onResume()
setupToolbar()
}
private fun setupViews() {
text_version_name.text = BuildConfig.VERSION_NAME
text_build_number.text = getString(
R.string.msg_build, BuildConfig.VERSION_CODE,
BuildConfig.GIT_SHA, BuildConfig.FLAVOR
)
}
private fun setupToolbar() {
with((activity as MainActivity).toolbar) {
title = getString(R.string.title_about)
setNavigationIcon(R.drawable.ic_arrow_back_white_24dp)
setNavigationOnClickListener { activity?.onBackPressed() }
}
}
companion object {
fun newInstance() = AboutFragment()
}
}
...@@ -176,7 +176,7 @@ class RocketChatApplication : Application(), HasActivityInjector, HasServiceInje ...@@ -176,7 +176,7 @@ class RocketChatApplication : Application(), HasActivityInjector, HasServiceInje
val currentServer = getCurrentServerInteractor.get() val currentServer = getCurrentServerInteractor.get()
currentServer?.let { server -> currentServer?.let { server ->
GlobalScope.launch { GlobalScope.launch {
val client = factory.create(server) val client = factory.get(server)
EmojiRepository.setCurrentServerUrl(server) EmojiRepository.setCurrentServerUrl(server)
val customEmojiList = mutableListOf<Emoji>() val customEmojiList = mutableListOf<Emoji>()
try { try {
......
...@@ -60,7 +60,7 @@ class LoginPresenter @Inject constructor( ...@@ -60,7 +60,7 @@ class LoginPresenter @Inject constructor(
private fun setupConnectionInfo(serverUrl: String) { private fun setupConnectionInfo(serverUrl: String) {
currentServer = serverUrl currentServer = serverUrl
client = factory.create(currentServer) client = factory.get(currentServer)
settings = settingsInteractor.get(currentServer) settings = settingsInteractor.get(currentServer)
} }
......
...@@ -169,7 +169,7 @@ class LoginOptionsPresenter @Inject constructor( ...@@ -169,7 +169,7 @@ class LoginOptionsPresenter @Inject constructor(
private fun setupConnectionInfo(serverUrl: String) { private fun setupConnectionInfo(serverUrl: String) {
currentServer = serverUrl currentServer = serverUrl
client = factory.create(currentServer) client = factory.get(currentServer)
settings = settingsInteractor.get(currentServer) settings = settingsInteractor.get(currentServer)
} }
......
...@@ -38,7 +38,7 @@ class RegisterUsernamePresenter @Inject constructor( ...@@ -38,7 +38,7 @@ class RegisterUsernamePresenter @Inject constructor(
val settingsInteractor: GetSettingsInteractor val settingsInteractor: GetSettingsInteractor
) { ) {
private val currentServer = serverInteractor.get()!! private val currentServer = serverInteractor.get()!!
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
private var settings: PublicSettings = settingsInteractor.get(serverInteractor.get()!!) private var settings: PublicSettings = settingsInteractor.get(serverInteractor.get()!!)
fun registerUsername(username: String, userId: String, authToken: String) { fun registerUsername(username: String, userId: String, authToken: String) {
......
...@@ -21,7 +21,7 @@ class ResetPasswordPresenter @Inject constructor( ...@@ -21,7 +21,7 @@ class ResetPasswordPresenter @Inject constructor(
serverInteractor: GetConnectingServerInteractor serverInteractor: GetConnectingServerInteractor
) { ) {
private val currentServer = serverInteractor.get()!! private val currentServer = serverInteractor.get()!!
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
fun resetPassword(email: String) { fun resetPassword(email: String) {
launchUI(strategy) { launchUI(strategy) {
......
...@@ -44,7 +44,7 @@ class SignupPresenter @Inject constructor( ...@@ -44,7 +44,7 @@ class SignupPresenter @Inject constructor(
private var settings: PublicSettings = settingsInteractor.get(serverInteractor.get()!!) private var settings: PublicSettings = settingsInteractor.get(serverInteractor.get()!!)
fun signup(name: String, username: String, password: String, email: String) { fun signup(name: String, username: String, password: String, email: String) {
val client = factory.create(currentServer) val client = factory.get(currentServer)
launchUI(strategy) { launchUI(strategy) {
view.showLoading() view.showLoading()
try { try {
......
...@@ -51,7 +51,7 @@ class TwoFAPresenter @Inject constructor( ...@@ -51,7 +51,7 @@ class TwoFAPresenter @Inject constructor(
twoFactorAuthenticationCode: String twoFactorAuthenticationCode: String
) { ) {
launchUI(strategy) { launchUI(strategy) {
val client = factory.create(currentServer) val client = factory.get(currentServer)
view.showLoading() view.showLoading()
try { try {
// The token is saved via the client TokenProvider // The token is saved via the client TokenProvider
......
...@@ -10,7 +10,6 @@ import chat.rocket.android.dagger.scope.PerFragment ...@@ -10,7 +10,6 @@ import chat.rocket.android.dagger.scope.PerFragment
import chat.rocket.android.db.ChatRoomDao import chat.rocket.android.db.ChatRoomDao
import chat.rocket.android.db.DatabaseManager import chat.rocket.android.db.DatabaseManager
import chat.rocket.android.db.UserDao import chat.rocket.android.db.UserDao
import chat.rocket.android.infrastructure.LocalRepository
import chat.rocket.android.server.domain.GetCurrentUserInteractor import chat.rocket.android.server.domain.GetCurrentUserInteractor
import chat.rocket.android.server.domain.PermissionsInteractor import chat.rocket.android.server.domain.PermissionsInteractor
import chat.rocket.android.server.domain.PublicSettings import chat.rocket.android.server.domain.PublicSettings
...@@ -45,7 +44,7 @@ class ChatRoomsFragmentModule { ...@@ -45,7 +44,7 @@ class ChatRoomsFragmentModule {
factory: RocketChatClientFactory, factory: RocketChatClientFactory,
@Named("currentServer") currentServer: String @Named("currentServer") currentServer: String
): RocketChatClient { ): RocketChatClient {
return factory.create(currentServer) return factory.get(currentServer)
} }
@Provides @Provides
......
...@@ -22,7 +22,7 @@ class CreateChannelPresenter @Inject constructor( ...@@ -22,7 +22,7 @@ class CreateChannelPresenter @Inject constructor(
val serverInteractor: GetCurrentServerInteractor, val serverInteractor: GetCurrentServerInteractor,
val factory: RocketChatClientFactory val factory: RocketChatClientFactory
) { ) {
private val client: RocketChatClient = factory.create(serverInteractor.get()!!) private val client: RocketChatClient = factory.get(serverInteractor.get()!!)
fun createChannel( fun createChannel(
roomType: RoomType, roomType: RoomType,
......
...@@ -18,7 +18,6 @@ import chat.rocket.android.analytics.AnalyticsManager ...@@ -18,7 +18,6 @@ import chat.rocket.android.analytics.AnalyticsManager
import chat.rocket.android.analytics.event.ScreenViewEvent import chat.rocket.android.analytics.event.ScreenViewEvent
import chat.rocket.android.createchannel.presentation.CreateChannelPresenter import chat.rocket.android.createchannel.presentation.CreateChannelPresenter
import chat.rocket.android.createchannel.presentation.CreateChannelView import chat.rocket.android.createchannel.presentation.CreateChannelView
import chat.rocket.android.main.ui.MainActivity
import chat.rocket.android.members.adapter.MembersAdapter import chat.rocket.android.members.adapter.MembersAdapter
import chat.rocket.android.members.uimodel.MemberUiModel import chat.rocket.android.members.uimodel.MemberUiModel
import chat.rocket.android.util.extension.asObservable import chat.rocket.android.util.extension.asObservable
...@@ -38,11 +37,11 @@ import javax.inject.Inject ...@@ -38,11 +37,11 @@ import javax.inject.Inject
internal const val TAG_CREATE_CHANNEL_FRAGMENT = "CreateChannelFragment" internal const val TAG_CREATE_CHANNEL_FRAGMENT = "CreateChannelFragment"
fun newInstance() = CreateChannelFragment()
class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback { class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback {
@Inject @Inject lateinit var presenter: CreateChannelPresenter
lateinit var createChannelPresenter: CreateChannelPresenter @Inject lateinit var analyticsManager: AnalyticsManager
@Inject
lateinit var analyticsManager: AnalyticsManager
private var actionMode: ActionMode? = null private var actionMode: ActionMode? = null
private val adapter: MembersAdapter = MembersAdapter { private val adapter: MembersAdapter = MembersAdapter {
it.username?.run { processSelectedMember(this) } it.username?.run { processSelectedMember(this) }
...@@ -52,10 +51,6 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback ...@@ -52,10 +51,6 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
private var isChannelReadOnly: Boolean = false private var isChannelReadOnly: Boolean = false
private var memberList = arrayListOf<String>() private var memberList = arrayListOf<String>()
companion object {
fun newInstance() = CreateChannelFragment()
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
AndroidSupportInjection.inject(this) AndroidSupportInjection.inject(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -93,7 +88,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback ...@@ -93,7 +88,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
override fun onActionItemClicked(mode: ActionMode, menuItem: MenuItem): Boolean { override fun onActionItemClicked(mode: ActionMode, menuItem: MenuItem): Boolean {
return when (menuItem.itemId) { return when (menuItem.itemId) {
R.id.action_create_channel -> { R.id.action_create_channel -> {
createChannelPresenter.createChannel( presenter.createChannel(
roomTypeOf(channelType), roomTypeOf(channelType),
text_channel_name.text.toString(), text_channel_name.text.toString(),
memberList, memberList,
...@@ -242,7 +237,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback ...@@ -242,7 +237,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
.filter { t -> t.isNotBlank() } .filter { t -> t.isNotBlank() }
.subscribe { .subscribe {
if (it.length >= 3) { if (it.length >= 3) {
createChannelPresenter.searchUser(it.toString()) presenter.searchUser(it.toString())
} else { } else {
view_member_suggestion.isVisible = false view_member_suggestion.isVisible = false
} }
......
package chat.rocket.android.dagger.module package chat.rocket.android.dagger.module
import chat.rocket.android.about.di.AboutFragmentProvider
import chat.rocket.android.authentication.di.AuthenticationModule import chat.rocket.android.authentication.di.AuthenticationModule
import chat.rocket.android.authentication.login.di.LoginFragmentProvider import chat.rocket.android.authentication.login.di.LoginFragmentProvider
import chat.rocket.android.authentication.loginoptions.di.LoginOptionsFragmentProvider import chat.rocket.android.authentication.loginoptions.di.LoginOptionsFragmentProvider
...@@ -29,7 +28,6 @@ import chat.rocket.android.main.ui.MainActivity ...@@ -29,7 +28,6 @@ import chat.rocket.android.main.ui.MainActivity
import chat.rocket.android.members.di.MembersFragmentProvider import chat.rocket.android.members.di.MembersFragmentProvider
import chat.rocket.android.mentions.di.MentionsFragmentProvider import chat.rocket.android.mentions.di.MentionsFragmentProvider
import chat.rocket.android.pinnedmessages.di.PinnedMessagesFragmentProvider import chat.rocket.android.pinnedmessages.di.PinnedMessagesFragmentProvider
import chat.rocket.android.preferences.di.PreferencesFragmentProvider
import chat.rocket.android.profile.di.ProfileFragmentProvider import chat.rocket.android.profile.di.ProfileFragmentProvider
import chat.rocket.android.server.di.ChangeServerModule import chat.rocket.android.server.di.ChangeServerModule
import chat.rocket.android.server.ui.ChangeServerActivity import chat.rocket.android.server.ui.ChangeServerActivity
...@@ -72,8 +70,6 @@ abstract class ActivityBuilder { ...@@ -72,8 +70,6 @@ abstract class ActivityBuilder {
CreateChannelProvider::class, CreateChannelProvider::class,
ProfileFragmentProvider::class, ProfileFragmentProvider::class,
SettingsFragmentProvider::class, SettingsFragmentProvider::class,
AboutFragmentProvider::class,
PreferencesFragmentProvider::class,
AdminPanelWebViewFragmentProvider::class AdminPanelWebViewFragmentProvider::class
] ]
) )
......
...@@ -5,7 +5,6 @@ import chat.rocket.android.core.lifecycle.CancelStrategy ...@@ -5,7 +5,6 @@ import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.db.DatabaseManager import chat.rocket.android.db.DatabaseManager
import chat.rocket.android.server.infraestructure.RocketChatClientFactory import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.retryDB
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.common.model.roomTypeOf import chat.rocket.common.model.roomTypeOf
import chat.rocket.common.util.ifNull import chat.rocket.common.util.ifNull
...@@ -23,7 +22,7 @@ class FavoriteMessagesPresenter @Inject constructor( ...@@ -23,7 +22,7 @@ class FavoriteMessagesPresenter @Inject constructor(
private val mapper: UiModelMapper, private val mapper: UiModelMapper,
val factory: RocketChatClientFactory val factory: RocketChatClientFactory
) { ) {
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
private var offset: Int = 0 private var offset: Int = 0
/** /**
......
...@@ -7,7 +7,6 @@ import chat.rocket.android.files.uimodel.FileUiModel ...@@ -7,7 +7,6 @@ import chat.rocket.android.files.uimodel.FileUiModel
import chat.rocket.android.files.uimodel.FileUiModelMapper import chat.rocket.android.files.uimodel.FileUiModelMapper
import chat.rocket.android.server.infraestructure.RocketChatClientFactory import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.retryDB
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.common.model.roomTypeOf import chat.rocket.common.model.roomTypeOf
import chat.rocket.common.util.ifNull import chat.rocket.common.util.ifNull
...@@ -25,7 +24,7 @@ class FilesPresenter @Inject constructor( ...@@ -25,7 +24,7 @@ class FilesPresenter @Inject constructor(
private val mapper: FileUiModelMapper, private val mapper: FileUiModelMapper,
val factory: RocketChatClientFactory val factory: RocketChatClientFactory
) { ) {
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
private var offset: Int = 0 private var offset: Int = 0
/** /**
......
...@@ -24,6 +24,24 @@ class UserHelper @Inject constructor( ...@@ -24,6 +24,24 @@ class UserHelper @Inject constructor(
*/ */
fun username(): String? = localRepository.get(LocalRepository.CURRENT_USERNAME_KEY, null) fun username(): String? = localRepository.get(LocalRepository.CURRENT_USERNAME_KEY, null)
/**
* Return the name for the current logged [User].
*/
fun name(): String? = user()?.name
/**
* Return the display name for the given [user].
* If setting 'Use_Real_Name' is true then the real name will be given, otherwise the username
* without the '@' is yielded.
*/
fun displayName(user: User) = getCurrentServerInteractor.get()?.let {
if (settingsRepository.get(it).useRealName()) {
user.name
} else {
user.username
}
}
/** /**
* Return the display name for the given [user]. * Return the display name for the given [user].
* If setting 'Use_Real_Name' is true then the real name will be given, otherwise the username * If setting 'Use_Real_Name' is true then the real name will be given, otherwise the username
......
...@@ -3,19 +3,16 @@ package chat.rocket.android.main.presentation ...@@ -3,19 +3,16 @@ package chat.rocket.android.main.presentation
import chat.rocket.android.R import chat.rocket.android.R
import chat.rocket.android.authentication.ui.newServerIntent import chat.rocket.android.authentication.ui.newServerIntent
import chat.rocket.android.chatroom.ui.chatRoomIntent import chat.rocket.android.chatroom.ui.chatRoomIntent
import chat.rocket.android.chatrooms.ui.ChatRoomsFragment
import chat.rocket.android.chatrooms.ui.TAG_CHAT_ROOMS_FRAGMENT import chat.rocket.android.chatrooms.ui.TAG_CHAT_ROOMS_FRAGMENT
import chat.rocket.android.createchannel.ui.CreateChannelFragment
import chat.rocket.android.createchannel.ui.TAG_CREATE_CHANNEL_FRAGMENT import chat.rocket.android.createchannel.ui.TAG_CREATE_CHANNEL_FRAGMENT
import chat.rocket.android.main.ui.MainActivity import chat.rocket.android.main.ui.MainActivity
import chat.rocket.android.profile.ui.ProfileFragment
import chat.rocket.android.profile.ui.TAG_PROFILE_FRAGMENT import chat.rocket.android.profile.ui.TAG_PROFILE_FRAGMENT
import chat.rocket.android.server.ui.changeServerIntent import chat.rocket.android.server.ui.changeServerIntent
import chat.rocket.android.settings.ui.SettingsFragment
import chat.rocket.android.settings.ui.TAG_SETTINGS_FRAGMENT import chat.rocket.android.settings.ui.TAG_SETTINGS_FRAGMENT
import chat.rocket.android.util.extensions.addFragment import chat.rocket.android.util.extensions.addFragment
import chat.rocket.android.util.extensions.addFragmentBackStack import chat.rocket.android.util.extensions.addFragmentBackStack
import chat.rocket.android.webview.adminpanel.ui.AdminPanelWebViewFragment import chat.rocket.android.webview.adminpanel.ui.TAG_ADMIN_PANEL_WEB_VIEW_FRAGMENT
import chat.rocket.android.webview.ui.webViewIntent
class MainNavigator(internal val activity: MainActivity) { class MainNavigator(internal val activity: MainActivity) {
...@@ -27,28 +24,32 @@ class MainNavigator(internal val activity: MainActivity) { ...@@ -27,28 +24,32 @@ class MainNavigator(internal val activity: MainActivity) {
fun toSettings() { fun toSettings() {
activity.addFragmentBackStack(TAG_SETTINGS_FRAGMENT, R.id.fragment_container) { activity.addFragmentBackStack(TAG_SETTINGS_FRAGMENT, R.id.fragment_container) {
SettingsFragment.newInstance() chat.rocket.android.settings.ui.newInstance()
} }
} }
fun toCreateChannel() { fun toCreateChannel() {
activity.addFragmentBackStack(TAG_CREATE_CHANNEL_FRAGMENT, R.id.fragment_container) { activity.addFragmentBackStack(TAG_CREATE_CHANNEL_FRAGMENT, R.id.fragment_container) {
CreateChannelFragment.newInstance() chat.rocket.android.createchannel.ui.newInstance()
} }
} }
fun toUserProfile() { fun toProfile() {
activity.addFragment(TAG_PROFILE_FRAGMENT, R.id.fragment_container) { activity.addFragmentBackStack(TAG_PROFILE_FRAGMENT, R.id.fragment_container) {
ProfileFragment.newInstance() chat.rocket.android.profile.ui.newInstance()
} }
} }
fun toAdminPanel(webPageUrl: String, userToken: String) { fun toAdminPanel(webPageUrl: String, userToken: String) {
activity.addFragment("AdminPanelWebViewFragment", R.id.fragment_container) { activity.addFragmentBackStack(TAG_ADMIN_PANEL_WEB_VIEW_FRAGMENT, R.id.fragment_container) {
AdminPanelWebViewFragment.newInstance(webPageUrl, userToken) chat.rocket.android.webview.adminpanel.ui.newInstance(webPageUrl, userToken)
} }
} }
fun toLicense(licenseUrl: String, licenseTitle: String) {
activity.startActivity(activity.webViewIntent(licenseUrl, licenseTitle))
}
fun toChatRoom( fun toChatRoom(
chatRoomId: String, chatRoomId: String,
chatRoomName: String, chatRoomName: String,
......
...@@ -27,7 +27,7 @@ class MembersPresenter @Inject constructor( ...@@ -27,7 +27,7 @@ class MembersPresenter @Inject constructor(
val factory: RocketChatClientFactory, val factory: RocketChatClientFactory,
private val userHelper: UserHelper private val userHelper: UserHelper
) { ) {
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
private var offset: Long = 0 private var offset: Long = 0
/** /**
......
...@@ -18,7 +18,7 @@ class MentionsPresenter @Inject constructor( ...@@ -18,7 +18,7 @@ class MentionsPresenter @Inject constructor(
private val mapper: UiModelMapper, private val mapper: UiModelMapper,
val factory: RocketChatClientFactory val factory: RocketChatClientFactory
) { ) {
private val client = factory.create(currentServer) private val client = factory.get(currentServer)
private var offset: Long = 0 private var offset: Long = 0
/** /**
......
...@@ -5,7 +5,6 @@ import chat.rocket.android.core.lifecycle.CancelStrategy ...@@ -5,7 +5,6 @@ import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.db.DatabaseManager import chat.rocket.android.db.DatabaseManager
import chat.rocket.android.server.infraestructure.RocketChatClientFactory import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.retryDB
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.common.model.roomTypeOf import chat.rocket.common.model.roomTypeOf
import chat.rocket.common.util.ifNull import chat.rocket.common.util.ifNull
...@@ -23,7 +22,7 @@ class PinnedMessagesPresenter @Inject constructor( ...@@ -23,7 +22,7 @@ class PinnedMessagesPresenter @Inject constructor(
private val mapper: UiModelMapper, private val mapper: UiModelMapper,
val factory: RocketChatClientFactory val factory: RocketChatClientFactory
) { ) {
private val client: RocketChatClient = factory.create(currentServer) private val client: RocketChatClient = factory.get(currentServer)
private var offset: Int = 0 private var offset: Int = 0
/** /**
......
package chat.rocket.android.preferences.di
import chat.rocket.android.dagger.scope.PerFragment
import chat.rocket.android.preferences.presentation.PreferencesView
import chat.rocket.android.preferences.ui.PreferencesFragment
import dagger.Module
import dagger.Provides
@Module
class PreferencesFragmentModule {
@Provides
@PerFragment
fun preferencesView(frag: PreferencesFragment): PreferencesView {
return frag
}
}
\ No newline at end of file
package chat.rocket.android.preferences.di
import chat.rocket.android.dagger.scope.PerFragment
import chat.rocket.android.preferences.ui.PreferencesFragment
import dagger.Module
import dagger.android.ContributesAndroidInjector
@Module
abstract class PreferencesFragmentProvider {
@ContributesAndroidInjector(modules = [PreferencesFragmentModule::class])
@PerFragment
abstract fun providePreferencesFragment(): PreferencesFragment
}
\ No newline at end of file
package chat.rocket.android.preferences.presentation
import chat.rocket.android.server.domain.AnalyticsTrackingInteractor
import javax.inject.Inject
class PreferencesPresenter @Inject constructor(
private val view: PreferencesView,
private val analyticsTrackingInteractor: AnalyticsTrackingInteractor
) {
fun loadAnalyticsTrackingInformation() {
view.setupAnalyticsTrackingView(analyticsTrackingInteractor.get())
}
fun enableAnalyticsTracking() {
analyticsTrackingInteractor.save(true)
}
fun disableAnalyticsTracking() {
analyticsTrackingInteractor.save(false)
}
}
\ No newline at end of file
package chat.rocket.android.preferences.presentation
interface PreferencesView {
/**
* Setups the analytics tracking view.
*
* @param isAnalyticsTrackingEnabled Whether the analytics tracking is enabled
*/
fun setupAnalyticsTrackingView(isAnalyticsTrackingEnabled: Boolean)
}
\ No newline at end of file
package chat.rocket.android.preferences.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import chat.rocket.android.BuildConfig
import chat.rocket.android.R
import chat.rocket.android.analytics.AnalyticsManager
import chat.rocket.android.analytics.event.ScreenViewEvent
import chat.rocket.android.main.ui.MainActivity
import chat.rocket.android.preferences.presentation.PreferencesPresenter
import chat.rocket.android.preferences.presentation.PreferencesView
import dagger.android.support.AndroidSupportInjection
import kotlinx.android.synthetic.main.app_bar.*
import kotlinx.android.synthetic.main.fragment_preferences.*
import javax.inject.Inject
internal const val TAG_PREFERENCES_FRAGMENT = "PreferencesFragment"
class PreferencesFragment : Fragment(), PreferencesView {
@Inject
lateinit var presenter: PreferencesPresenter
@Inject
lateinit var analyticsManager: AnalyticsManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AndroidSupportInjection.inject(this)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_preferences, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupListeners()
presenter.loadAnalyticsTrackingInformation()
analyticsManager.logScreenView(ScreenViewEvent.Preferences)
}
override fun onResume() {
setupToolbar()
super.onResume()
}
override fun setupAnalyticsTrackingView(isAnalyticsTrackingEnabled: Boolean) {
if (BuildConfig.FLAVOR == "foss") {
switch_analytics_tracking.isChecked = false
switch_analytics_tracking.isEnabled = false
text_analytics_tracking_description.text =
getString(R.string.msg_not_applicable_since_it_is_a_foss_version)
return
}
if (isAnalyticsTrackingEnabled) {
text_analytics_tracking_description.text =
getString(R.string.msg_send_analytics_tracking)
} else {
text_analytics_tracking_description.text =
getString(R.string.msg_do_not_send_analytics_tracking)
}
switch_analytics_tracking.isChecked = isAnalyticsTrackingEnabled
}
private fun setupToolbar() {
with((activity as MainActivity).toolbar) {
title = getString(R.string.title_preferences)
setNavigationIcon(R.drawable.ic_arrow_back_white_24dp)
setNavigationOnClickListener { activity?.onBackPressed() }
}
}
private fun setupListeners() {
switch_analytics_tracking.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
text_analytics_tracking_description.text =
getString(R.string.msg_send_analytics_tracking)
presenter.enableAnalyticsTracking()
} else {
text_analytics_tracking_description.text =
getString(R.string.msg_do_not_send_analytics_tracking)
presenter.disableAnalyticsTracking()
}
}
}
companion object {
fun newInstance() = PreferencesFragment()
}
}
...@@ -56,7 +56,7 @@ class ProfilePresenter @Inject constructor( ...@@ -56,7 +56,7 @@ class ProfilePresenter @Inject constructor(
navigator = navigator navigator = navigator
) { ) {
private val serverUrl = serverInteractor.get()!! private val serverUrl = serverInteractor.get()!!
private val client: RocketChatClient = factory.create(serverUrl) private val client: RocketChatClient = factory.get(serverUrl)
private val user = userHelper.user() private val user = userHelper.user()
fun loadUserProfile() { fun loadUserProfile() {
...@@ -175,27 +175,4 @@ class ProfilePresenter @Inject constructor( ...@@ -175,27 +175,4 @@ class ProfilePresenter @Inject constructor(
} }
} }
} }
fun deleteAccount(password: String) {
launchUI(strategy) {
view.showLoading()
try {
withContext(Dispatchers.Default) {
// REMARK: Backend API is only working with a lowercase hash.
// https://github.com/RocketChat/Rocket.Chat/issues/12573
retryIO { client.deleteOwnAccount(password.gethash().toHex().toLowerCase()) }
setupConnectionInfo(serverUrl)
logout(null)
}
} catch (exception: Exception) {
exception.message?.let {
view.showMessage(it)
}.ifNull {
view.showGenericErrorMessage()
}
} finally {
view.hideLoading()
}
}
}
} }
...@@ -2,7 +2,6 @@ package chat.rocket.android.profile.ui ...@@ -2,7 +2,6 @@ package chat.rocket.android.profile.ui
import DrawableHelper import DrawableHelper
import android.app.Activity import android.app.Activity
import androidx.appcompat.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Build import android.os.Build
...@@ -12,8 +11,6 @@ import android.view.Menu ...@@ -12,8 +11,6 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.MenuInflater
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.core.net.toUri import androidx.core.net.toUri
...@@ -37,6 +34,7 @@ import com.facebook.drawee.backends.pipeline.Fresco ...@@ -37,6 +34,7 @@ import com.facebook.drawee.backends.pipeline.Fresco
import dagger.android.support.AndroidSupportInjection import dagger.android.support.AndroidSupportInjection
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.Observables import io.reactivex.rxkotlin.Observables
import kotlinx.android.synthetic.main.app_bar.*
import kotlinx.android.synthetic.main.avatar_profile.* import kotlinx.android.synthetic.main.avatar_profile.*
import kotlinx.android.synthetic.main.fragment_profile.* import kotlinx.android.synthetic.main.fragment_profile.*
import kotlinx.android.synthetic.main.update_avatar_options.* import kotlinx.android.synthetic.main.update_avatar_options.*
...@@ -47,21 +45,17 @@ internal const val TAG_PROFILE_FRAGMENT = "ProfileFragment" ...@@ -47,21 +45,17 @@ internal const val TAG_PROFILE_FRAGMENT = "ProfileFragment"
private const val REQUEST_CODE_FOR_PERFORM_SAF = 1 private const val REQUEST_CODE_FOR_PERFORM_SAF = 1
private const val REQUEST_CODE_FOR_PERFORM_CAMERA = 2 private const val REQUEST_CODE_FOR_PERFORM_CAMERA = 2
fun newInstance() = ProfileFragment()
class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback { class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
@Inject @Inject lateinit var presenter: ProfilePresenter
lateinit var presenter: ProfilePresenter @Inject lateinit var analyticsManager: AnalyticsManager
@Inject
lateinit var analyticsManager: AnalyticsManager
private var currentName = "" private var currentName = ""
private var currentUsername = "" private var currentUsername = ""
private var currentEmail = "" private var currentEmail = ""
private var actionMode: ActionMode? = null private var actionMode: ActionMode? = null
private val editTextsDisposable = CompositeDisposable() private val editTextsDisposable = CompositeDisposable()
companion object {
fun newInstance() = ProfileFragment()
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
AndroidSupportInjection.inject(this) AndroidSupportInjection.inject(this)
...@@ -112,18 +106,6 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback { ...@@ -112,18 +106,6 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
super.onPrepareOptionsMenu(menu) super.onPrepareOptionsMenu(menu)
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.profile, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_delete_account -> showDeleteAccountDialog()
}
return true
}
override fun showProfile(avatarUrl: String, name: String, username: String, email: String?) { override fun showProfile(avatarUrl: String, name: String, username: String, email: String?) {
ui { ui {
image_avatar.setImageURI(avatarUrl) image_avatar.setImageURI(avatarUrl)
...@@ -205,7 +187,14 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback { ...@@ -205,7 +187,14 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
} }
private fun setupToolbar() { private fun setupToolbar() {
(activity as AppCompatActivity?)?.supportActionBar?.title = getString(R.string.title_profile) with((activity as AppCompatActivity)) {
with(toolbar) {
setSupportActionBar(this)
title = getString(R.string.title_profile)
setNavigationIcon(R.drawable.ic_arrow_back_white_24dp)
setNavigationOnClickListener { activity?.onBackPressed() }
}
}
} }
private fun setupListeners() { private fun setupListeners() {
...@@ -292,16 +281,4 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback { ...@@ -292,16 +281,4 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
text_email.isEnabled = value text_email.isEnabled = value
} }
} }
fun showDeleteAccountDialog() {
context?.let {
val passwordEText = EditText(context);
val mDialogView = LayoutInflater.from(it).inflate(R.layout.item_account_delete, null)
val mBuilder = AlertDialog.Builder(it)
mBuilder.setView(mDialogView).setPositiveButton(R.string.action_delete_account) { _, _ ->
presenter.deleteAccount(passwordEText.text.toString())
}.setNegativeButton(android.R.string.no) { dialog, _ -> dialog.cancel() }.create().show()
}
}
} }
...@@ -69,7 +69,7 @@ class PermissionsInteractor @Inject constructor( ...@@ -69,7 +69,7 @@ class PermissionsInteractor @Inject constructor(
} }
fun canSeeTheAdminPanel(): Boolean { fun isAdministrationEnabled(): Boolean {
currentServerUrl()?.let { serverUrl -> currentServerUrl()?.let { serverUrl ->
val viewStatistics = val viewStatistics =
permissionsRepository.get(serverUrl, VIEW_STATISTICS) permissionsRepository.get(serverUrl, VIEW_STATISTICS)
......
...@@ -20,7 +20,7 @@ class RefreshPermissionsInteractor @Inject constructor( ...@@ -20,7 +20,7 @@ class RefreshPermissionsInteractor @Inject constructor(
fun refreshAsync(server: String) { fun refreshAsync(server: String) {
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
try { try {
factory.create(server).let { client -> factory.get(server).let { client ->
val permissions = retryIO( val permissions = retryIO(
description = "permissions", description = "permissions",
times = 5, times = 5,
......
...@@ -74,7 +74,7 @@ class RefreshSettingsInteractor @Inject constructor( ...@@ -74,7 +74,7 @@ class RefreshSettingsInteractor @Inject constructor(
suspend fun refresh(server: String) { suspend fun refresh(server: String) {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
factory.create(server).let { client -> factory.get(server).let { client ->
val settings = retryIO( val settings = retryIO(
description = "settings", description = "settings",
times = 5, times = 5,
......
package chat.rocket.android.server.infraestructure package chat.rocket.android.server.infraestructure
import chat.rocket.android.db.DatabaseManagerFactory import chat.rocket.android.db.DatabaseManagerFactory
import chat.rocket.android.infrastructure.LocalRepository
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
...@@ -20,7 +19,7 @@ class ConnectionManagerFactory @Inject constructor( ...@@ -20,7 +19,7 @@ class ConnectionManagerFactory @Inject constructor(
} }
Timber.d("Returning FRESH Manager for: $url") Timber.d("Returning FRESH Manager for: $url")
val manager = ConnectionManager(factory.create(url), dbFactory.create(url)) val manager = ConnectionManager(factory.get(url), dbFactory.create(url))
cache[url] = manager cache[url] = manager
return manager return manager
} }
......
...@@ -18,7 +18,7 @@ class RocketChatClientFactory @Inject constructor( ...@@ -18,7 +18,7 @@ class RocketChatClientFactory @Inject constructor(
) { ) {
private val cache = HashMap<String, RocketChatClient>() private val cache = HashMap<String, RocketChatClient>()
fun create(url: String): RocketChatClient { fun get(url: String): RocketChatClient {
cache[url]?.let { cache[url]?.let {
Timber.d("Returning CACHED client for: $url") Timber.d("Returning CACHED client for: $url")
return it return it
......
...@@ -105,7 +105,7 @@ abstract class CheckServerPresenter constructor( ...@@ -105,7 +105,7 @@ abstract class CheckServerPresenter constructor(
internal fun setupConnectionInfo(serverUrl: String) { internal fun setupConnectionInfo(serverUrl: String) {
currentServer = serverUrl currentServer = serverUrl
client = factory.create(serverUrl) client = factory.get(serverUrl)
managerFactory?.create(serverUrl)?.let { managerFactory?.create(serverUrl)?.let {
manager = it manager = it
} }
......
package chat.rocket.android.settings.di package chat.rocket.android.settings.di
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.dagger.scope.PerFragment import chat.rocket.android.dagger.scope.PerFragment
import chat.rocket.android.settings.presentation.SettingsView import chat.rocket.android.settings.presentation.SettingsView
import chat.rocket.android.settings.ui.SettingsFragment import chat.rocket.android.settings.ui.SettingsFragment
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import kotlinx.coroutines.Job
@Module @Module
class SettingsFragmentModule { class SettingsFragmentModule {
...@@ -20,13 +18,7 @@ class SettingsFragmentModule { ...@@ -20,13 +18,7 @@ class SettingsFragmentModule {
@Provides @Provides
@PerFragment @PerFragment
fun settingsLifecycleOwner(frag: SettingsFragment): LifecycleOwner { fun settingsLifecycleOwner(fragment: SettingsFragment): LifecycleOwner {
return frag return fragment
}
@Provides
@PerFragment
fun provideCancelStrategy(owner: LifecycleOwner, jobs: Job): CancelStrategy {
return CancelStrategy(owner, jobs)
} }
} }
\ No newline at end of file
package chat.rocket.android.settings.di package chat.rocket.android.settings.di
import chat.rocket.android.dagger.scope.PerFragment
import chat.rocket.android.settings.ui.SettingsFragment import chat.rocket.android.settings.ui.SettingsFragment
import dagger.Module import dagger.Module
import dagger.android.ContributesAndroidInjector import dagger.android.ContributesAndroidInjector
...@@ -8,5 +9,6 @@ import dagger.android.ContributesAndroidInjector ...@@ -8,5 +9,6 @@ import dagger.android.ContributesAndroidInjector
abstract class SettingsFragmentProvider { abstract class SettingsFragmentProvider {
@ContributesAndroidInjector(modules = [SettingsFragmentModule::class]) @ContributesAndroidInjector(modules = [SettingsFragmentModule::class])
@PerFragment
abstract fun provideSettingsFragment(): SettingsFragment abstract fun provideSettingsFragment(): SettingsFragment
} }
\ No newline at end of file
...@@ -8,7 +8,6 @@ import chat.rocket.android.server.infraestructure.RocketChatClientFactory ...@@ -8,7 +8,6 @@ import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.retryIO import chat.rocket.android.util.retryIO
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.common.util.ifNull
import chat.rocket.core.RocketChatClient import chat.rocket.core.RocketChatClient
import chat.rocket.core.internal.rest.updateProfile import chat.rocket.core.internal.rest.updateProfile
import javax.inject.Inject import javax.inject.Inject
...@@ -22,7 +21,7 @@ class PasswordPresenter @Inject constructor( ...@@ -22,7 +21,7 @@ class PasswordPresenter @Inject constructor(
factory: RocketChatClientFactory factory: RocketChatClientFactory
) { ) {
private val serverUrl = serverInteractor.get()!! private val serverUrl = serverInteractor.get()!!
private val client: RocketChatClient = factory.create(serverUrl) private val client: RocketChatClient = factory.get(serverUrl)
fun updatePassword(password: String) { fun updatePassword(password: String) {
launchUI(strategy) { launchUI(strategy) {
......
package chat.rocket.android.settings.presentation
import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.db.DatabaseManagerFactory
import chat.rocket.android.helper.UserHelper
import chat.rocket.android.main.presentation.MainNavigator
import chat.rocket.android.server.domain.AnalyticsTrackingInteractor
import chat.rocket.android.server.domain.GetCurrentServerInteractor
import chat.rocket.android.server.domain.PermissionsInteractor
import chat.rocket.android.server.domain.RemoveAccountInteractor
import chat.rocket.android.server.domain.TokenRepository
import chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.server.presentation.CheckServerPresenter
import chat.rocket.android.util.extension.gethash
import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.extension.toHex
import chat.rocket.android.util.extensions.adminPanelUrl
import chat.rocket.android.util.extensions.avatarUrl
import chat.rocket.android.util.retryIO
import chat.rocket.common.util.ifNull
import chat.rocket.core.internal.rest.deleteOwnAccount
import chat.rocket.core.internal.rest.serverInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Named
class SettingsPresenter @Inject constructor(
private val view: SettingsView,
private val strategy: CancelStrategy,
private val navigator: MainNavigator,
@Named("currentServer") private val currentServer: String,
private val userHelper: UserHelper,
private val analyticsTrackingInteractor: AnalyticsTrackingInteractor,
private val tokenRepository: TokenRepository,
private val permissions: PermissionsInteractor,
private val rocketChatClientFactory: RocketChatClientFactory,
getCurrentServerInteractor: GetCurrentServerInteractor,
removeAccountInteractor: RemoveAccountInteractor,
databaseManagerFactory: DatabaseManagerFactory,
connectionManagerFactory: ConnectionManagerFactory
) : CheckServerPresenter(
strategy = strategy,
factory = rocketChatClientFactory,
serverInteractor = getCurrentServerInteractor,
removeAccountInteractor = removeAccountInteractor,
tokenRepository = tokenRepository,
dbManagerFactory = databaseManagerFactory,
managerFactory = connectionManagerFactory,
tokenView = view,
navigator = navigator
) {
fun setupView() {
launchUI(strategy) {
try {
val serverInfo = retryIO(description = "serverInfo", times = 5) {
rocketChatClientFactory.get(currentServer).serverInfo()
}
userHelper.user()?.let { user ->
view.setupSettingsView(
currentServer.avatarUrl(user.username ?: ""),
userHelper.displayName(user) ?: user.username ?: "",
user.status.toString(),
permissions.isAdministrationEnabled(),
analyticsTrackingInteractor.get(),
true,
serverInfo.version
)
}
} catch (exception: Exception) {
Timber.d(exception, "Error getting server info")
exception.message?.let {
view.showMessage(it)
}.ifNull {
view.showGenericErrorMessage()
}
}
}
}
fun enableAnalyticsTracking(isEnabled: Boolean) {
analyticsTrackingInteractor.save(isEnabled)
}
fun logout() {
setupConnectionInfo(currentServer)
super.logout(null) // TODO null?
}
fun deleteAccount(password: String) {
launchUI(strategy) {
view.showLoading()
try {
withContext(Dispatchers.Default) {
// REMARK: Backend API is only working with a lowercase hash.
// https://github.com/RocketChat/Rocket.Chat/issues/12573
retryIO {
rocketChatClientFactory.get(currentServer)
.deleteOwnAccount(password.gethash().toHex().toLowerCase())
}
setupConnectionInfo(currentServer)
logout(null)
}
} catch (exception: Exception) {
exception.message?.let {
view.showMessage(it)
}.ifNull {
view.showGenericErrorMessage()
}
} finally {
view.hideLoading()
}
}
}
fun toProfile() = navigator.toProfile()
fun toAdmin() = tokenRepository.get(currentServer)?.let {
navigator.toAdminPanel(currentServer.adminPanelUrl(), it.authToken)
}
fun toLicense(licenseUrl: String, licenseTitle: String) =
navigator.toLicense(licenseUrl, licenseTitle)
}
\ No newline at end of file
package chat.rocket.android.settings.presentation package chat.rocket.android.settings.presentation
interface SettingsView import chat.rocket.android.core.behaviours.LoadingView
import chat.rocket.android.core.behaviours.MessageView
import chat.rocket.android.server.presentation.TokenView
interface SettingsView : TokenView, LoadingView, MessageView {
/**
* Setups the settings view.
*
* @param avatar The user avatar.
* @param displayName The user display name.
* @param status The user status.
* @param isAdministrationEnabled True if the administration is enabled, false otherwise.
* @param isAnalyticsTrackingEnabled True if the analytics tracking is enabled, false otherwise.
* @param isDeleteAccountEnabled True if the delete account is enabled, false otherwise.
* @param serverVersion The version of the current logged in server.
*/
fun setupSettingsView(
avatar: String,
displayName: String,
status: String,
isAdministrationEnabled: Boolean,
isAnalyticsTrackingEnabled: Boolean,
isDeleteAccountEnabled: Boolean,
serverVersion: String
)
}
...@@ -7,35 +7,36 @@ import android.os.Bundle ...@@ -7,35 +7,36 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.AdapterView import android.widget.EditText
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import chat.rocket.android.BuildConfig
import chat.rocket.android.R import chat.rocket.android.R
import chat.rocket.android.about.ui.AboutFragment
import chat.rocket.android.about.ui.TAG_ABOUT_FRAGMENT
import chat.rocket.android.analytics.AnalyticsManager import chat.rocket.android.analytics.AnalyticsManager
import chat.rocket.android.analytics.event.ScreenViewEvent import chat.rocket.android.analytics.event.ScreenViewEvent
import chat.rocket.android.helper.TextHelper.getDeviceAndAppInformation import chat.rocket.android.helper.TextHelper.getDeviceAndAppInformation
import chat.rocket.android.main.ui.MainActivity import chat.rocket.android.settings.presentation.SettingsPresenter
import chat.rocket.android.preferences.ui.PreferencesFragment
import chat.rocket.android.preferences.ui.TAG_PREFERENCES_FRAGMENT
import chat.rocket.android.settings.password.ui.PasswordActivity
import chat.rocket.android.settings.presentation.SettingsView import chat.rocket.android.settings.presentation.SettingsView
import chat.rocket.android.util.extensions.addFragmentBackStack
import chat.rocket.android.util.extensions.inflate import chat.rocket.android.util.extensions.inflate
import chat.rocket.android.util.extensions.showToast import chat.rocket.android.util.extensions.showToast
import chat.rocket.android.webview.ui.webViewIntent import chat.rocket.android.util.invalidateFirebaseToken
import com.bumptech.glide.Glide
import dagger.android.support.AndroidSupportInjection import dagger.android.support.AndroidSupportInjection
import kotlinx.android.synthetic.main.app_bar.*
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
internal const val TAG_SETTINGS_FRAGMENT = "SettingsFragment" internal const val TAG_SETTINGS_FRAGMENT = "SettingsFragment"
class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListener { fun newInstance(): Fragment = SettingsFragment()
@Inject
lateinit var analyticsManager: AnalyticsManager class SettingsFragment : Fragment(), SettingsView {
@Inject lateinit var analyticsManager: AnalyticsManager
@Inject lateinit var presenter: SettingsPresenter
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -51,73 +52,92 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen ...@@ -51,73 +52,92 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar() setupToolbar()
setupListView() presenter.setupView()
analyticsManager.logScreenView(ScreenViewEvent.Settings) analyticsManager.logScreenView(ScreenViewEvent.Settings)
} }
override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { override fun setupSettingsView(
when (parent?.getItemAtPosition(position).toString()) { avatar: String,
resources.getStringArray(R.array.settings_actions)[0] -> { displayName: String,
(activity as AppCompatActivity).addFragmentBackStack( status: String,
TAG_PREFERENCES_FRAGMENT, isAdministrationEnabled: Boolean,
R.id.fragment_container isAnalyticsTrackingEnabled: Boolean,
) { isDeleteAccountEnabled: Boolean,
PreferencesFragment.newInstance() serverVersion: String
} ) {
} context?.let { Glide.with(it).load(avatar).into(image_avatar) }
text_display_name.text = displayName
text_status.text = status
resources.getStringArray(R.array.settings_actions)[1] -> profile_container.setOnClickListener { presenter.toProfile() }
activity?.startActivity(Intent(activity, PasswordActivity::class.java))
// TODO (https://github.com/RocketChat/Rocket.Chat.Android/pull/1918) text_contact_us.setOnClickListener { contactSupport() }
resources.getStringArray(R.array.settings_actions)[2] -> showToast("Coming soon")
resources.getStringArray(R.array.settings_actions)[3] -> shareApp() text_language.setOnClickListener {}
resources.getStringArray(R.array.settings_actions)[4] -> showAppOnStore() text_review_this_app.setOnClickListener { showAppOnStore() }
text_share_this_app.setOnClickListener { shareApp() }
text_license.setOnClickListener {
presenter.toLicense(getString(R.string.license_url), getString(R.string.title_licence))
}
resources.getStringArray(R.array.settings_actions)[5] -> contactSupport() text_app_version.text = getString(R.string.msg_app_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)
resources.getStringArray(R.array.settings_actions)[6] -> activity?.startActivity( text_server_version.text = getString(R.string.msg_server_version, serverVersion)
context?.webViewIntent(
getString(R.string.license_url),
getString(R.string.title_licence)
)
)
resources.getStringArray(R.array.settings_actions)[7] -> { text_logout.setOnClickListener { presenter.logout() }
(activity as AppCompatActivity).addFragmentBackStack(
TAG_ABOUT_FRAGMENT, with(text_administration) {
R.id.fragment_container isVisible = isAdministrationEnabled
) { setOnClickListener { presenter.toAdmin() }
AboutFragment.newInstance() }
}
with(switch_crash_report) {
isChecked = isAnalyticsTrackingEnabled
isEnabled = BuildConfig.FLAVOR == "play"
setOnCheckedChangeListener { _, isChecked ->
presenter.enableAnalyticsTracking(isChecked)
} }
} }
}
private fun showAppOnStore() { with(text_delete_account) {
try { isVisible = isDeleteAccountEnabled
startActivity(Intent(Intent.ACTION_VIEW, getString(R.string.market_link).toUri())) setOnClickListener { showDeleteAccountDialog() }
} catch (error: ActivityNotFoundException) {
startActivity(Intent(Intent.ACTION_VIEW, getString(R.string.play_store_link).toUri()))
} }
} }
private fun setupListView() { override fun invalidateToken(token: String) = invalidateFirebaseToken(token)
settings_list.onItemClickListener = this
override fun showLoading() {
view_loading.isVisible = true
} }
private fun setupToolbar() { override fun hideLoading() {
(activity as AppCompatActivity?)?.supportActionBar?.title = getString(R.string.title_settings) view_loading.isVisible = false
} }
private fun shareApp() { override fun showMessage(resId: Int) {
with(Intent(Intent.ACTION_SEND)) { showToast(resId)
type = "text/plain" }
putExtra(Intent.EXTRA_SUBJECT, getString(R.string.msg_check_this_out))
putExtra(Intent.EXTRA_TEXT, getString(R.string.play_store_link)) override fun showMessage(message: String) {
startActivity(Intent.createChooser(this, getString(R.string.msg_share_using))) showToast(message)
}
override fun showGenericErrorMessage() = showMessage(getString(R.string.msg_generic_error))
private fun setupToolbar() {
with((activity as AppCompatActivity)) {
with(toolbar) {
setSupportActionBar(this)
title = getString(R.string.title_settings)
setNavigationIcon(R.drawable.ic_arrow_back_white_24dp)
setNavigationOnClickListener { activity?.onBackPressed() }
}
} }
} }
...@@ -136,7 +156,31 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen ...@@ -136,7 +156,31 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen
} }
} }
companion object { private fun showAppOnStore() {
fun newInstance() = SettingsFragment() 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()))
}
}
private fun shareApp() {
with(Intent(Intent.ACTION_SEND)) {
type = "text/plain"
putExtra(Intent.EXTRA_SUBJECT, getString(R.string.msg_check_this_out))
putExtra(Intent.EXTRA_TEXT, getString(R.string.play_store_link))
startActivity(Intent.createChooser(this, getString(R.string.msg_share_using)))
}
}
private fun showDeleteAccountDialog() {
context?.let {
AlertDialog.Builder(it)
.setView(LayoutInflater.from(it).inflate(R.layout.dialog_delete_account, null))
.setPositiveButton(R.string.msg_delete_account) { _, _ ->
presenter.deleteAccount(EditText(context).text.toString())
}.setNegativeButton(android.R.string.no) { dialog, _ -> dialog.cancel() }.create()
.show()
}
} }
} }
...@@ -19,7 +19,7 @@ suspend fun RocketChatClientFactory.registerPushToken( ...@@ -19,7 +19,7 @@ suspend fun RocketChatClientFactory.registerPushToken(
accounts.forEach { account -> accounts.forEach { account ->
try { try {
retryIO(description = "register push token: ${account.serverUrl}") { retryIO(description = "register push token: ${account.serverUrl}") {
create(account.serverUrl).registerPushToken(token) get(account.serverUrl).registerPushToken(token)
} }
} catch (ex: Exception) { } catch (ex: Exception) {
Timber.d(ex, "Error registering Push token for ${account.serverUrl}") Timber.d(ex, "Error registering Push token for ${account.serverUrl}")
......
...@@ -16,9 +16,17 @@ import dagger.android.support.DaggerFragment ...@@ -16,9 +16,17 @@ import dagger.android.support.DaggerFragment
import kotlinx.android.synthetic.main.fragment_admin_panel_web_view.* import kotlinx.android.synthetic.main.fragment_admin_panel_web_view.*
import javax.inject.Inject import javax.inject.Inject
internal const val TAG_ADMIN_PANEL_WEB_VIEW_FRAGMENT = "AdminPanelWebViewFragment"
private const val BUNDLE_WEB_PAGE_URL = "web_page_url" private const val BUNDLE_WEB_PAGE_URL = "web_page_url"
private const val BUNDLE_USER_TOKEN = "user_token" private const val BUNDLE_USER_TOKEN = "user_token"
fun newInstance(webPageUrl: String, userToken: String) = AdminPanelWebViewFragment().apply {
arguments = Bundle(2).apply {
putString(BUNDLE_WEB_PAGE_URL, webPageUrl)
putString(BUNDLE_USER_TOKEN, userToken)
}
}
class AdminPanelWebViewFragment : DaggerFragment() { class AdminPanelWebViewFragment : DaggerFragment() {
private lateinit var webPageUrl: String private lateinit var webPageUrl: String
private lateinit var userToken: String private lateinit var userToken: String
...@@ -30,7 +38,8 @@ class AdminPanelWebViewFragment : DaggerFragment() { ...@@ -30,7 +38,8 @@ class AdminPanelWebViewFragment : DaggerFragment() {
arguments?.run { arguments?.run {
webPageUrl = getString(BUNDLE_WEB_PAGE_URL, "") webPageUrl = getString(BUNDLE_WEB_PAGE_URL, "")
userToken = getString(BUNDLE_USER_TOKEN, "") userToken = getString(BUNDLE_USER_TOKEN, "")
} ?: requireNotNull(arguments) { "no arguments supplied when the fragment was instantiated" } }
?: requireNotNull(arguments) { "no arguments supplied when the fragment was instantiated" }
} }
override fun onCreateView( override fun onCreateView(
...@@ -49,7 +58,7 @@ class AdminPanelWebViewFragment : DaggerFragment() { ...@@ -49,7 +58,7 @@ class AdminPanelWebViewFragment : DaggerFragment() {
private fun setupToolbar() { private fun setupToolbar() {
(activity as AppCompatActivity?)?.supportActionBar?.title = (activity as AppCompatActivity?)?.supportActionBar?.title =
getString(R.string.title_admin_panel) getString(R.string.title_admin_panel)
} }
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
...@@ -70,13 +79,4 @@ class AdminPanelWebViewFragment : DaggerFragment() { ...@@ -70,13 +79,4 @@ class AdminPanelWebViewFragment : DaggerFragment() {
} }
web_view.loadUrl(webPageUrl) web_view.loadUrl(webPageUrl)
} }
companion object {
fun newInstance(webPageUrl: String, userToken: String) = AdminPanelWebViewFragment().apply {
arguments = Bundle(2).apply {
putString(BUNDLE_WEB_PAGE_URL, webPageUrl)
putString(BUNDLE_USER_TOKEN, userToken)
}
}
}
} }
\ No newline at end of file
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="chat.rocket.android.about.ui.AboutFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="50dp"
android:layout_gravity="center">
<ImageView
android:id="@+id/image_app_name"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:src="@drawable/ic_app_name"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:layout_width="160dp"
android:layout_height="160dp"
android:adjustViewBounds="true"
android:scaleX="1.5"
android:scaleY="1.5"
android:src="@drawable/ic_launcher_foreground"
app:layout_constraintBottom_toTopOf="@id/image_app_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_version_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Version alpha2.0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_app_name"
android:layout_marginTop="16dp"
android:textColor="@color/colorSecondaryText"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"/>
<TextView
android:id="@+id/text_build_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Build # 2000"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_version_name"
android:layout_marginTop="8dp"
android:textColor="@color/colorSecondaryText" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
\ No newline at end of file
...@@ -8,9 +8,15 @@ ...@@ -8,9 +8,15 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
tools:context=".profile.ui.ProfileFragment"> tools:context=".profile.ui.ProfileFragment">
<include
android:id="@+id/layout_app_bar"
layout="@layout/app_bar"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_below="@+id/layout_app_bar">
<LinearLayout <LinearLayout
android:id="@+id/profile_container" android:id="@+id/profile_container"
......
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_delete_account"
android:title="@string/action_delete_account"
app:showAsAction="never" />
</menu>
\ No newline at end of file
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">تسجيل الدخول إلى خادمك</string> <string name="title_sign_in_your_server">تسجيل الدخول إلى خادمك</string>
<string name="title_log_in">تسجيل الدخول</string> <string name="title_log_in">تسجيل الدخول</string>
<string name="title_share_the_app">انشر البرنامج</string>
<string name="title_register_username">اسم المستخدم</string> <string name="title_register_username">اسم المستخدم</string>
<string name="title_reset_password">إعادة تعيين كلمة السر</string> <string name="title_reset_password">إعادة تعيين كلمة السر</string>
<string name="title_sign_up">سجل</string> <string name="title_sign_up">سجل</string>
...@@ -21,7 +20,6 @@ ...@@ -21,7 +20,6 @@
<string name="title_admin_panel">لوحة الإدارة</string> <string name="title_admin_panel">لوحة الإدارة</string>
<string name="title_password">تغيير كلمة السر</string> <string name="title_password">تغيير كلمة السر</string>
<string name="title_update_profile">تحديث الملف الشخصي</string> <string name="title_update_profile">تحديث الملف الشخصي</string>
<string name="title_about">عنا</string>
<string name="title_create_channel">إنشاء قناة</string> <string name="title_create_channel">إنشاء قناة</string>
<string name="title_licence">الترخيص</string> <string name="title_licence">الترخيص</string>
<string name="title_are_you_sure">هل أنت متأكد؟</string> <string name="title_are_you_sure">هل أنت متأكد؟</string>
...@@ -59,21 +57,21 @@ ...@@ -59,21 +57,21 @@
<string name="action_create_server">إنشاء خادم جديد</string> <string name="action_create_server">إنشاء خادم جديد</string>
<string name="action_register">تسجيل</string> <string name="action_register">تسجيل</string>
<string name="action_confirm">تأكيد</string> <string name="action_confirm">تأكيد</string>
<string name="action_delete_account">حذف حساب</string>
<string name="action_favorite">Favorite</string> <!-- TODO Translate --> <string name="action_favorite">Favorite</string> <!-- TODO Translate -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Translate --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Translate -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">التفضيلات</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">تغيير كلمة السر</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">نغيير اللغة</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">نشر البرنامج</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">قيمنا</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">اتصل بنا</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">الترخيص</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">عنا</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">نأسف حدث خطأ ما حاول مرة أخرى</string> <string name="msg_generic_error">نأسف حدث خطأ ما حاول مرة أخرى</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Anmelden am Server</string> <string name="title_sign_in_your_server">Anmelden am Server</string>
<string name="title_log_in">Anmelden</string> <string name="title_log_in">Anmelden</string>
<string name="title_share_the_app">App teilen</string>
<string name="title_register_username">Registriere Benutzernamen</string> <string name="title_register_username">Registriere Benutzernamen</string>
<string name="title_reset_password">Passwort zurücksetzen</string> <string name="title_reset_password">Passwort zurücksetzen</string>
<string name="title_sign_up">registrieren</string> <string name="title_sign_up">registrieren</string>
...@@ -14,17 +13,13 @@ ...@@ -14,17 +13,13 @@
<string name="title_members">Benutzer</string> <string name="title_members">Benutzer</string>
<string name="title_counted_members">Benutzer (%d)</string> <string name="title_counted_members">Benutzer (%d)</string>
<string name="title_settings">Einstellungen</string> <string name="title_settings">Einstellungen</string>
<string name="title_preferences">Eigenschaften</string> <string name="title_preferences">Eigenschaften</string>
<string name="title_change_password">Ändere Passwort</string> <string name="title_change_password">Ändere Passwort</string>
<string name="title_rate_us">Bewerten Sie uns</string> <string name="title_rate_us">Bewerten Sie uns</string>
<string name="title_admin_panel">Administrationsmenü</string> <string name="title_admin_panel">Administrationsmenü</string>
<string name="title_password">Ändere Passwort</string> <string name="title_password">Ändere Passwort</string>
<string name="title_update_profile">Update Profil</string> <string name="title_update_profile">Update Profil</string>
<string name="title_about">Über</string>
<string name="title_create_channel">Erstelle Raum</string> <string name="title_create_channel">Erstelle Raum</string>
<string name="title_are_you_sure">Sind Sie sicher?</string> <string name="title_are_you_sure">Sind Sie sicher?</string>
<string name="title_channel_details">Channel-Details</string> <string name="title_channel_details">Channel-Details</string>
<string name="title_topic">Thema</string> <string name="title_topic">Thema</string>
...@@ -61,21 +56,21 @@ ...@@ -61,21 +56,21 @@
<string name="action_create_server">Einen eigenen Server erstellen</string> <string name="action_create_server">Einen eigenen Server erstellen</string>
<string name="action_register">Registrieren</string> <string name="action_register">Registrieren</string>
<string name="action_confirm">Bestätigen</string> <string name="action_confirm">Bestätigen</string>
<string name="action_delete_account">Konto löschen</string> <string name="action_favorite">Favoriten</string>
<string name="action_favorite">Favoriten</string> <string name="action_remove_favorite">Favoriten entfernen</string>
<string name="action_remove_favorite">Favoriten entfernen</string>
<!-- Settings messages-->
<!-- Settings List --> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<string-array name="settings_actions"> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_preferences">Eigenschaften</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="item_password">Passwort ändern</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="change_language">Sprache ändern</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_share_app">Link zur App teilen</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_rate_us">Bewerten Sie uns</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_contact_us">Kontaktieren Sie uns</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_licence">Lizenz</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
<item name="item_about">Über</item> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
</string-array> <string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Entschuldigung, ein Fehler ist aufgetreten, bitte versuchen Sie es noch einmal.</string> <string name="msg_generic_error">Entschuldigung, ein Fehler ist aufgetreten, bitte versuchen Sie es noch einmal.</string>
...@@ -114,9 +109,7 @@ ...@@ -114,9 +109,7 @@
<string name="msg_content_description_log_in_using_gitlab">Login mit Gitlab</string> <string name="msg_content_description_log_in_using_gitlab">Login mit Gitlab</string>
<string name="msg_content_description_log_in_using_wordpress">Login mit WordPress</string> <string name="msg_content_description_log_in_using_wordpress">Login mit WordPress</string>
<string name="msg_content_description_send_message">Sende Nachricht</string> <string name="msg_content_description_send_message">Sende Nachricht</string>
<string name="msg_content_description_show_more_login_options">Zeige mehr Login-Optionen</string> <string name="msg_content_description_show_more_login_options">Zeige mehr Login-Optionen</string>
<string name="msg_content_description_show_attachment_options">Zeige Anhang Optionen</string> <string name="msg_content_description_show_attachment_options">Zeige Anhang Optionen</string>
<string name="msg_you">Du</string> <string name="msg_you">Du</string>
<string name="msg_unknown">Unbekannt</string> <string name="msg_unknown">Unbekannt</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Inicia sesión en tu servidor</string> <string name="title_sign_in_your_server">Inicia sesión en tu servidor</string>
<string name="title_log_in">Iniciar sesión</string> <string name="title_log_in">Iniciar sesión</string>
<string name="title_share_the_app">Compartir aplicación</string>
<string name="title_register_username">Registrar nombre de usuario</string> <string name="title_register_username">Registrar nombre de usuario</string>
<string name="title_reset_password">Restablecer la contraseña</string> <string name="title_reset_password">Restablecer la contraseña</string>
<string name="title_sign_up">Regístrate</string> <string name="title_sign_up">Regístrate</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Admin panel</string> <!-- TODO Add translation --> <string name="title_admin_panel">Admin panel</string> <!-- TODO Add translation -->
<string name="title_password">Cambia la contraseña</string> <string name="title_password">Cambia la contraseña</string>
<string name="title_update_profile">Actualización del perfil</string> <string name="title_update_profile">Actualización del perfil</string>
<string name="title_about">Acerca de</string>
<string name="title_create_channel">Crear canal</string> <string name="title_create_channel">Crear canal</string>
<string name="title_licence">Licence</string> <!-- TODO Add translation --> <string name="title_licence">Licence</string> <!-- TODO Add translation -->
<string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation --> <string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation -->
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Create a new server</string> <!-- TODO Add translation --> <string name="action_create_server">Create a new server</string> <!-- TODO Add translation -->
<string name="action_register">Register</string> <!-- TODO Add translation --> <string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation --> <string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferences</item> <!-- TODO Add translation --> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Change password</item> <!-- TODO Add translation --> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Change language</item> <!-- TODO Add translation --> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Share app</item> <!-- TODO Add translation --> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Rate us</item> <!-- TODO Add translation --> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contact us</item> <!-- TODO Add translation --> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licence</item> <!-- TODO Add translation --> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">About</item> <!-- TODO Add translation --> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Lo sentimos, ha ocurrido un error, por favor intente de nuevo</string> <string name="msg_generic_error">Lo sentimos, ha ocurrido un error, por favor intente de nuevo</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">به سرور خود متصل شوید</string> <string name="title_sign_in_your_server">به سرور خود متصل شوید</string>
<string name="title_log_in">ورود</string> <string name="title_log_in">ورود</string>
<string name="title_share_the_app">به اشتراک‌گذاری اپلیکیشن</string>
<string name="title_register_username">ثبت شناسه‌ی کاربری</string> <string name="title_register_username">ثبت شناسه‌ی کاربری</string>
<string name="title_reset_password">تعویض گذرواژه</string> <string name="title_reset_password">تعویض گذرواژه</string>
<string name="title_sign_up">ثبت‌‌نام کنید</string> <string name="title_sign_up">ثبت‌‌نام کنید</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Admin panel</string> <!-- TODO Add translation --> <string name="title_admin_panel">Admin panel</string> <!-- TODO Add translation -->
<string name="title_password">تغییر گذرواژه</string> <string name="title_password">تغییر گذرواژه</string>
<string name="title_update_profile">به روزرسانی نمایه</string> <string name="title_update_profile">به روزرسانی نمایه</string>
<string name="title_about">درباره</string>
<string name="title_create_channel">ایجاد کانال</string> <string name="title_create_channel">ایجاد کانال</string>
<string name="title_licence">مجوز</string> <string name="title_licence">مجوز</string>
<string name="title_are_you_sure">آیا مطمئن هستید؟</string> <string name="title_are_you_sure">آیا مطمئن هستید؟</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">ایجاد سرور جدید</string> <string name="action_create_server">ایجاد سرور جدید</string>
<string name="action_register">ثبت‌نام</string> <string name="action_register">ثبت‌نام</string>
<string name="action_confirm">تایید</string> <string name="action_confirm">تایید</string>
<string name="action_delete_account">حذف حساب کاربری</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">ترجیحات</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">تغییر گذرواژه</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="item_share_app">به اشتراک‌گذاری اپلیکیشن</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="change_language">Change language</item> <!-- TODO Add translation --> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">به ما امتیاز دهید</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">تماس با ما</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">مجوز</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">درباره</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">متاسفانه مشکلی رخ داد، لطفا دوباره تلاش کنید</string> <string name="msg_generic_error">متاسفانه مشکلی رخ داد، لطفا دوباره تلاش کنید</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Connectez-vous sur votre serveur</string> <string name="title_sign_in_your_server">Connectez-vous sur votre serveur</string>
<string name="title_log_in">S\'identifier</string> <string name="title_log_in">S\'identifier</string>
<string name="title_share_the_app">Partager l\'application</string>
<string name="title_register_username">Enregistrer le nom d\'utilisateur</string> <string name="title_register_username">Enregistrer le nom d\'utilisateur</string>
<string name="title_reset_password">Réinitialiser mot de passe</string> <string name="title_reset_password">Réinitialiser mot de passe</string>
<string name="title_sign_up">S\'inscrire</string> <string name="title_sign_up">S\'inscrire</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">l\' administration</string> <string name="title_admin_panel">l\' administration</string>
<string name="title_password">Changer le mot de passe</string> <string name="title_password">Changer le mot de passe</string>
<string name="title_update_profile">Mettre à jour le profil</string> <string name="title_update_profile">Mettre à jour le profil</string>
<string name="title_about">À propos</string>
<string name="title_create_channel">Créer salon</string> <string name="title_create_channel">Créer salon</string>
<string name="title_licence">les permis</string> <string name="title_licence">les permis</string>
<string name="title_are_you_sure">Êtes-vous sûr?</string> <string name="title_are_you_sure">Êtes-vous sûr?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Créer un nouveau serveur</string> <string name="action_create_server">Créer un nouveau serveur</string>
<string name="action_register">registre</string> <string name="action_register">registre</string>
<string name="action_confirm">Confirmer</string> <string name="action_confirm">Confirmer</string>
<string name="action_delete_account">Effacer le compte</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Préférences</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Changer le mot de passe</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Changer de langue</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Partager l\'application</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Évaluez nous</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contactez nous</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">les permis</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">Sur</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Désolé, une erreur s\'est produite. Veuillez réessayer</string> <string name="msg_generic_error">Désolé, une erreur s\'est produite. Veuillez réessayer</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">अपने सर्वर में साइन इन करें</string> <string name="title_sign_in_your_server">अपने सर्वर में साइन इन करें</string>
<string name="title_log_in">लॉग इन करें</string> <string name="title_log_in">लॉग इन करें</string>
<string name="title_share_the_app">ऐप शेयर करे</string>
<string name="title_register_username">रजिस्टर उपयोगकर्ता नाम</string> <string name="title_register_username">रजिस्टर उपयोगकर्ता नाम</string>
<string name="title_reset_password">पासवर्ड रीसेट करें</string> <string name="title_reset_password">पासवर्ड रीसेट करें</string>
<string name="title_sign_up">साइन अप करें</string> <string name="title_sign_up">साइन अप करें</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">एडमिन पैनल</string> <string name="title_admin_panel">एडमिन पैनल</string>
<string name="title_password">पासवर्ड बदलें</string> <string name="title_password">पासवर्ड बदलें</string>
<string name="title_update_profile">प्रोफ़ाइल अपडेट करें</string> <string name="title_update_profile">प्रोफ़ाइल अपडेट करें</string>
<string name="title_about">परिचय</string>
<string name="title_create_channel">चैनल बनाएं</string> <string name="title_create_channel">चैनल बनाएं</string>
<string name="title_licence">लाइसेंस</string> <string name="title_licence">लाइसेंस</string>
<string name="title_are_you_sure">क्या आपको यकीन है?</string> <string name="title_are_you_sure">क्या आपको यकीन है?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">नया सर्वर बनाएं</string> <string name="action_create_server">नया सर्वर बनाएं</string>
<string name="action_register">रजिस्टर</string> <string name="action_register">रजिस्टर</string>
<string name="action_confirm">पुष्टि करें</string> <string name="action_confirm">पुष्टि करें</string>
<string name="action_delete_account">खाता हटा दो</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">पसंद</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">पासवर्ड बदलें</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">भाषा बदलें</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">ऐप शेयर करें</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">हमें रेटिंग दें</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">हमसे संपर्क करें</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">लाइसेंस</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">के बारे में</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">क्षमा करें, एक त्रुटि हुई है, कृपया पुनः प्रयास करें</string> <string name="msg_generic_error">क्षमा करें, एक त्रुटि हुई है, कृपया पुनः प्रयास करें</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Accedi al tuo server</string> <string name="title_sign_in_your_server">Accedi al tuo server</string>
<string name="title_log_in">Accesso</string> <string name="title_log_in">Accesso</string>
<string name="title_share_the_app">Condividi la App</string>
<string name="title_register_username">Registra nome utente</string> <string name="title_register_username">Registra nome utente</string>
<string name="title_reset_password">Annullare password</string> <string name="title_reset_password">Annullare password</string>
<string name="title_sign_up">Iscrizione</string> <string name="title_sign_up">Iscrizione</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Pannello di Amministrazione</string> <string name="title_admin_panel">Pannello di Amministrazione</string>
<string name="title_password">Password</string> <string name="title_password">Password</string>
<string name="title_update_profile">Aggiorna Profilo</string> <string name="title_update_profile">Aggiorna Profilo</string>
<string name="title_about">Informazioni</string>
<string name="title_create_channel">Crea Canale</string> <string name="title_create_channel">Crea Canale</string>
<string name="title_licence">licenza</string> <string name="title_licence">licenza</string>
<string name="title_are_you_sure">Sei sicuro che vuoi uscire ?</string> <string name="title_are_you_sure">Sei sicuro che vuoi uscire ?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Crea un nuovo server</string> <string name="action_create_server">Crea un nuovo server</string>
<string name="action_register">Registra</string> <string name="action_register">Registra</string>
<string name="action_confirm">Conferma</string> <string name="action_confirm">Conferma</string>
<string name="action_delete_account">Elimina utente</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferenze</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Cambia password</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Cambia lingua</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Condividi app</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Votaci</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contattaci</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licenza</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">Di</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Mi dispiace, si è verificato un errore, per favore riprova</string> <string name="msg_generic_error">Mi dispiace, si è verificato un errore, per favore riprova</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">サーバーに接続</string> <string name="title_sign_in_your_server">サーバーに接続</string>
<string name="title_log_in">ログイン</string> <string name="title_log_in">ログイン</string>
<string name="title_share_the_app">アプリを共有する</string>
<string name="title_register_username">ユーザー名を登録する</string> <string name="title_register_username">ユーザー名を登録する</string>
<string name="title_reset_password">パスワードリセット</string> <string name="title_reset_password">パスワードリセット</string>
<string name="title_sign_up">サインアップ</string> <string name="title_sign_up">サインアップ</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">管理パネル</string> <string name="title_admin_panel">管理パネル</string>
<string name="title_password">パスワードの変更</string> <string name="title_password">パスワードの変更</string>
<string name="title_update_profile">プロフィールの更新</string> <string name="title_update_profile">プロフィールの更新</string>
<string name="title_about">About</string><!-- TODO Add translation -->
<string name="title_licence">Licence</string> <!-- TODO Add translation --> <string name="title_licence">Licence</string> <!-- TODO Add translation -->
<string name="title_create_channel">新しいチャネルを作成</string> <string name="title_create_channel">新しいチャネルを作成</string>
<string name="title_are_you_sure">本気ですか?</string> <string name="title_are_you_sure">本気ですか?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">新規サーバーを作成</string> <string name="action_create_server">新規サーバーを作成</string>
<string name="action_register">登録</string> <string name="action_register">登録</string>
<string name="action_confirm">確認</string> <string name="action_confirm">確認</string>
<string name="action_delete_account">アカウントを削除する</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferences</item> <!-- TODO Add translation --> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Change password</item> <!-- TODO Add translation --> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Change language </item><!-- TODO Add translation --> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Share app</item> <!-- TODO Add translation --> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Rate us</item> <!-- TODO Add translation --> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contact us</item> <!-- TODO Add translation --> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licence</item> <!-- TODO Add translation --> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">About</item> <!-- TODO Add translation --> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">エラーが発生しました。もう一度お試しください。</string> <string name="msg_generic_error">エラーが発生しました。もう一度お試しください。</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Faça login no seu servidor</string> <string name="title_sign_in_your_server">Faça login no seu servidor</string>
<string name="title_log_in">Entrar</string> <string name="title_log_in">Entrar</string>
<string name="title_share_the_app">Compartilhe o aplicativo</string>
<string name="title_register_username">Registre o nome de usuário</string> <string name="title_register_username">Registre o nome de usuário</string>
<string name="title_reset_password">Redefinir senha</string> <string name="title_reset_password">Redefinir senha</string>
<string name="title_sign_up">Inscreva-se</string> <string name="title_sign_up">Inscreva-se</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Painel administrativo</string> <string name="title_admin_panel">Painel administrativo</string>
<string name="title_password">Alterar senha</string> <string name="title_password">Alterar senha</string>
<string name="title_update_profile">Editar perfil</string> <string name="title_update_profile">Editar perfil</string>
<string name="title_about">Sobre</string>
<string name="title_create_channel">Criar chat</string> <string name="title_create_channel">Criar chat</string>
<string name="title_licence">Licença</string> <string name="title_licence">Licença</string>
<string name="title_are_you_sure">Você tem certeza?</string> <string name="title_are_you_sure">Você tem certeza?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Criar um novo servidor</string> <string name="action_create_server">Criar um novo servidor</string>
<string name="action_register">Registrar</string> <string name="action_register">Registrar</string>
<string name="action_confirm">Confirmar</string> <string name="action_confirm">Confirmar</string>
<string name="action_delete_account">Deletar conta</string>
<string name="action_favorite">Favoritar</string> <string name="action_favorite">Favoritar</string>
<string name="action_remove_favorite">Remover favorito</string> <string name="action_remove_favorite">Remover favorito</string>
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferências</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Alterar senha</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Alterar idioma</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Compartilhar app</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Classifique-nos</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contate-nos</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licença</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">Sobre</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Desculpe, ocorreu um erro, tente novamente</string> <string name="msg_generic_error">Desculpe, ocorreu um erro, tente novamente</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Entre no seu servidor</string> <string name="title_sign_in_your_server">Entre no seu servidor</string>
<string name="title_log_in">Entrar</string> <string name="title_log_in">Entrar</string>
<string name="title_share_the_app">Partilhe a Aplicação</string>
<string name="title_register_username">Registe um utilizador</string> <string name="title_register_username">Registe um utilizador</string>
<string name="title_reset_password">Reponha a palavra-passe</string> <string name="title_reset_password">Reponha a palavra-passe</string>
<string name="title_sign_up">Inscreva-se</string> <string name="title_sign_up">Inscreva-se</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Painel de Administração</string> <string name="title_admin_panel">Painel de Administração</string>
<string name="title_password">Alterar palavra-passe</string> <string name="title_password">Alterar palavra-passe</string>
<string name="title_update_profile">Actualizar perfil</string> <string name="title_update_profile">Actualizar perfil</string>
<string name="title_about">Acerca</string>
<string name="title_create_channel">Criar Canal</string> <string name="title_create_channel">Criar Canal</string>
<string name="title_licence">Licença</string> <string name="title_licence">Licença</string>
<string name="title_are_you_sure">Tem a certeza?</string> <string name="title_are_you_sure">Tem a certeza?</string>
...@@ -58,19 +56,19 @@ ...@@ -58,19 +56,19 @@
<string name="action_create_server">Crie um novo servidor</string> <string name="action_create_server">Crie um novo servidor</string>
<string name="action_register">Registar</string> <string name="action_register">Registar</string>
<string name="action_confirm">Confirmar</string> <string name="action_confirm">Confirmar</string>
<string name="action_delete_account">Apagar conta</string>
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferências</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Alterar palavra-passe</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Alterar idioma</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Partilhe a aplicação</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Avalie-nos</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contacte-nos</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licença</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">Acerca</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Lamentamos, ocorreu um erro, tente novamente</string> <string name="msg_generic_error">Lamentamos, ocorreu um erro, tente novamente</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Ваш сервер</string> <string name="title_sign_in_your_server">Ваш сервер</string>
<string name="title_log_in">Войти</string> <string name="title_log_in">Войти</string>
<string name="title_share_the_app">добавить приложение</string>
<string name="title_register_username">Зарегистрировать имя</string> <string name="title_register_username">Зарегистрировать имя</string>
<string name="title_reset_password">Сброс пароля</string> <string name="title_reset_password">Сброс пароля</string>
<string name="title_sign_up">Зарегистрироваться</string> <string name="title_sign_up">Зарегистрироваться</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Панель админа</string> <string name="title_admin_panel">Панель админа</string>
<string name="title_password">Изменить пароль</string> <string name="title_password">Изменить пароль</string>
<string name="title_update_profile">Обновить профиль</string> <string name="title_update_profile">Обновить профиль</string>
<string name="title_about">О программе</string>
<string name="title_create_channel">Создать новый канал</string> <string name="title_create_channel">Создать новый канал</string>
<string name="title_channel_details">О канале</string> <string name="title_channel_details">О канале</string>
<string name="title_topic">Тема</string> <string name="title_topic">Тема</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Создать новый сервер</string> <string name="action_create_server">Создать новый сервер</string>
<string name="action_register">Зарегистрировать</string> <string name="action_register">Зарегистрировать</string>
<string name="action_confirm">Подтвердить</string> <string name="action_confirm">Подтвердить</string>
<string name="action_delete_account">Удалить аккаунт</string>
<string name="action_favorite">В избранное</string> <string name="action_favorite">В избранное</string>
<string name="action_remove_favorite">Удалить из избранного</string> <string name="action_remove_favorite">Удалить из избранного</string>
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Персональные</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Изменить пароль</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Изменить язык</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Поделиться приложением</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Оцените нас</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Связаться с нами</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Лицензия</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">О программе</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Произошла ошибка, повторите попытку.</string> <string name="msg_generic_error">Произошла ошибка, повторите попытку.</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Sunucunuza Bağlantı Kurun</string> <string name="title_sign_in_your_server">Sunucunuza Bağlantı Kurun</string>
<string name="title_log_in">Giriş Yapın</string> <string name="title_log_in">Giriş Yapın</string>
<string name="title_share_the_app">uygulamayı Paylaş</string>
<string name="title_register_username">Kullanıcı Adıyla Kaydolun</string> <string name="title_register_username">Kullanıcı Adıyla Kaydolun</string>
<string name="title_reset_password">Şifre Sıfırlama</string> <string name="title_reset_password">Şifre Sıfırlama</string>
<string name="title_sign_up">Kayıt Olun</string> <string name="title_sign_up">Kayıt Olun</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Yönetici Paneli</string> <string name="title_admin_panel">Yönetici Paneli</string>
<string name="title_password">Şifrenizi Değiştirin</string> <string name="title_password">Şifrenizi Değiştirin</string>
<string name="title_update_profile">Profilinizi Düzenleyin</string> <string name="title_update_profile">Profilinizi Düzenleyin</string>
<string name="title_about">Hakkında</string>
<string name="title_create_channel">Yeni Kanal Oluştur</string> <string name="title_create_channel">Yeni Kanal Oluştur</string>
<string name="title_licence">Licence</string> <!-- TODO Add translation --> <string name="title_licence">Licence</string> <!-- TODO Add translation -->
<string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation --> <string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation -->
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Create a new server</string> <!-- TODO Add translation --> <string name="action_create_server">Create a new server</string> <!-- TODO Add translation -->
<string name="action_register">Register</string> <!-- TODO Add translation --> <string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation --> <string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferences</item> <!-- TODO Add translation --> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Change password</item> <!-- TODO Add translation --> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Change language</item> <!-- TODO Add translation --> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Share app</item> <!-- TODO Add translation --> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Rate us</item> <!-- TODO Add translation --> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contact us</item> <!-- TODO Add translation --> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licence</item> <!-- TODO Add translation --> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">About</item> <!-- TODO Add translation --> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Üzgünüz! bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.</string> <string name="msg_generic_error">Üzgünüz! bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Ваш сервер</string> <string name="title_sign_in_your_server">Ваш сервер</string>
<string name="title_log_in">Увійти</string> <string name="title_log_in">Увійти</string>
<string name="title_share_the_app">поділитися прикладом</string>
<string name="title_register_username">Зареєструвати ім\'я</string> <string name="title_register_username">Зареєструвати ім\'я</string>
<string name="title_reset_password">Відновлення паролю</string> <string name="title_reset_password">Відновлення паролю</string>
<string name="title_sign_up">Зареєструватися</string> <string name="title_sign_up">Зареєструватися</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">Панель адміністратора</string> <string name="title_admin_panel">Панель адміністратора</string>
<string name="title_password">Змінити пароль</string> <string name="title_password">Змінити пароль</string>
<string name="title_update_profile">Оновити профіль</string> <string name="title_update_profile">Оновити профіль</string>
<string name="title_about">"Про програму"</string>
<string name="title_create_channel">Створити новий канал</string> <string name="title_create_channel">Створити новий канал</string>
<string name="title_licence">Licence</string> <!-- TODO Add translation --> <string name="title_licence">Licence</string> <!-- TODO Add translation -->
<string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation --> <string name="title_are_you_sure">Are you sure?</string> <!-- TODO Add translation -->
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">Create a new server</string> <!-- TODO Add translation --> <string name="action_create_server">Create a new server</string> <!-- TODO Add translation -->
<string name="action_register">Register</string> <!-- TODO Add translation --> <string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation --> <string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">Preferences</item> <!-- TODO Add translation --> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">Change password</item> <!-- TODO Add translation --> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">Change language</item> <!-- TODO Add translation --> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">Share app</item> <!-- TODO Add translation --> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">Rate us</item> <!-- TODO Add translation --> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">Contact us</item> <!-- TODO Add translation --> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licence</item> <!-- TODO Add translation --> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">About</item> <!-- TODO Add translation --> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Сталася помилка, спробуйте ще раз.</string> <string name="msg_generic_error">Сталася помилка, спробуйте ще раз.</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">登录您的服务器</string> <string name="title_sign_in_your_server">登录您的服务器</string>
<string name="title_log_in">登录</string> <string name="title_log_in">登录</string>
<string name="title_share_the_app">分享App</string>
<string name="title_register_username">注册用户</string> <string name="title_register_username">注册用户</string>
<string name="title_reset_password">重置密码</string> <string name="title_reset_password">重置密码</string>
<string name="title_sign_up">登录</string> <string name="title_sign_up">登录</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">管理面板</string> <string name="title_admin_panel">管理面板</string>
<string name="title_password">修改密码</string> <string name="title_password">修改密码</string>
<string name="title_update_profile">更新资料</string> <string name="title_update_profile">更新资料</string>
<string name="title_about">关于</string>
<string name="title_create_channel">新建频道</string> <string name="title_create_channel">新建频道</string>
<string name="title_licence">许可证</string> <string name="title_licence">许可证</string>
<string name="title_are_you_sure">你确定?</string> <string name="title_are_you_sure">你确定?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">新建一个新服务器</string> <string name="action_create_server">新建一个新服务器</string>
<string name="action_register">注册</string> <string name="action_register">注册</string>
<string name="action_confirm">确定</string> <string name="action_confirm">确定</string>
<string name="action_delete_account">删除账户</string>
<string name="action_favorite">Favorite</string> <!-- TODO Add translation --> <string name="action_favorite">Favorite</string> <!-- TODO Add translation -->
<string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation --> <string name="action_remove_favorite">Remove favorite</string> <!-- TODO Add translation -->
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">首选项</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">修改密码</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">更改语言</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">分享app</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">给我们打分</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">联系我们</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">许可证</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">关于</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">对不起发生了错误,请重试</string> <string name="msg_generic_error">对不起发生了错误,请重试</string>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">登入您的伺服器</string> <string name="title_sign_in_your_server">登入您的伺服器</string>
<string name="title_log_in">登入</string> <string name="title_log_in">登入</string>
<string name="title_share_the_app">分享App</string>
<string name="title_register_username">註冊使用者</string> <string name="title_register_username">註冊使用者</string>
<string name="title_reset_password">重置密碼</string> <string name="title_reset_password">重置密碼</string>
<string name="title_sign_up">登入</string> <string name="title_sign_up">登入</string>
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
<string name="title_admin_panel">管理面板</string> <string name="title_admin_panel">管理面板</string>
<string name="title_password">修改密碼</string> <string name="title_password">修改密碼</string>
<string name="title_update_profile">更新資料</string> <string name="title_update_profile">更新資料</string>
<string name="title_about">關於</string>
<string name="title_create_channel">建立新頻道</string> <string name="title_create_channel">建立新頻道</string>
<string name="title_licence">許可</string> <string name="title_licence">許可</string>
<string name="title_are_you_sure">確定嗎?</string> <string name="title_are_you_sure">確定嗎?</string>
...@@ -58,21 +56,21 @@ ...@@ -58,21 +56,21 @@
<string name="action_create_server">建立一個新的伺服器</string> <string name="action_create_server">建立一個新的伺服器</string>
<string name="action_register">註冊</string> <string name="action_register">註冊</string>
<string name="action_confirm">確定</string> <string name="action_confirm">確定</string>
<string name="action_delete_account">刪除帳戶</string>
<string name="action_favorite">加入蒐藏</string> <string name="action_favorite">加入蒐藏</string>
<string name="action_remove_favorite">從蒐藏中移除</string> <string name="action_remove_favorite">從蒐藏中移除</string>
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string> <!-- TODO Translate -->
<item name="item_preferences">首选项</item> <string name="msg_language">Language</string> <!-- TODO Translate -->
<item name="item_password">修改密碼</item> <string name="msg_review_this_app">Review this app</string> <!-- TODO Translate -->
<item name="change_language">更換語言</item> <string name="msg_share_this_app">Share this app</string> <!-- TODO Translate -->
<item name="item_share_app">分享這個App</item> <string name="msg_administration">Administration</string> <!-- TODO Translate -->
<item name="item_rate_us">給我們一個評價</item> <string name="msg_licence">Licence</string> <!-- TODO Translate -->
<item name="item_contact_us">聯絡我們</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">許可證</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">關於</item> <string name="msg_send_analytics">Send analytics</string> <!-- TODO Translate -->
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string> <!-- TODO Translate -->
<string name="msg_delete_account">Delete account</string> <!-- TODO Translate -->
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">發生了錯誤,請稍後試試</string> <string name="msg_generic_error">發生了錯誤,請稍後試試</string>
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="menu_section_one" type="id"/>
<item name="menu_section_two" type="id"/>
<item name="menu_section_three" type="id"/>
<item name="menu_action_chats" type="id"/>
<item name="menu_action_create_channel" type="id"/>
<item name="menu_action_profile" type="id"/>
<item name="menu_action_settings" type="id"/>
<item name="menu_action_admin_panel" type="id"/>
<item name="menu_action_logout" type="id"/>
</resources>
\ No newline at end of file
...@@ -15,7 +15,6 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin ...@@ -15,7 +15,6 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<!-- Titles --> <!-- Titles -->
<string name="title_sign_in_your_server">Sign in to your server</string> <string name="title_sign_in_your_server">Sign in to your server</string>
<string name="title_log_in">Login</string> <string name="title_log_in">Login</string>
<string name="title_share_the_app">Share App</string>
<string name="title_register_username">Register username</string> <string name="title_register_username">Register username</string>
<string name="title_reset_password">Reset password</string> <string name="title_reset_password">Reset password</string>
<string name="title_sign_up">Sign up</string> <string name="title_sign_up">Sign up</string>
...@@ -32,7 +31,6 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin ...@@ -32,7 +31,6 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string name="title_admin_panel">Admin panel</string> <string name="title_admin_panel">Admin panel</string>
<string name="title_password">Change Password</string> <string name="title_password">Change Password</string>
<string name="title_update_profile">Update profile</string> <string name="title_update_profile">Update profile</string>
<string name="title_about">About</string>
<string name="title_create_channel">Create Channel</string> <string name="title_create_channel">Create Channel</string>
<string name="title_licence">Licence</string> <string name="title_licence">Licence</string>
<string name="title_are_you_sure">Are you sure?</string> <string name="title_are_you_sure">Are you sure?</string>
...@@ -70,21 +68,21 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin ...@@ -70,21 +68,21 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string name="action_create_server">Create a new server</string> <string name="action_create_server">Create a new server</string>
<string name="action_register">Register</string> <string name="action_register">Register</string>
<string name="action_confirm">Confirm</string> <string name="action_confirm">Confirm</string>
<string name="action_delete_account">Delete account</string>
<string name="action_favorite">Favorite</string> <string name="action_favorite">Favorite</string>
<string name="action_remove_favorite">Remove favorite</string> <string name="action_remove_favorite">Remove favorite</string>
<!-- Settings List --> <!-- Settings messages-->
<string-array name="settings_actions"> <string name="msg_contact_us">Contact us</string>
<item name="item_preferences">Preferences</item> <string name="msg_language">Language</string>
<item name="item_password">Change password</item> <string name="msg_review_this_app">Review this app</string>
<item name="change_language">Change language</item> <string name="msg_share_this_app">Share this app</string>
<item name="item_share_app">Share app</item> <string name="msg_administration">Administration</string>
<item name="item_rate_us">Rate us</item> <string name="msg_licence">Licence</string>
<item name="item_contact_us">Contact us</item> <string name="msg_app_version">Version: %1$s (%2$d)</string> <!-- TODO Translate -->
<item name="item_licence">Licence</item> <string name="msg_server_version">Server version: %1$s</string> <!-- TODO Translate -->
<item name="item_about">About</item> <string name="msg_send_analytics">Send analytics</string>
</string-array> <string name="msg_logout_from_rocket_chat">Logout from Rocket.Chat</string>
<string name="msg_delete_account">Delete account</string>
<!-- Regular information messages --> <!-- Regular information messages -->
<string name="msg_generic_error">Sorry, an error has occurred, please try again</string> <string name="msg_generic_error">Sorry, an error has occurred, please try again</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment