From 388526d02d46720dd7942d0633d4688e89584449 Mon Sep 17 00:00:00 2001
From: Marco Rodolfi <marco.rodolfi@tuta.io>
Date: Thu, 22 Jun 2023 11:36:17 +0200
Subject: Fix: add an API compatibility layer for the old file picker and
 change the new implementation as V2

---
 frontend/src/plugin-loader.tsx | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

(limited to 'frontend/src/plugin-loader.tsx')

diff --git a/frontend/src/plugin-loader.tsx b/frontend/src/plugin-loader.tsx
index c4063557..8190fbc4 100644
--- a/frontend/src/plugin-loader.tsx
+++ b/frontend/src/plugin-loader.tsx
@@ -14,7 +14,7 @@ import { FaExclamationCircle, FaPlug } from 'react-icons/fa';
 
 import { DeckyState, DeckyStateContextProvider, UserInfo, useDeckyState } from './components/DeckyState';
 import LegacyPlugin from './components/LegacyPlugin';
-import { File } from './components/modals/filepicker';
+import { File, FileSelectionType } from './components/modals/filepicker';
 import { deinitFilepickerPatches, initFilepickerPatches } from './components/modals/filepicker/patches';
 import MultiplePluginsInstallModal from './components/modals/MultiplePluginsInstallModal';
 import PluginInstallModal from './components/modals/PluginInstallModal';
@@ -360,6 +360,38 @@ class PluginLoader extends Logger {
   }
 
   openFilePicker(
+    startPath: string,
+    selectFiles?: boolean,
+    regex?: RegExp,
+  ): Promise<{ path: string; realpath: string }> {
+    if (selectFiles) {
+      return this.openFilePickerV2(
+        startPath,
+        true,
+        regex,
+        true,
+        undefined,
+        undefined,
+        undefined,
+        undefined,
+        FileSelectionType.FILE,
+      );
+    } else {
+      return this.openFilePickerV2(
+        startPath,
+        false,
+        regex,
+        true,
+        undefined,
+        undefined,
+        undefined,
+        undefined,
+        FileSelectionType.FOLDER,
+      );
+    }
+  }
+
+  openFilePickerV2(
     startPath: string,
     includeFiles?: boolean,
     filter?: RegExp | ((file: File) => boolean),
@@ -368,6 +400,7 @@ class PluginLoader extends Logger {
     showHiddenFiles?: boolean,
     allowAllFiles?: boolean,
     max?: number,
+    select?: FileSelectionType,
   ): Promise<{ path: string; realpath: string }> {
     return new Promise((resolve, reject) => {
       const Content = ({ closeModal }: { closeModal?: () => void }) => (
@@ -389,6 +422,7 @@ class PluginLoader extends Logger {
               defaultHidden={showHiddenFiles}
               onSubmit={resolve}
               closeModal={closeModal}
+              fileSelType={select}
               max={max}
             />
           </WithSuspense>
-- 
cgit v1.2.3

