import Constants from "expo-constants"; import * as ImagePicker from "expo-image-picker"; import { all, call, put, select, takeLatest } from "redux-saga/effects"; import { selectBodyshop } from "../user/user.selectors"; import { mediaUploadStart } from "./photos.actions"; import PhotosActionTypes from "./photos.types"; export function* onOpenImagePicker() { yield takeLatest(PhotosActionTypes.OPEN_IMAGE_PICKER, openImagePickerAction); } export function* openImagePickerAction(jobid) { try { if (Constants.platform.ios) { const cameraRollStatus = yield ImagePicker.requestMediaLibraryPermissionsAsync(); const cameraStatus = yield ImagePicker.requestCameraPermissionsAsync(); if ( cameraRollStatus.status !== "granted" || cameraStatus.status !== "granted" ) { alert("Sorry, we need these permissions to make this work!"); return; } } let result = yield ImagePicker.launchImageLibraryAsync({ mediaTypes: ["images", "videos"], aspect: [4, 3], quality: 1, allowsMultipleSelection: true, }); if (!(result.canceled)) { yield put(mediaUploadStart(result.assets)); } } catch (error) { console.log("Saga Error: open Picker", error); } } export function* onMediaUploadStart() { yield takeLatest(PhotosActionTypes.MEDIA_UPLOAD_START, mediaUploadStartAction); } export function* mediaUploadStartAction(photos) { try { console.log("Got to the Photo Saga.", photos); console.log("upload", photos) //get bodyshop state const bodyshop = yield select(selectBodyshop); if (bodyshop.uselocalmediaserver) { //upload to LMS } else { //Upload to img proxy } } catch (error) { console.log("Saga Error: open upload", error); } } export function* photosSagas() { yield all([call(onOpenImagePicker), call(onMediaUploadStart)]); }