about summary refs log tree commit diff
path: root/src/lib/media/picker.web.tsx
diff options
context:
space:
mode:
authorLogan Rosen <loganrosen@gmail.com>2023-06-06 10:38:58 -0400
committerGitHub <noreply@github.com>2023-06-06 09:38:58 -0500
commitbdcdb4e4dc9636834b54147d666e6f6024fcff7b (patch)
tree2dc0ea153581724fe8cce5e8524a32a79f677149 /src/lib/media/picker.web.tsx
parenta67eaa6ace7b8b7a2158decf1d84c613b890f614 (diff)
downloadvoidsky-bdcdb4e4dc9636834b54147d666e6f6024fcff7b.tar.zst
Use expo-image-picker on Web (#847)
Diffstat (limited to 'src/lib/media/picker.web.tsx')
-rw-r--r--src/lib/media/picker.web.tsx70
1 files changed, 2 insertions, 68 deletions
diff --git a/src/lib/media/picker.web.tsx b/src/lib/media/picker.web.tsx
index 583f78a30..d12685b0c 100644
--- a/src/lib/media/picker.web.tsx
+++ b/src/lib/media/picker.web.tsx
@@ -1,34 +1,9 @@
 /// <reference lib="dom" />
 
-import {PickerOpts, CameraOpts, CropperOptions} from './types'
+import {CameraOpts, CropperOptions} from './types'
 import {RootStoreModel} from 'state/index'
-import {getImageDim} from 'lib/media/manip'
-import {extractDataUriMime} from './util'
 import {Image as RNImage} from 'react-native-image-crop-picker'
-
-interface PickedFile {
-  uri: string
-  path: string
-  size: number
-}
-
-export async function openPicker(
-  _store: RootStoreModel,
-  opts?: PickerOpts,
-): Promise<RNImage[]> {
-  const res = await selectFile(opts)
-  const dim = await getImageDim(res.uri)
-  const mime = extractDataUriMime(res.uri)
-  return [
-    {
-      path: res.uri,
-      mime,
-      size: res.size,
-      width: dim.width,
-      height: dim.height,
-    },
-  ]
-}
+export {openPicker} from './picker.shared'
 
 export async function openCamera(
   _store: RootStoreModel,
@@ -57,44 +32,3 @@ export async function openCropper(
     })
   })
 }
-
-/**
- * Opens the select file dialog in the browser.
- * NOTE:
- * If in the future someone updates this method to use:
- * https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker
- * Check that the `showOpenFilePicker` API does not require any permissions
- * granted to use. As of this writing, it does not, but that could change
- * in the future. If the user does need to go through a permissions granting
- * flow, then checkout the usePhotoLibraryPermission() hook in
- *   src/lib/hooks/usePermissions.ts
- * so that it gets appropriately updated.
- */
-function selectFile(opts?: PickerOpts): Promise<PickedFile> {
-  return new Promise((resolve, reject) => {
-    var input = document.createElement('input')
-    input.type = 'file'
-    input.accept = opts?.mediaType === 'photo' ? 'image/*' : '*/*'
-    input.onchange = e => {
-      const target = e.target as HTMLInputElement
-      const file = target?.files?.[0]
-      if (!file) {
-        return reject(new Error('Canceled'))
-      }
-
-      var reader = new FileReader()
-      reader.readAsDataURL(file)
-      reader.onload = readerEvent => {
-        if (!readerEvent.target) {
-          return reject(new Error('Canceled'))
-        }
-        resolve({
-          uri: readerEvent.target.result as string,
-          path: file.name,
-          size: file.size,
-        })
-      }
-    }
-    input.click()
-  })
-}