diff --git a/app/src/main/java/chat/rocket/android/settings/presentation/SettingsPresenter.kt b/app/src/main/java/chat/rocket/android/settings/presentation/SettingsPresenter.kt
index 0e238f9810..908ddaa260 100644
--- a/app/src/main/java/chat/rocket/android/settings/presentation/SettingsPresenter.kt
+++ b/app/src/main/java/chat/rocket/android/settings/presentation/SettingsPresenter.kt
@@ -5,7 +5,6 @@ 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.GetCurrentLanguageInteractor
import chat.rocket.android.server.domain.GetCurrentServerInteractor
import chat.rocket.android.server.domain.PermissionsInteractor
import chat.rocket.android.server.domain.RemoveAccountInteractor
@@ -19,10 +18,13 @@ 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.extensions.isNotNullNorBlank
import chat.rocket.android.util.retryIO
import chat.rocket.common.util.ifNull
+import chat.rocket.core.RocketChatClient
import chat.rocket.core.internal.rest.deleteOwnAccount
import chat.rocket.core.internal.rest.me
+import chat.rocket.core.internal.rest.requestDataDownload
import chat.rocket.core.internal.rest.serverInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -40,7 +42,7 @@ class SettingsPresenter @Inject constructor(
private val tokenRepository: TokenRepository,
private val permissions: PermissionsInteractor,
private val rocketChatClientFactory: RocketChatClientFactory,
- getCurrentServerInteractor: GetCurrentServerInteractor,
+ serverInteractor: GetCurrentServerInteractor,
removeAccountInteractor: RemoveAccountInteractor,
databaseManagerFactory: DatabaseManagerFactory,
connectionManagerFactory: ConnectionManagerFactory,
@@ -48,7 +50,7 @@ class SettingsPresenter @Inject constructor(
) : CheckServerPresenter(
strategy = strategy,
factory = rocketChatClientFactory,
- serverInteractor = getCurrentServerInteractor,
+ serverInteractor = serverInteractor,
removeAccountInteractor = removeAccountInteractor,
tokenRepository = tokenRepository,
dbManagerFactory = databaseManagerFactory,
@@ -56,6 +58,8 @@ class SettingsPresenter @Inject constructor(
tokenView = view,
navigator = navigator
) {
+ private val serverUrl = serverInteractor.get()!!
+ private val client: RocketChatClient = rocketChatClientFactory.get(serverUrl)
private val token = tokenRepository.get(currentServer)
fun setupView() {
@@ -91,6 +95,28 @@ class SettingsPresenter @Inject constructor(
}
}
+ fun requestDataDownload() {
+ launchUI(strategy) {
+ try {
+ userHelper.user()?.let { user ->
+ val response = retryIO { client.requestDataDownload(user.id) }
+ if (response.requested) {
+ view.showMessage("Data download request placed successfully")
+ } else if (response.exportOperation.status.isNotNullNorBlank()) {
+ view.showMessage("Data download request already placed and has status: ${ response.exportOperation.status }")
+ }
+ }
+ } catch (exception: Exception) {
+ Timber.d(exception, "Error placing request for data download")
+ exception.message?.let {
+ view.showMessage("Error placing request for data download: $it")
+ }.ifNull {
+ view.showGenericErrorMessage()
+ }
+ }
+ }
+ }
+
fun enableAnalyticsTracking(isEnabled: Boolean) {
analyticsTrackingInteractor.save(isEnabled)
diff --git a/app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt b/app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
index b6f1d0245a..fb3715bf2a 100644
--- a/app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
+++ b/app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
@@ -77,6 +77,8 @@ class SettingsFragment : Fragment(), SettingsView, AppLanguageView {
text_language.setOnClickListener { changeLanguage() }
+ text_download_my_data.setOnClickListener { presenter.requestDataDownload() }
+
text_review_this_app.setOnClickListener { showAppOnStore() }
text_share_this_app.setOnClickListener { shareApp() }
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 6572366bf9..ebdc110fc2 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -111,6 +111,25 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_contact_us" />
+
+
+ app:layout_constraintTop_toBottomOf="@+id/text_download_my_data" />
اتصل بنا
تغيير اللغة
+ تحميل البيانات الخاصة بي
قيم هذا التطبيق
شارك هذا التطبيق
الادارة
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 7dd535945f..38cabf7ae2 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -63,6 +63,7 @@
Kontaktiere uns
Sprache
+ Laden Sie meine Daten herunter
Bewerte diese App
Teile diese App
Administration
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 97e711ae6b..83abd7706e 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Descargar mis datos
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 88f1eae94d..833b822b28 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ اطلاعات من را دانلود کنید
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 0dc2f2f38f..5ac5e3382e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Télécharger mes données
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index c16b3af7f6..115c2dd2d0 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ मेरा डेटा डाउनलोड करें
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index c532c8737b..59c3097cb2 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Scarica i miei dati
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index df563d2cbf..c585da9d75 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ マイデータをダウンロードする
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 2e97123af0..c7a6bd009c 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Baixar meus dados
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 454e5de1b4..5fa773c6e2 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Baixar meus dados
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index 5288c2c8d7..4eeff8a74f 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -63,6 +63,7 @@
Связаться с нами
Изменить язык
+ Скачать мои данные
Оставить отзыв
Поделиться приложением
Панель админа
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index b7f6240a8b..539abdd7d0 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Verilerimi İndir
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 3f0d186638..e50869431d 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ Завантажити мої дані
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index d0865345f9..364e6219a7 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ 下载我的数据
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 0a2da00640..082f11d053 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -63,6 +63,7 @@
Contact us
Language
+ 下载我的数据
Review this app
Share this app
Administration
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e18aaa0cd6..5bb204e609 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -75,6 +75,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
Contact us
Language
+ Download My Data
Review this app
Share this app
Administration