diff --git a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt
index b05258c45..c55949eec 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt
+++ b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt
@@ -32,6 +32,7 @@ import android.net.Uri
import android.os.RemoteException
import android.provider.ContactsContract
import android.util.Log
+import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.core.os.ConfigurationCompat
import androidx.work.Data
@@ -143,9 +144,22 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
}
override fun onNext(foundContacts: ContactsByNumberOverall) {
- val contactsWithAssociatedPhoneNumbers = foundContacts.ocs!!.map
- deleteLinkedAccounts(contactsWithAssociatedPhoneNumbers)
- createLinkedAccounts(contactsWithAssociatedPhoneNumbers)
+ when (foundContacts.ocs?.meta?.statusCode) {
+ HTTP_CODE_TOO_MANY_REQUESTS -> {
+ Toast.makeText(
+ context,
+ context.resources.getString(
+ R.string.nc_settings_phone_book_integration_phone_number_dialog_429
+ ),
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ else -> {
+ val contactsWithAssociatedPhoneNumbers = foundContacts.ocs!!.map
+ deleteLinkedAccounts(contactsWithAssociatedPhoneNumbers)
+ createLinkedAccounts(contactsWithAssociatedPhoneNumbers)
+ }
+ }
}
override fun onError(e: Throwable) {
@@ -449,6 +463,7 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
const val REQUEST_PERMISSION = 231
const val KEY_FORCE = "KEY_FORCE"
const val DELETE_ALL = "DELETE_ALL"
+ private const val HTTP_CODE_TOO_MANY_REQUESTS: Int = 429
fun run(context: Context) {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_CONTACTS) ==
diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
index acf24792b..f6cff3197 100644
--- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
@@ -1079,21 +1079,23 @@ class SettingsActivity : BaseActivity() {
}
override fun onNext(genericOverall: GenericOverall) {
- val statusCode = genericOverall.ocs?.meta?.statusCode
- if (statusCode == HTTP_CODE) {
- dialog.dismiss()
- Snackbar.make(
- binding.root,
- context.resources.getString(
- R.string.nc_settings_phone_book_integration_phone_number_dialog_success
- ),
- Snackbar.LENGTH_LONG
- ).show()
- } else {
- textInputLayout.helperText = context.resources.getString(
- R.string.nc_settings_phone_book_integration_phone_number_dialog_invalid
- )
- Log.d(TAG, "failed to set phoneNumber. statusCode=$statusCode")
+ when (val statusCode = genericOverall.ocs?.meta?.statusCode) {
+ HTTP_CODE_OK -> {
+ dialog.dismiss()
+ Snackbar.make(
+ binding.root,
+ context.resources.getString(
+ R.string.nc_settings_phone_book_integration_phone_number_dialog_success
+ ),
+ Snackbar.LENGTH_LONG
+ ).show()
+ }
+ else -> {
+ textInputLayout.helperText = context.resources.getString(
+ R.string.nc_settings_phone_book_integration_phone_number_dialog_invalid
+ )
+ Log.d(TAG, "failed to set phoneNumber. statusCode=$statusCode")
+ }
}
}
@@ -1181,7 +1183,7 @@ class SettingsActivity : BaseActivity() {
private const val START_DELAY: Long = 5000
private const val DISABLED_ALPHA: Float = 0.38f
private const val ENABLED_ALPHA: Float = 1.0f
- private const val HTTP_CODE: Int = 200
+ private const val HTTP_CODE_OK: Int = 200
private const val PHONE_NUMBER_SIDE_PADDING: Int = 50
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dca3644d0..50dc06158 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -706,5 +706,6 @@ How to translate with transifex:
Custom
Set
Calendar
+ Error 429 Too Many Requests