Files
imexmobile/redux/photos/photos.sagas.js
2025-10-08 16:20:23 -07:00

66 lines
1.9 KiB
JavaScript

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)]);
}