Browse Source

use editor id to use any editor

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 5 years ago
parent
commit
95afe8c82a

+ 10 - 3
src/main/java/com/owncloud/android/files/FileMenuFilter.java

@@ -48,6 +48,8 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import androidx.annotation.Nullable;
+
 /**
  * Filters out the file actions available in a given {@link Menu} for a given {@link OCFile}
  * according to the current state of the latest.
@@ -279,21 +281,26 @@ public class FileMenuFilter {
     }
 
     public static boolean isEditorAvailable(ContentResolver contentResolver, Account account, String mimeType) {
+        return getEditor(contentResolver, account, mimeType) != null;
+    }
+
+    @Nullable
+    public static Editor getEditor(ContentResolver contentResolver, Account account, String mimeType) {
         String json = new ArbitraryDataProvider(contentResolver).getValue(account, ArbitraryDataProvider.DIRECT_EDITING);
 
         if (json.isEmpty()) {
-            return false;
+            return null;
         }
 
         DirectEditing directEditing = new Gson().fromJson(json, DirectEditing.class);
 
         for (Editor editor : directEditing.editors.values()) {
             if (editor.mimetypes.contains(mimeType) || editor.optionalMimetypes.contains(mimeType)) {
-                return true;
+                return editor;
             }
         }
 
-        return false;
+        return null;
     }
 
     /**

+ 10 - 3
src/main/java/com/owncloud/android/ui/asynctasks/LoadUrlTask.java

@@ -25,6 +25,8 @@ import android.os.AsyncTask;
 
 import com.nextcloud.android.lib.resources.directediting.DirectEditingOpenFileRemoteOperation;
 import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.files.FileMenuFilter;
+import com.owncloud.android.lib.common.Editor;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.operations.RichDocumentsUrlOperation;
 import com.owncloud.android.ui.activity.EditorWebView;
@@ -59,10 +61,15 @@ public class LoadUrlTask extends AsyncTask<Void, Void, String> {
 
 
         if (editorWebView instanceof RichDocumentsEditorWebView) {
-            result = new RichDocumentsUrlOperation(file.getLocalId()).execute(account,
-                                                                              editorWebViewWeakReference.get());
+            result = new RichDocumentsUrlOperation(file.getLocalId()).execute(account, editorWebView);
         } else if (editorWebView instanceof TextEditorWebView) {
-            result = new DirectEditingOpenFileRemoteOperation(file.getRemotePath(), TEXT)
+            Editor editor = FileMenuFilter.getEditor(editorWebView.getContentResolver(), account, file.getMimeType());
+
+            if (editor == null) {
+                return "";
+            }
+
+            result = new DirectEditingOpenFileRemoteOperation(file.getRemotePath(), editor.id)
                 .execute(account, editorWebViewWeakReference.get());
         } else {
             return "";