Always show Nextcloud as an option, offer to install or set up account

Outside of SetupWizard restore, we don't offer to set up an account,
because we don't know if one already exists and the app was locked with
a passcode.
This commit is contained in:
Torsten Grote 2020-09-16 13:35:39 -03:00 committed by Chirayu Desai
parent 4b72cf87ec
commit b974c31515
3 changed files with 21 additions and 4 deletions

View file

@ -173,9 +173,17 @@ internal class StorageRootFetcher(private val context: Context, private val isRe
roots.add(root) roots.add(root)
} }
/**
* This adds a fake Nextcloud entry if no real one was found.
*
* If Nextcloud is *not* installed,
* the user will always have the option to install it by clicking the entry.
*
* If it *is* installed and this is restore, the user can set up a new account by clicking.
* If this isn't restore, the entry will be disabled,
* because we don't know if there's no account or an activated passcode.
*/
private fun checkOrAddNextCloudRoot(roots: ArrayList<StorageRoot>) { private fun checkOrAddNextCloudRoot(roots: ArrayList<StorageRoot>) {
if (!isRestore) return
for (root in roots) { for (root in roots) {
// return if we already have a NextCloud storage root // return if we already have a NextCloud storage root
if (root.authority == AUTHORITY_NEXTCLOUD) return if (root.authority == AUTHORITY_NEXTCLOUD) return
@ -188,16 +196,20 @@ internal class StorageRootFetcher(private val context: Context, private val isRe
putExtra("onlyAdd", true) putExtra("onlyAdd", true)
} }
val isInstalled = packageManager.resolveActivity(intent, 0) != null val isInstalled = packageManager.resolveActivity(intent, 0) != null
val summaryRes = if (isInstalled) {
if (isRestore) R.string.storage_fake_nextcloud_summary_installed
else R.string.storage_fake_nextcloud_summary_unavailable
} else R.string.storage_fake_nextcloud_summary
val root = StorageRoot( val root = StorageRoot(
authority = AUTHORITY_NEXTCLOUD, authority = AUTHORITY_NEXTCLOUD,
rootId = "fake", rootId = "fake",
documentId = "fake", documentId = "fake",
icon = getIcon(context, AUTHORITY_NEXTCLOUD, "fake", 0), icon = getIcon(context, AUTHORITY_NEXTCLOUD, "fake", 0),
title = context.getString(R.string.storage_fake_nextcloud_title), title = context.getString(R.string.storage_fake_nextcloud_title),
summary = context.getString(if (isInstalled) R.string.storage_fake_nextcloud_summary_installed else R.string.storage_fake_nextcloud_summary), summary = context.getString(summaryRes),
availableBytes = null, availableBytes = null,
isUsb = false, isUsb = false,
enabled = true, enabled = !isInstalled || isRestore,
overrideClickListener = { overrideClickListener = {
if (isInstalled) context.startActivity(intent) if (isInstalled) context.startActivity(intent)
else { else {

View file

@ -25,7 +25,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@+id/summaryView" app:layout_constraintBottom_toTopOf="@+id/summaryView"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
@ -39,9 +41,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:textColor="?android:attr/textColorTertiary" android:textColor="?android:attr/textColorTertiary"
android:textSize="12sp" android:textSize="12sp"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"

View file

@ -40,6 +40,7 @@
<string name="storage_fake_nextcloud_title" translatable="false">Nextcloud</string> <string name="storage_fake_nextcloud_title" translatable="false">Nextcloud</string>
<string name="storage_fake_nextcloud_summary">Click to install</string> <string name="storage_fake_nextcloud_summary">Click to install</string>
<string name="storage_fake_nextcloud_summary_installed">Click to set up account</string> <string name="storage_fake_nextcloud_summary_installed">Click to set up account</string>
<string name="storage_fake_nextcloud_summary_unavailable">Account not available. Set one up (or disable passcode).</string>
<string name="storage_check_fragment_backup_title">Initializing backup location…</string> <string name="storage_check_fragment_backup_title">Initializing backup location…</string>
<string name="storage_check_fragment_restore_title">Looking for backups…</string> <string name="storage_check_fragment_restore_title">Looking for backups…</string>
<string name="storage_check_fragment_backup_error">An error occurred while accessing the backup location.</string> <string name="storage_check_fragment_backup_error">An error occurred while accessing the backup location.</string>