Uploads and viewing from bills.
This commit is contained in:
@@ -4,15 +4,31 @@ export const getJobMedia = (jobid) => ({
|
||||
type: MediaActionTypes.GET_MEDIA_FOR_JOB,
|
||||
payload: jobid,
|
||||
});
|
||||
|
||||
export const getBillMedia = ({ jobid, invoice_number }) => {
|
||||
console.log("in the action");
|
||||
return {
|
||||
type: MediaActionTypes.GET_MEDIA_FOR_BILL,
|
||||
payload: { jobid, invoice_number },
|
||||
};
|
||||
};
|
||||
|
||||
export const setJobMedia = ({ jobid, media }) => ({
|
||||
type: MediaActionTypes.SET_MEDIA_FOR_JOB,
|
||||
payload: { jobid, media },
|
||||
});
|
||||
|
||||
export const addMediaForJob = ({ jobid, media }) => ({
|
||||
type: MediaActionTypes.ADD_MEDIA_FOR_JOB,
|
||||
payload: { jobid, media },
|
||||
});
|
||||
|
||||
export const getJobMediaError = ({ error, message }) => ({
|
||||
type: MediaActionTypes.GET_MEDIA_FOR_JOB_ERROR,
|
||||
payload: { error, message },
|
||||
});
|
||||
|
||||
export const toggleMediaSelected = ({ jobid, filename }) => ({
|
||||
type: MediaActionTypes.TOGGLE_MEDIA_SELECTED,
|
||||
payload: { jobid, filename },
|
||||
});
|
||||
|
||||
@@ -12,10 +12,20 @@ const mediaReducer = (state = INITIAL_STATE, action) => {
|
||||
return {
|
||||
...state,
|
||||
[action.payload.jobid]: [
|
||||
...state[action.payload.jobid],
|
||||
...(state[action.payload.jobid] ? state[action.payload.jobid] : []),
|
||||
...(action.payload.media || []),
|
||||
],
|
||||
};
|
||||
case MediaActionTypes.TOGGLE_MEDIA_SELECTED:
|
||||
return {
|
||||
...state,
|
||||
[action.payload.jobid]: state[action.payload.jobid].map((p) => {
|
||||
if (p.filename === action.payload.filename) {
|
||||
p.isSelected = !p.isSelected;
|
||||
}
|
||||
return p;
|
||||
}),
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import { getJobMediaError, setJobMedia } from "./media.actions";
|
||||
import MediaActionTypes from "./media.types";
|
||||
import cleanAxios from "../../utils/CleanAxios";
|
||||
import normalizeUrl from "normalize-url";
|
||||
|
||||
export function* onSetJobMedia() {
|
||||
yield takeLatest(MediaActionTypes.GET_MEDIA_FOR_JOB, getJobMedia);
|
||||
}
|
||||
@@ -37,7 +38,7 @@ export function* getJobMedia({ payload: jobid }) {
|
||||
thumbnail: normalizeUrl(
|
||||
`${localmediaserverhttp}/${d.thumbnail}`
|
||||
),
|
||||
|
||||
isSelected: false,
|
||||
key: idx,
|
||||
};
|
||||
}),
|
||||
@@ -48,7 +49,48 @@ export function* getJobMedia({ payload: jobid }) {
|
||||
thumbnail: normalizeUrl(
|
||||
`${localmediaserverhttp}/${d.thumbnail}`
|
||||
),
|
||||
isSelected: false,
|
||||
key: idx,
|
||||
};
|
||||
}),
|
||||
],
|
||||
})
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
yield put(getJobMediaError(error));
|
||||
}
|
||||
}
|
||||
export function* onSetBillMedia() {
|
||||
yield takeLatest(MediaActionTypes.GET_MEDIA_FOR_BILL, getBillMedia);
|
||||
}
|
||||
export function* getBillMedia({ payload: { jobid, invoice_number } }) {
|
||||
try {
|
||||
const localmediaserverhttp = (yield select(
|
||||
(state) => state.user.bodyshop.localmediaserverhttp
|
||||
)).trim();
|
||||
|
||||
if (localmediaserverhttp && localmediaserverhttp !== "") {
|
||||
const documentsFetch = yield cleanAxios.post(
|
||||
`${localmediaserverhttp}/bills/list`,
|
||||
{
|
||||
jobid,
|
||||
invoice_number,
|
||||
}
|
||||
);
|
||||
|
||||
yield put(
|
||||
setJobMedia({
|
||||
jobid,
|
||||
media: [
|
||||
...documentsFetch.data.map((d, idx) => {
|
||||
return {
|
||||
...d,
|
||||
src: normalizeUrl(`${localmediaserverhttp}/${d.src}`),
|
||||
thumbnail: normalizeUrl(
|
||||
`${localmediaserverhttp}/${d.thumbnail}`
|
||||
),
|
||||
isSelected: false,
|
||||
key: idx,
|
||||
};
|
||||
}),
|
||||
@@ -62,5 +104,5 @@ export function* getJobMedia({ payload: jobid }) {
|
||||
}
|
||||
|
||||
export function* mediaSagas() {
|
||||
yield all([call(onSetJobMedia)]);
|
||||
yield all([call(onSetJobMedia), call(onSetBillMedia)]);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@ const MediaActionTypes = {
|
||||
GET_MEDIA_FOR_JOB: "GET_MEDIA_FOR_JOB",
|
||||
GET_MEDIA_FOR_JOB_ERROR: "GET_MEDIA_FOR_JOB_ERROR",
|
||||
ADD_MEDIA_FOR_JOB: "ADD_MEDIA_FOR_JOB",
|
||||
TOGGLE_MEDIA_SELECTED: "TOGGLE_MEDIA_SELECTED",
|
||||
POST_MEDIA_FOR_JOB: "POST_MEDIA_FOR_JOB",
|
||||
POST_MEDIA_FOR_JOB_SUCCESS: "POST_MEDIA_FOR_JOB_SUCCESS",
|
||||
POST_MEDIA_FOR_JOB_ERROR: "POST_MEDIA_FOR_JOB_ERROR",
|
||||
GET_MEDIA_FOR_BILL: "GET_MEDIA_FOR_BILL",
|
||||
};
|
||||
export default MediaActionTypes;
|
||||
|
||||
@@ -97,7 +97,15 @@ const userReducer = (state = INITIAL_STATE, action) => {
|
||||
};
|
||||
|
||||
case UserActionTypes.SET_SHOP_DETAILS:
|
||||
return { ...state, bodyshop: action.payload };
|
||||
return {
|
||||
...state,
|
||||
bodyshop: {
|
||||
uselocalmediaserver: true,
|
||||
localmediaserverhttp: "http://localhost:8000", //TODO: ENSURE THAT THIS HAS BEEN REMOVED POST TESTING.
|
||||
localmediaservernetwork: "\\localhost:8000", //TODO: ENSURE THAT THIS HAS BEEN REMOVED POST TESTING.
|
||||
...action.payload,
|
||||
},
|
||||
};
|
||||
case UserActionTypes.SIGN_IN_FAILURE:
|
||||
case UserActionTypes.SIGN_OUT_FAILURE:
|
||||
case UserActionTypes.EMAIL_SIGN_UP_FAILURE:
|
||||
|
||||
Reference in New Issue
Block a user