소스 검색

Allow 3rd party apps to open the trashbin for a specific account

Stefan Niedermann 4 년 전
부모
커밋
0472fb0759
2개의 변경된 파일18개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 0
      src/main/AndroidManifest.xml
  2. 17 2
      src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java

+ 1 - 0
src/main/AndroidManifest.xml

@@ -346,6 +346,7 @@
         <activity android:name=".ui.activity.UploadListActivity" />
         <activity
             android:name=".ui.trashbin.TrashbinActivity"
+            android:exported="true"
             android:configChanges="orientation|screenSize|keyboardHidden"/>
         <activity android:name="com.nextcloud.client.onboarding.WhatsNewActivity"
                   android:theme="@style/Theme.ownCloud.noActionBar.Login" />

+ 17 - 2
src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java

@@ -24,6 +24,7 @@
 package com.owncloud.android.ui.trashbin;
 
 import android.os.Bundle;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -67,11 +68,15 @@ public class TrashbinActivity extends DrawerActivity implements
     TrashbinContract.View,
     Injectable {
 
+    private static final String TAG = TrashbinActivity.class.getSimpleName();
+    private static final String ARG_TARGET_ACCOUNT_NAME = "TARGET_ACCOUNT_NAME";
+
     public static final int EMPTY_LIST_COUNT = 1;
     @Inject AppPreferences preferences;
     @Inject CurrentAccountProvider accountProvider;
     @Inject ClientFactory clientFactory;
     private TrashbinListAdapter trashbinListAdapter;
+    private User user;
 
     @VisibleForTesting
     TrashbinPresenter trashbinPresenter;
@@ -82,7 +87,17 @@ public class TrashbinActivity extends DrawerActivity implements
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        final User user = accountProvider.getUser();
+        user = accountProvider.getUser();
+        final String targetAccount = getIntent().getStringExtra(ARG_TARGET_ACCOUNT_NAME);
+        if (!user.getAccountName().equals(targetAccount)) {
+            final boolean accountSwitchSuccessful = getUserAccountManager().setCurrentOwnCloudAccount(targetAccount);
+            if (accountSwitchSuccessful) {
+                user = getUserAccountManager().getUser(targetAccount).orElse(user);
+            } else {
+                Log.w(TAG, "Tried to switch current account to \"" + targetAccount + "\", but could not be found.");
+            }
+        }
+
         final RemoteTrashbinRepository trashRepository = new RemoteTrashbinRepository(user, clientFactory);
         trashbinPresenter = new TrashbinPresenter(trashRepository, this);
 
@@ -118,7 +133,7 @@ public class TrashbinActivity extends DrawerActivity implements
             getStorageManager(),
             preferences,
             this,
-            getUserAccountManager().getUser()
+            user
         );
         recyclerView.setAdapter(trashbinListAdapter);
         recyclerView.setHasFixedSize(true);