* Fixes profile edit image selection not prompting users on web (#309) * Fixes linting erroszio/stable
parent
ea2b2583b8
commit
db6b198d18
|
@ -2,6 +2,7 @@ import {Alert} from 'react-native'
|
||||||
import {Camera} from 'expo-camera'
|
import {Camera} from 'expo-camera'
|
||||||
import * as MediaLibrary from 'expo-media-library'
|
import * as MediaLibrary from 'expo-media-library'
|
||||||
import {Linking} from 'react-native'
|
import {Linking} from 'react-native'
|
||||||
|
import {isWeb} from 'platform/detection'
|
||||||
|
|
||||||
const openSettings = () => {
|
const openSettings = () => {
|
||||||
Linking.openURL('app-settings:')
|
Linking.openURL('app-settings:')
|
||||||
|
@ -24,6 +25,12 @@ const openPermissionAlert = (perm: string) => {
|
||||||
export function usePhotoLibraryPermission() {
|
export function usePhotoLibraryPermission() {
|
||||||
const [mediaLibraryPermissions] = MediaLibrary.usePermissions()
|
const [mediaLibraryPermissions] = MediaLibrary.usePermissions()
|
||||||
const requestPhotoAccessIfNeeded = async () => {
|
const requestPhotoAccessIfNeeded = async () => {
|
||||||
|
// On the, we use <input type="file"> to produce a filepicker
|
||||||
|
// This does not need any permission granting.
|
||||||
|
if (isWeb) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
if (mediaLibraryPermissions?.status === 'granted') {
|
if (mediaLibraryPermissions?.status === 'granted') {
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -111,6 +111,18 @@ export async function cropAndCompressFlow(
|
||||||
// helpers
|
// helpers
|
||||||
// =
|
// =
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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> {
|
function selectFile(opts: PickerOpts): Promise<PickedFile> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var input = document.createElement('input')
|
var input = document.createElement('input')
|
||||||
|
|
|
@ -7,9 +7,7 @@ import {DesktopRightNav} from './desktop/RightNav'
|
||||||
import {ErrorBoundary} from '../com/util/ErrorBoundary'
|
import {ErrorBoundary} from '../com/util/ErrorBoundary'
|
||||||
import {Lightbox} from '../com/lightbox/Lightbox'
|
import {Lightbox} from '../com/lightbox/Lightbox'
|
||||||
import {ModalsContainer} from '../com/modals/Modal'
|
import {ModalsContainer} from '../com/modals/Modal'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
|
||||||
import {Composer} from './Composer.web'
|
import {Composer} from './Composer.web'
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
|
||||||
import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle'
|
import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle'
|
||||||
import {s, colors} from 'lib/styles'
|
import {s, colors} from 'lib/styles'
|
||||||
import {RoutesContainer, FlatNavigator} from '../../Navigation'
|
import {RoutesContainer, FlatNavigator} from '../../Navigation'
|
||||||
|
|
Loading…
Reference in New Issue