Adds permission info dialog when permissions denied for contacts and download attachment
Introduces a dialog informing about the need to grant permissions when contacts permission for the contacts screen or storage permission for downloading an attachment has been denied. MAILAND-2203
This commit is contained in:
parent
11d203248f
commit
96813c6cf1
|
@ -143,7 +143,7 @@ public class AddAttachmentsActivity extends BaseStoragePermissionActivity implem
|
|||
openCamera = false;
|
||||
openGallery = false;
|
||||
DialogUtils.Companion.showInfoDialog(AddAttachmentsActivity.this, getString(R.string.need_permissions_title),
|
||||
getString(R.string.need_storage_permissions_text), unit -> unit);
|
||||
getString(R.string.need_storage_permissions_add_attachment_text), unit -> unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -59,14 +59,14 @@ public abstract class BaseContactsActivity extends BaseConnectivityActivity impl
|
|||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
contactsPermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.CONTACTS, this, this, true);
|
||||
storagePermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.STORAGE, this, this, false);
|
||||
contactsPermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.CONTACTS, this, this);
|
||||
storagePermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.STORAGE, this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||
contactsPermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
storagePermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
contactsPermissionHelper.onRequestPermissionsResult(requestCode, grantResults);
|
||||
storagePermissionHelper.onRequestPermissionsResult(requestCode, grantResults);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public abstract class BaseStoragePermissionActivity extends BaseConnectivityActi
|
|||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
storagePermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.STORAGE, this, this, false);
|
||||
storagePermissionHelper = PermissionHelper.newInstance(Constants.PermissionType.STORAGE, this, this);
|
||||
mHasStoragePermission = null;
|
||||
checkPin = true;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ public abstract class BaseStoragePermissionActivity extends BaseConnectivityActi
|
|||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
storagePermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
storagePermissionHelper.onRequestPermissionsResult(requestCode, grantResults);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -167,6 +167,7 @@ internal class MessageDetailsViewModel @Inject constructor(
|
|||
private val _messageRenderedWithImages: MutableLiveData<Message> = MutableLiveData()
|
||||
private val _checkStoragePermission: MutableLiveData<Event<Boolean>> = MutableLiveData()
|
||||
private val _messageDetailsError: MutableLiveData<Event<String>> = MutableLiveData()
|
||||
private val _showPermissionMissingDialog: MutableLiveData<Unit> = MutableLiveData()
|
||||
private val _conversationUiFLow = MutableSharedFlow<ConversationUiModel>(replay = 1)
|
||||
|
||||
val conversationUiModel: SharedFlow<ConversationUiModel>
|
||||
|
@ -215,6 +216,9 @@ internal class MessageDetailsViewModel @Inject constructor(
|
|||
val messageDetailsError: LiveData<Event<String>>
|
||||
get() = _messageDetailsError
|
||||
|
||||
val showPermissionMissingDialog: LiveData<Unit>
|
||||
get() = _showPermissionMissingDialog
|
||||
|
||||
val prepareEditMessageIntent: LiveData<Event<IntentExtrasData>>
|
||||
get() = _prepareEditMessageIntentResult
|
||||
|
||||
|
@ -723,4 +727,7 @@ internal class MessageDetailsViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun storagePermissionDenied() {
|
||||
_showPermissionMissingDialog.value = Unit
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,8 +89,7 @@ class ContactsActivity :
|
|||
PermissionHelper.newInstance(
|
||||
Constants.PermissionType.CONTACTS,
|
||||
this,
|
||||
ContactsPermissionHelperCallbacks(),
|
||||
true
|
||||
ContactsPermissionHelperCallbacks()
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -165,7 +164,7 @@ class ContactsActivity :
|
|||
permissions: Array<String>,
|
||||
grantResults: IntArray
|
||||
) {
|
||||
contactsPermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
contactsPermissionHelper.onRequestPermissionsResult(requestCode, grantResults)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
|
|
@ -234,6 +234,8 @@ class ContactsListFragment : BaseFragment(), IContactsFragment {
|
|||
)
|
||||
listener.doStartActivityForResult(intent, REQUEST_CODE_CONVERT_CONTACT)
|
||||
}
|
||||
|
||||
observePermissionMissingDialogTrigger()
|
||||
}
|
||||
|
||||
private fun resetSelections() {
|
||||
|
@ -434,6 +436,17 @@ class ContactsListFragment : BaseFragment(), IContactsFragment {
|
|||
|
||||
private fun getSelectedItems() = contactsAdapter.currentList.filter { it.isSelected }
|
||||
|
||||
private fun observePermissionMissingDialogTrigger() {
|
||||
viewModel.showPermissionMissingDialog.observe(viewLifecycleOwner) {
|
||||
DialogUtils.showInfoDialog(
|
||||
context = requireContext(),
|
||||
title = requireContext().getString(R.string.need_permissions_title),
|
||||
message = requireContext().getString(R.string.need_contacts_permissions_text),
|
||||
okListener = { }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance(hasPermission: Boolean): ContactsListFragment {
|
||||
|
|
|
@ -32,6 +32,7 @@ import ch.protonmail.android.contacts.list.search.ISearchListenerViewModel
|
|||
import ch.protonmail.android.contacts.repositories.andorid.baseInfo.AndroidContactsRepository
|
||||
import ch.protonmail.android.contacts.repositories.andorid.details.AndroidContactDetailsRepository
|
||||
import ch.protonmail.android.data.local.ContactDao
|
||||
import ch.protonmail.android.utils.Event
|
||||
import ch.protonmail.android.worker.DeleteContactWorker
|
||||
import ch.protonmail.libs.core.utils.ViewModelFactory
|
||||
import kotlinx.coroutines.flow.catch
|
||||
|
@ -53,6 +54,9 @@ class ContactsListViewModel(
|
|||
|
||||
private val progressMax = MutableLiveData<Int?>()
|
||||
private val progress = MutableLiveData<Int?>()
|
||||
private val showPermissionMissingDialogMutableLiveData = MutableLiveData<Event<Unit>>()
|
||||
val showPermissionMissingDialog: LiveData<Event<Unit>>
|
||||
get() = showPermissionMissingDialogMutableLiveData
|
||||
|
||||
private val searchPhraseLiveData = MutableLiveData<String?>()
|
||||
override val androidContacts = androidContactsRepository.androidContacts
|
||||
|
@ -102,6 +106,9 @@ class ContactsListViewModel(
|
|||
override fun setHasContactsPermission(hasPermission: Boolean) {
|
||||
this.hasPermission = hasPermission
|
||||
androidContactsRepository.setContactsPermission(hasPermission)
|
||||
if (!hasPermission) {
|
||||
showPermissionMissingDialogMutableLiveData.value = Event(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setSearchPhrase(searchPhrase: String?) {
|
||||
|
|
|
@ -66,6 +66,7 @@ import ch.protonmail.android.utils.Event
|
|||
import ch.protonmail.android.utils.MessageUtils
|
||||
import ch.protonmail.android.utils.UiUtil
|
||||
import ch.protonmail.android.utils.extensions.showToast
|
||||
import ch.protonmail.android.utils.ui.dialogs.DialogUtils
|
||||
import ch.protonmail.android.utils.ui.dialogs.DialogUtils.Companion.showTwoButtonInfoDialog
|
||||
import ch.protonmail.android.views.messageDetails.BottomActionsView
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
|
@ -192,6 +193,7 @@ internal class MessageDetailsActivity : BaseStoragePermissionActivity() {
|
|||
viewModel.messageDetailsError.observe(this, MessageDetailsErrorObserver())
|
||||
listenForConnectivityEvent()
|
||||
observeEditMessageEvents()
|
||||
observePermissionMissingDialogTrigger()
|
||||
}
|
||||
|
||||
private fun initAdapters() {
|
||||
|
@ -297,6 +299,11 @@ internal class MessageDetailsActivity : BaseStoragePermissionActivity() {
|
|||
return true
|
||||
}
|
||||
|
||||
override fun onPermissionDenied(type: Constants.PermissionType) {
|
||||
super.onPermissionDenied(type)
|
||||
viewModel.storagePermissionDenied()
|
||||
}
|
||||
|
||||
fun showReportPhishingDialog(messageId: String) {
|
||||
val message = viewModel.decryptedConversationUiModel.value?.messages?.find { it.messageId == messageId }
|
||||
AlertDialog.Builder(this)
|
||||
|
@ -777,6 +784,17 @@ internal class MessageDetailsActivity : BaseStoragePermissionActivity() {
|
|||
)
|
||||
}
|
||||
|
||||
private fun observePermissionMissingDialogTrigger() {
|
||||
viewModel.showPermissionMissingDialog.observe(this) {
|
||||
DialogUtils.showInfoDialog(
|
||||
context = this,
|
||||
title = getString(R.string.need_permissions_title),
|
||||
message = getString(R.string.need_storage_permissions_download_attachment_text),
|
||||
okListener = { }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getCurrentSubject() = expandedToolbarTitleTextView.text ?: getString(R.string.empty_subject)
|
||||
|
||||
private fun getMessagesFrom(messageOriginator: String?): String =
|
||||
|
|
|
@ -23,6 +23,7 @@ import android.app.Activity;
|
|||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
|
@ -32,12 +33,12 @@ public class PermissionHelper {
|
|||
private static final int REQUEST_CODE_READ_CONTACTS = 1001;
|
||||
private static final int REQUEST_CODE_ACCESS_STORAGE = 1011;
|
||||
|
||||
private PermissionCallback mPermissionCallback;
|
||||
private Constants.PermissionType _permissionType;
|
||||
private final PermissionCallback mPermissionCallback;
|
||||
private final Constants.PermissionType _permissionType;
|
||||
private String mManifestPermission;
|
||||
private String mPermissionRequestedPref;
|
||||
private int mRequestCode;
|
||||
private Activity mActivity;
|
||||
private final Activity mActivity;
|
||||
|
||||
private PermissionHelper(Constants.PermissionType type, Activity activity, PermissionCallback callback) {
|
||||
_permissionType = type;
|
||||
|
@ -54,7 +55,7 @@ public class PermissionHelper {
|
|||
this.mPermissionCallback = callback;
|
||||
}
|
||||
|
||||
public static PermissionHelper newInstance(Constants.PermissionType type, Activity activity, PermissionCallback callback, boolean useSnack) {
|
||||
public static PermissionHelper newInstance(Constants.PermissionType type, Activity activity, PermissionCallback callback) {
|
||||
return new PermissionHelper(type, activity, callback);
|
||||
}
|
||||
|
||||
|
@ -91,7 +92,7 @@ public class PermissionHelper {
|
|||
ActivityCompat.requestPermissions(mActivity, new String[]{mManifestPermission}, mRequestCode);
|
||||
}
|
||||
|
||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull int[] grantResults) {
|
||||
if (requestCode == mRequestCode) {
|
||||
boolean hasSth = grantResults.length > 0;
|
||||
if (hasSth) {
|
||||
|
@ -104,12 +105,6 @@ public class PermissionHelper {
|
|||
if (this.mPermissionCallback != null) {
|
||||
this.mPermissionCallback.onPermissionDenied(_permissionType);
|
||||
}
|
||||
boolean should = ActivityCompat.shouldShowRequestPermissionRationale(mActivity, mManifestPermission);
|
||||
|
||||
// not needed as per product decision
|
||||
// if (!should) {
|
||||
// promptSettings();
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Considereu alliberar o adquirir més espai abans que us en quedeu sense.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permisos</string>
|
||||
<string name="need_storage_permissions_text">Per tal d\'afegir els fitxers adjunts necessiteu permetre
|
||||
<string name="need_storage_permissions_add_attachment_text">Per tal d\'afegir els fitxers adjunts necessiteu permetre
|
||||
l\'accés a l\'emmagatzemament.</string>
|
||||
<string name="push_notifications_alert_title">Alerta de notificacions push</string>
|
||||
<string name="push_notifications_alert_subtitle">Les notificacions push per ProtonMail no funcionen sense els serveis de Google Play.</string>
|
||||
|
|
|
@ -762,7 +762,7 @@
|
|||
Zvažte uvolnění nějakého místa nebo přikoupení vetší kapacity schránky.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Oprávnění</string>
|
||||
<string name="need_storage_permissions_text">Pro přidávání příloh musíte povolit přístup
|
||||
<string name="need_storage_permissions_add_attachment_text">Pro přidávání příloh musíte povolit přístup
|
||||
k úložišti.</string>
|
||||
<string name="push_notifications_alert_title">Oznámení Push notifikací</string>
|
||||
<string name="push_notifications_alert_subtitle">Push notifikace pro ProtonMail nefungují bez aktuální verze služeb Google Play.</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Overvej at frigive eller tilkøbe yderligere lagerplads, inden den er opbrugt.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Tilladelser</string>
|
||||
<string name="need_storage_permissions_text">For at tilføje vedhæftninger, skal du tillade
|
||||
<string name="need_storage_permissions_add_attachment_text">For at tilføje vedhæftninger, skal du tillade
|
||||
lagerpladsadgang.</string>
|
||||
<string name="push_notifications_alert_title">Push-notifikationsadvarsel</string>
|
||||
<string name="push_notifications_alert_subtitle">Push-notifikationer i ProtonMail fungerer ikke uden opdaterede Google Play-tjenester.</string>
|
||||
|
|
|
@ -729,7 +729,7 @@ zu: <br/><br/><u>%s</u><br/><br/> Möchten S
|
|||
<string name="storage_limit_approaching_text">Sie haben 90% Ihrer Speicherplatzgröße erreicht. Erwägen Sie, etwas Platz freizugeben oder mehr Speicherplatz zu kaufen, bevor Ihnen der Speicherplatz ausgeht.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Berechtigungen</string>
|
||||
<string name="need_storage_permissions_text">Um Anhänge hinzufügen zu können, müssen Sie den Zugriff auf den Datenträger erlauben.</string>
|
||||
<string name="need_storage_permissions_add_attachment_text">Um Anhänge hinzufügen zu können, müssen Sie den Zugriff auf den Datenträger erlauben.</string>
|
||||
<string name="push_notifications_alert_title">Push-Benachrichtigungen</string>
|
||||
<string name="push_notifications_alert_subtitle">Push-Benachrichtigungen für ProtonMail funktionieren nicht ohne aktualisierte Google Play-Dienste.</string>
|
||||
<string name="app_locked">App gesperrt</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Εξετάστε το ενδεχόμενο να ελευθερώσετε χώρο ή να αγοράσετε περισσότερο αποθηκευτικό χώρο πριν εξαντληθεί ο εναπομείναντας χώρος.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Δικαιώματα</string>
|
||||
<string name="need_storage_permissions_text">Για να προσθέσετε συνημμένα θα πρέπει να επιτρέψετε
|
||||
<string name="need_storage_permissions_add_attachment_text">Για να προσθέσετε συνημμένα θα πρέπει να επιτρέψετε
|
||||
πρόσβαση στην αποθήκευση.</string>
|
||||
<string name="push_notifications_alert_title">Ειδοποιήσεις Push</string>
|
||||
<string name="push_notifications_alert_subtitle">Οι ειδοποιήσεις Push για το ProtonMail δεν λειτουργούν χωρίς ενημερωμένες υπηρεσίες του Google Play.</string>
|
||||
|
|
|
@ -737,7 +737,7 @@ compre más
|
|||
Considere liberar algo de espacio o compre más antes de quedarse sin espacio.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permisos</string>
|
||||
<string name="need_storage_permissions_text">Para añadir archivos adjuntos necesita permitir
|
||||
<string name="need_storage_permissions_add_attachment_text">Para añadir archivos adjuntos necesita permitir
|
||||
el acceso al almacenamiento.</string>
|
||||
<string name="push_notifications_alert_title">Alerta de notificaciones push</string>
|
||||
<string name="push_notifications_alert_subtitle">Las notificaciones push para ProtonMail no funcionan sin los servicios de Google Play actualizados.</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Pensez à libérer de l’espace ou à acheter plus de stockage avant de manquer de capacité.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Autorisations</string>
|
||||
<string name="need_storage_permissions_text">Pour ajouter des pièces jointes, vous devez autoriser
|
||||
<string name="need_storage_permissions_add_attachment_text">Pour ajouter des pièces jointes, vous devez autoriser
|
||||
l\'accès au stockage.</string>
|
||||
<string name="push_notifications_alert_title">Alerte de notifications push</string>
|
||||
<string name="push_notifications_alert_subtitle">Les notifications push pour ProtonMail ne fonctionnent pas sans la mise à jour des services Google Play.</string>
|
||||
|
|
|
@ -749,7 +749,7 @@
|
|||
Razmislite o oslobađanju prostora ili kupnji više prostora za pohranu prije nego što vam ponestane kapaciteta.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Dozvole</string>
|
||||
<string name="need_storage_permissions_text">Da biste dodali privitke, trebate dopustiti
|
||||
<string name="need_storage_permissions_add_attachment_text">Da biste dodali privitke, trebate dopustiti
|
||||
pristup pohrani.</string>
|
||||
<string name="push_notifications_alert_title">Upozorenja Push obavijesti</string>
|
||||
<string name="push_notifications_alert_subtitle">Push obavijesti za ProtonMail ne rade bez ažuriranih Google Play usluga.</string>
|
||||
|
|
|
@ -737,7 +737,7 @@ Svájci székhellyel</string>
|
|||
Fontolja meg, hogy helyet szabadít fel vagy további tárhelyet vásárol, mielőtt kifutna a szabad helyből.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Engedélyek</string>
|
||||
<string name="need_storage_permissions_text">Melléklet hozzáadáshoz engedélyeznie kell
|
||||
<string name="need_storage_permissions_add_attachment_text">Melléklet hozzáadáshoz engedélyeznie kell
|
||||
a tárhely elérését.</string>
|
||||
<string name="push_notifications_alert_title">Push értesítés riasztás</string>
|
||||
<string name="push_notifications_alert_subtitle">A ProtonMail push értesítések nem működnek a legújabb Google Play szolgáltatások nélkül.</string>
|
||||
|
|
|
@ -726,7 +726,7 @@ ke:<br/><br/><u>%s</u><br/><br/>Apakah Anda
|
|||
Silakan pertimbangkan untuk membebaskan ruang atau membayar penyimpanan lebih sebelum kapasitas penyimpanan Anda habis.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Izin</string>
|
||||
<string name="need_storage_permissions_text">Untuk menambahkan lampiran Anda harus mengizinkan
|
||||
<string name="need_storage_permissions_add_attachment_text">Untuk menambahkan lampiran Anda harus mengizinkan
|
||||
akses menuju penyimpanan.</string>
|
||||
<string name="push_notifications_alert_title">Notifikasi Pemberitahuan Push</string>
|
||||
<string name="push_notifications_alert_subtitle">Pemberitahuan Push untuk ProtonMail tidak dapat berfungsi tanpa memperbarui layanan Google Play.</string>
|
||||
|
|
|
@ -735,7 +735,7 @@
|
|||
Íhugaðu að losa eitthvað pláss eða að kaupa meiri geymslurýmd áður en hún klárast.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Aðgangsheimildir</string>
|
||||
<string name="need_storage_permissions_text">Til að geta bætt við viðhengjum þarftu að leyfa aðgang að gagnageymslu.</string>
|
||||
<string name="need_storage_permissions_add_attachment_text">Til að geta bætt við viðhengjum þarftu að leyfa aðgang að gagnageymslu.</string>
|
||||
<string name="push_notifications_alert_title">Viðvörun vegna ýti-tilkynninga</string>
|
||||
<string name="push_notifications_alert_subtitle">Ýti-tilkynningar virka ekki nema með uppfærðum séreignahugbúnaði Google Play þjónustu.</string>
|
||||
<string name="app_locked">Forrit læst</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Prova a liberare dello spazio o acquista più spazio di archiviazione prima di esaurirlo tutto.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permessi</string>
|
||||
<string name="need_storage_permissions_text">Per aggiungere allegati devi consentire
|
||||
<string name="need_storage_permissions_add_attachment_text">Per aggiungere allegati devi consentire
|
||||
l\'accesso all\'archiviazione.</string>
|
||||
<string name="push_notifications_alert_title">Avviso notifiche push</string>
|
||||
<string name="push_notifications_alert_subtitle">Le notifiche push per ProtonMail non funzionano senza aggiornamenti di Google Play services.</string>
|
||||
|
|
|
@ -717,7 +717,7 @@
|
|||
<string name="storage_limit_approaching_text">ストレージ容量の90%に達しました。容量を空けるか、ストレージの追加購入を検討してください。</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">アクセス許可</string>
|
||||
<string name="need_storage_permissions_text">添付ファイルを追加するためには、ストレージへのアクセスを許可する必要があります。</string>
|
||||
<string name="need_storage_permissions_add_attachment_text">添付ファイルを追加するためには、ストレージへのアクセスを許可する必要があります。</string>
|
||||
<string name="push_notifications_alert_title">プッシュ通知警告</string>
|
||||
<string name="push_notifications_alert_subtitle">ProtonMailのプッシュ通知は、Google Playサービスを更新しないと機能しません。</string>
|
||||
<string name="app_locked">アプリはロックされています。</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Xemmem ad tserrḥeḍ i kra n tallunt neɣ ad txellṣeḍ ugar n uḥraz send ad txaṣeḍ akettur.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Isurag</string>
|
||||
<string name="need_storage_permissions_text">Akken ad ternuḍ ifuyla yeddan, ilaq ad tessirgeḍ
|
||||
<string name="need_storage_permissions_add_attachment_text">Akken ad ternuḍ ifuyla yeddan, ilaq ad tessirgeḍ
|
||||
akeccum ar tkatut n uḥraz.</string>
|
||||
<string name="push_notifications_alert_title">Ilɣa Push</string>
|
||||
<string name="push_notifications_alert_subtitle">Ilɣa Push i ProtonMail ur teddun ara wer alqem n imeẓla Google Play.</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Overweeg om wat ruimte vrij te maken of schaf extra opslagruimte aan voordat u ruimte tekortkomt.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Rechten</string>
|
||||
<string name="need_storage_permissions_text">Om bijlagen toe te voegen moet u
|
||||
<string name="need_storage_permissions_add_attachment_text">Om bijlagen toe te voegen moet u
|
||||
toegang tot opslag toestaan.</string>
|
||||
<string name="push_notifications_alert_title">Pushmelding</string>
|
||||
<string name="push_notifications_alert_subtitle">Pushmeldingen voor ProtonMail werken niet zonder bijgewerkte Google Play-diensten.</string>
|
||||
|
|
|
@ -760,7 +760,7 @@
|
|||
Rozważ zwolnienie części miejsca lub zakup dodatkowej przestrzeni dyskowej, zanim skończy Ci się miejsce.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Uprawnienia</string>
|
||||
<string name="need_storage_permissions_text">Aby dodać załączniki, musisz zezwolić
|
||||
<string name="need_storage_permissions_add_attachment_text">Aby dodać załączniki, musisz zezwolić
|
||||
na dostęp do pamięci wewnętrznej.</string>
|
||||
<string name="push_notifications_alert_title">Alert o powiadomieniach</string>
|
||||
<string name="push_notifications_alert_subtitle">Powiadomienia poczty ProtonMail nie działają bez zaktualizowanych usług Google Play.</string>
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
Considere liberar algum espaço ou comprar mais armazenamento antes de ficar sem capacidade.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permissões</string>
|
||||
<string name="need_storage_permissions_text">Para adicionar anexos, você precisa permitir o
|
||||
<string name="need_storage_permissions_add_attachment_text">Para adicionar anexos, você precisa permitir o
|
||||
acesso ao armazenamento.</string>
|
||||
<string name="push_notifications_alert_title">Alerta de notificações push</string>
|
||||
<string name="push_notifications_alert_subtitle">As notificações via Push do ProtonMail não funcionam sem o Google Play Services atualizado.</string>
|
||||
|
|
|
@ -735,7 +735,7 @@
|
|||
Considere libertar um pouco de espaço ou adquira mais armazenamento antes de atingir o limite.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permissões</string>
|
||||
<string name="need_storage_permissions_text">Para adicionar anexos tem de permitir
|
||||
<string name="need_storage_permissions_add_attachment_text">Para adicionar anexos tem de permitir
|
||||
acesso ao armazenamento.</string>
|
||||
<string name="push_notifications_alert_title">Alerta de notificações forçadas</string>
|
||||
<string name="push_notifications_alert_subtitle">As notificações forçadas do ProtonMail não funcionam sem serviços actualizados do Google Play.</string>
|
||||
|
|
|
@ -748,7 +748,7 @@
|
|||
Vă sfătuim să ștergeți din mesaje sau să mai achiziționați spațiu de stocare înainte de a-l epuiza.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Permisiuni</string>
|
||||
<string name="need_storage_permissions_text">Pentru a adăuga atașamente trebuie să permiteți
|
||||
<string name="need_storage_permissions_add_attachment_text">Pentru a adăuga atașamente trebuie să permiteți
|
||||
accesul la spațiul de stocare al telefonului.</string>
|
||||
<string name="push_notifications_alert_title">Notificări instante</string>
|
||||
<string name="push_notifications_alert_subtitle">Notificările instante pentru ProtonMail nu funcționează fără ultima actualizare a serviciilor Google Play.</string>
|
||||
|
|
|
@ -762,7 +762,7 @@
|
|||
Подумайте насчёт освобождения некоторого объёма или покупки большего места для хранения до того, как ваш объём закончится.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Разрешения</string>
|
||||
<string name="need_storage_permissions_text">Чтобы добавлять вложения, вам нужно разрешить
|
||||
<string name="need_storage_permissions_add_attachment_text">Чтобы добавлять вложения, вам нужно разрешить
|
||||
доступ к хранилищу.</string>
|
||||
<string name="push_notifications_alert_title">Предупреждение о push-уведомлениях</string>
|
||||
<string name="push_notifications_alert_subtitle">Push-уведомления для ProtonMail не работают без обновлённых сервисов Google Play.</string>
|
||||
|
|
|
@ -732,7 +732,7 @@
|
|||
<string name="storage_limit_approaching_text">Du har uppnåt 90 % av ditt lagringsutrymme. Du bör överväga att frigöra plats eller köpa mer lagringsutrymme innan den tar slut.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">Behörigheter</string>
|
||||
<string name="need_storage_permissions_text">För att lägga till bilagor måste du tillåta
|
||||
<string name="need_storage_permissions_add_attachment_text">För att lägga till bilagor måste du tillåta
|
||||
åtkomst till lagring.</string>
|
||||
<string name="push_notifications_alert_title">Push-notifieringar</string>
|
||||
<string name="push_notifications_alert_subtitle">Push-meddelanden för ProtonMail fungerar inte utan uppdaterade Google Play-tjänster.</string>
|
||||
|
|
|
@ -732,7 +732,7 @@
|
|||
Kapasiteniz tükenmeden önce bir miktar alan boşaltmayı veya daha fazla depolama alanı satın almayı düşünün.</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">İzinler</string>
|
||||
<string name="need_storage_permissions_text">Ekleri eklemek için depolamaya erişime izin vermeniz gerekir.</string>
|
||||
<string name="need_storage_permissions_add_attachment_text">Ekleri eklemek için depolamaya erişime izin vermeniz gerekir.</string>
|
||||
<string name="push_notifications_alert_title">Anlık bildirim uyarıları</string>
|
||||
<string name="push_notifications_alert_subtitle">ProtonMail anlık bildirimleri, güncellenmiş Google Play hizmetleri olmadan çalışmaz.</string>
|
||||
<string name="app_locked">Uygulama kilitlendi</string>
|
||||
|
|
|
@ -716,7 +716,7 @@
|
|||
<string name="storage_limit_approaching_text">您已使用了 90% 的存储空间。请考虑清理一些空间或购买更大存储量,以防空间耗尽。</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">权限</string>
|
||||
<string name="need_storage_permissions_text">若要添加附件,您需要允许程序读取设备存储。</string>
|
||||
<string name="need_storage_permissions_add_attachment_text">若要添加附件,您需要允许程序读取设备存储。</string>
|
||||
<string name="push_notifications_alert_title">推送通知提示</string>
|
||||
<string name="push_notifications_alert_subtitle">没有新版 Google Play 服务支持,ProtonMail 无法推送通知。</string>
|
||||
<string name="app_locked">程序已锁定</string>
|
||||
|
|
|
@ -721,7 +721,7 @@
|
|||
在您的空間耗盡之前,考慮釋放一些空間或購買更多的儲存空間。</string>
|
||||
<!-- endregion -->
|
||||
<string name="need_permissions_title">權限</string>
|
||||
<string name="need_storage_permissions_text">為了加入附件,您需要允許
|
||||
<string name="need_storage_permissions_add_attachment_text">為了加入附件,您需要允許
|
||||
存取儲存空間。</string>
|
||||
<string name="push_notifications_alert_title">推送通知提醒</string>
|
||||
<string name="push_notifications_alert_subtitle">如果沒有更新過 Google Play 服務,ProtonMail 的推送通知將無法正常運作。</string>
|
||||
|
|
|
@ -799,8 +799,11 @@
|
|||
<!-- endregion -->
|
||||
|
||||
<string name="need_permissions_title">Permissions</string>
|
||||
<string name="need_storage_permissions_text">In order to add attachments you need to allow
|
||||
<string name="need_storage_permissions_add_attachment_text">In order to add attachments you need to allow
|
||||
access to storage.</string>
|
||||
<string name="need_storage_permissions_download_attachment_text">In order to download attachments you need to allow
|
||||
access to storage.</string>
|
||||
<string name="need_contacts_permissions_text">In order to import contacts you need to allow access to contacts.</string>
|
||||
<string name="push_notifications_alert_title">Push notifications alert</string>
|
||||
<string name="push_notifications_alert_subtitle">Push notifications for ProtonMail do not work without updated Google Play services.</string>
|
||||
<string name="app_locked">App locked</string>
|
||||
|
|
|
@ -1073,6 +1073,16 @@ class MessageDetailsViewModelTest : ArchTest, CoroutinesTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenStoragePermissionDeniedShouldEmitNewDialogTriggerEvent() {
|
||||
val dialogTriggerObserver = viewModel.showPermissionMissingDialog.testObserver()
|
||||
|
||||
viewModel.storagePermissionDenied()
|
||||
|
||||
val numberOfReceivedEvents = dialogTriggerObserver.observedValues.size
|
||||
assertEquals(expected = 1, actual = numberOfReceivedEvents)
|
||||
}
|
||||
|
||||
private fun buildConversation(conversationId: String): Conversation {
|
||||
val messageId = "messageId4"
|
||||
val secondMessageId = "messageId5"
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Proton Technologies AG
|
||||
*
|
||||
* This file is part of ProtonMail.
|
||||
*
|
||||
* ProtonMail is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ProtonMail is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
|
||||
*/
|
||||
|
||||
package ch.protonmail.android.contacts.list.viewModel
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.work.WorkManager
|
||||
import ch.protonmail.android.contacts.repositories.andorid.baseInfo.AndroidContactsRepository
|
||||
import ch.protonmail.android.contacts.repositories.andorid.details.AndroidContactDetailsRepository
|
||||
import ch.protonmail.android.data.local.ContactDao
|
||||
import ch.protonmail.android.testAndroid.lifecycle.testObserver
|
||||
import ch.protonmail.android.utils.Event
|
||||
import ch.protonmail.android.views.models.LocalContact
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import me.proton.core.test.android.ArchTest
|
||||
import org.junit.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class ContactsListViewModelTest : ArchTest {
|
||||
|
||||
private val contactDaoMock: ContactDao = mockk()
|
||||
private val workManagerMock: WorkManager = mockk()
|
||||
private val androidContactsRepositoryMock: AndroidContactsRepository = mockk {
|
||||
every { androidContacts } returns MutableLiveData(emptyList())
|
||||
every { setContactsPermission(any()) } returns Unit
|
||||
}
|
||||
private val androidContactsDetailsRepositoryMock: AndroidContactDetailsRepository = mockk {
|
||||
every { contactDetails } returns MutableLiveData(Event(TestLocalContact.instance))
|
||||
}
|
||||
private val contactsListMapperMock: ContactsListMapper = mockk()
|
||||
private val viewModel = ContactsListViewModel(
|
||||
contactDaoMock,
|
||||
workManagerMock,
|
||||
androidContactsRepositoryMock,
|
||||
androidContactsDetailsRepositoryMock,
|
||||
contactsListMapperMock
|
||||
)
|
||||
|
||||
@Test
|
||||
fun whenHasPermissionsShouldUpdateRepositoryAndNotShowPermissionDialog() {
|
||||
val dialogTriggerObserver = viewModel.showPermissionMissingDialog.testObserver()
|
||||
|
||||
viewModel.setHasContactsPermission(true)
|
||||
|
||||
verify { androidContactsRepositoryMock.setContactsPermission(true) }
|
||||
val numberOfReceivedDialogEvents = dialogTriggerObserver.observedValues.size
|
||||
assertEquals(expected = 0, actual = numberOfReceivedDialogEvents)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun whenDoesNotHavePermissionsShouldUpdateRepositoryAndShowPermissionDialog() {
|
||||
val dialogTriggerObserver = viewModel.showPermissionMissingDialog.testObserver()
|
||||
|
||||
viewModel.setHasContactsPermission(false)
|
||||
|
||||
verify { androidContactsRepositoryMock.setContactsPermission(false) }
|
||||
val numberOfReceivedDialogEvents = dialogTriggerObserver.observedValues.size
|
||||
assertEquals(expected = 1, actual = numberOfReceivedDialogEvents)
|
||||
}
|
||||
}
|
||||
|
||||
private object TestLocalContact {
|
||||
const val NAME = "Name"
|
||||
val instance = LocalContact(
|
||||
name = NAME,
|
||||
emails = emptyList(),
|
||||
phones = emptyList(),
|
||||
addresses = emptyList(),
|
||||
groups = emptyList()
|
||||
)
|
||||
}
|
Loading…
Reference in New Issue