Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-05-14 16:22:51 +0300
committerStefan Niedermann <info@niedermann.it>2021-05-27 15:51:51 +0300
commitc88e9cb2bf65f4fa881bf198a5effe3b20af4b58 (patch)
treebeefb22fae0d076e4753d8322d4629d703b7e512 /app/src/main/java/it/niedermann/owncloud
parent63ed6ab6ceec9da0c3b2989c4a50daa9ce524629 (diff)
Open trashbin in files app
With fallback to legacy launch in browser
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java42
2 files changed, 39 insertions, 5 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
index 9ab3c81f..50e47182 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
@@ -308,7 +308,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
binding.navigationMenu.setAdapter(menuAdapter);
} else {
- menuAdapter.updateAccount(nextAccount);
+ menuAdapter.updateAccount(this, nextAccount);
}
});
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java
index cbcc6306..68166644 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java
@@ -2,6 +2,7 @@ package it.niedermann.owncloud.notes.main.menu;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@@ -10,6 +11,8 @@ import androidx.annotation.NonNull;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView;
+import com.nextcloud.android.sso.helper.VersionCheckHelper;
+
import it.niedermann.owncloud.notes.FormattingHelpActivity;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.about.AboutActivity;
@@ -27,7 +30,7 @@ public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
public MenuAdapter(@NonNull Context context, @NonNull Account account, int settingsRequestCode, @NonNull Consumer<MenuItem> onClick) {
this.menuItems = new MenuItem[]{
new MenuItem(new Intent(context, FormattingHelpActivity.class), R.string.action_formatting_help, R.drawable.ic_baseline_help_outline_24),
- new MenuItem(generateTrashbinIntent(account), R.string.action_trashbin, R.drawable.ic_delete_grey600_24dp),
+ new MenuItem(generateTrashbinIntent(context, account), R.string.action_trashbin, R.drawable.ic_delete_grey600_24dp),
new MenuItem(new Intent(context, PreferencesActivity.class), settingsRequestCode, R.string.action_settings, R.drawable.ic_settings_grey600_24dp),
new MenuItem(new Intent(context, AboutActivity.class), R.string.simple_about, R.drawable.ic_info_outline_grey600_24dp)
};
@@ -51,8 +54,8 @@ public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
holder.bind(menuItems[position], onClick);
}
- public void updateAccount(@NonNull Account account) {
- menuItems[1].setIntent(new Intent(generateTrashbinIntent(account)));
+ public void updateAccount(@NonNull Context context, @NonNull Account account) {
+ menuItems[1].setIntent(new Intent(generateTrashbinIntent(context, account)));
}
@Override
@@ -61,7 +64,38 @@ public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
}
@NonNull
- private static Intent generateTrashbinIntent(@NonNull Account account) {
+ private static Intent generateTrashbinIntent(@NonNull Context context, @NonNull Account account) {
+ // TODO Replace with correct minVersionCode once the PR in the files app has been merged: https://github.com/nextcloud/android/pull/8405
+ final int minVersionCode = 30160000;
+ try {
+ if (VersionCheckHelper.getNextcloudFilesVersionCode(context, true) > minVersionCode) {
+ return generateTrashbinAppIntent(context, account, true);
+ } else if (VersionCheckHelper.getNextcloudFilesVersionCode(context, false) > minVersionCode) {
+ return generateTrashbinAppIntent(context, account, false);
+ } else {
+ // Files app is too old to be able to switch the account when launching the TrashbinActivity
+ return generateTrashbinWebIntent(account);
+ }
+ } catch (PackageManager.NameNotFoundException | SecurityException e) {
+ e.printStackTrace();
+ return generateTrashbinWebIntent(account);
+ }
+ }
+
+ private static Intent generateTrashbinAppIntent(@NonNull Context context, @NonNull Account account, boolean prod) throws PackageManager.NameNotFoundException {
+ final PackageManager packageManager = context.getPackageManager();
+ final String packageName = prod ? "com.nextcloud.client" : "com.nextcloud.android.beta";
+ final Intent intent = new Intent();
+ intent.setClassName(packageName, "com.owncloud.android.ui.trashbin.TrashbinActivity");
+ if (packageManager.resolveActivity(intent, 0) != null) {
+ return intent
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .putExtra("TARGET_ACCOUNT_NAME", account.getAccountName());
+ }
+ throw new PackageManager.NameNotFoundException("Could not resolve target activity.");
+ }
+
+ private static Intent generateTrashbinWebIntent(@NonNull Account account) {
return new Intent(Intent.ACTION_VIEW, Uri.parse(account.getUrl() + "/index.php/apps/files/?dir=/&view=trashbin"));
}
}