diff options
author | Logan Rosen <loganrosen@gmail.com> | 2023-06-06 10:38:58 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-06 09:38:58 -0500 |
commit | bdcdb4e4dc9636834b54147d666e6f6024fcff7b (patch) | |
tree | 2dc0ea153581724fe8cce5e8524a32a79f677149 /src/lib/media/picker.web.tsx | |
parent | a67eaa6ace7b8b7a2158decf1d84c613b890f614 (diff) | |
download | voidsky-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.tsx | 70 |
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() - }) -} |