Viewing File: /home/ubuntu/todaykat-frontend-base/src/components/store/sagas/DeliverySaga.jsx

import { call, select, put, takeLatest, all } from "redux-saga/effects";
import api from "../../Environment";
import {
  getSuccessNotificationMessage,
  getErrorNotificationMessage,
} from "../../Helper/ToastNotification";
import {
  SAVE_DELIVERY_ADDRESSES_START,
  FETCH_DELIVERY_ADDRESSES_LIST_START,
  MAKE_DEFAULT_DELIVERY_ADDRESSES_START,
  DELETE_DELIVERY_ADDRESSES_START,
  FETCH_SINGLE_DELIVERY_ADDRESS_START,
  GET_COUNTRIES_START,
  GET_STATES_START,
} from "../actions/ActionConstant";

import {
  saveDeliveryAddressesSuccess,
  saveDeliveryAddressesFailure,
  fetchDeliveryAddressesListSuccess,
  fetchDeliveryAddressesListFailure,
  makeDefaultDeliveryAddressesSuccess,
  makeDefaultDeliveryAddressesFailure,
  deleteDeliveryAddressesSuccess,
  deleteDeliveryAddressesFailure,
  fetchSingleDeliveryAddressSuccess,
  fetchSingleDeliveryAddressFailure,
  getCountriesSuccess,
  getCountriesFailure,
  getStatesSuccess,
  getStatesFailure,
} from "../actions/DeliveryAction";

function* saveDeliveryAddressesAPI(action) {
  try {
    const response = yield api.postMethod("delivery_addresses_save", action.data);

    if (response.data.success) {
      yield put(saveDeliveryAddressesSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.message);
    } else {
      yield put(saveDeliveryAddressesFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(saveDeliveryAddressesFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }

}

function* fetchDeliveryAddressesListAPI() {
  try {
    const response = yield api.postMethod("delivery_addresses_list");

    if (response.data.success) {
      yield put(fetchDeliveryAddressesListSuccess(response.data.data));
    } else {
      yield put(fetchDeliveryAddressesListFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(fetchDeliveryAddressesListFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* makeDefaultDeliveryAddressesAPI(action) {
  try {
    const response = yield api.postMethod("delivery_addresses_make_default", action.data);

    if (response.data.success) {
      yield put(makeDefaultDeliveryAddressesSuccess(response.data.data));
    } else {
      yield put(makeDefaultDeliveryAddressesFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(makeDefaultDeliveryAddressesFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* deleteDeliveryAddressesAPI(action) {
  try {
    const response = yield api.postMethod("delivery_addresses_delete", action.data);

    if (response.data.success) {
      yield put(deleteDeliveryAddressesSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.data.message);
      let deliveryData = yield select((state) => state.delivery.deliveryAddressesList.data);
      deliveryData = {
        ...deliveryData,
        delivery_addresses: deliveryData.delivery_addresses.filter(add => add.delivery_address_id !== action.data.delivery_address_id),
      }
      yield put(fetchDeliveryAddressesListSuccess(deliveryData));
    } else {
      yield put(deleteDeliveryAddressesFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(deleteDeliveryAddressesFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* fetchSingleDeliveryAddressAPI(action) {
  try {
    const response = yield api.postMethod("delivery_addresses_view", action.data);

    if (response.data.success) {
      yield put(fetchSingleDeliveryAddressSuccess(response.data.data));
    } else {
      yield put(fetchSingleDeliveryAddressFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(fetchSingleDeliveryAddressFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* getCountriesAPI(action) {
  try {
    const response = yield api.postMethod("get_countries", action.data);

    if (response.data.success) {
      yield put(getCountriesSuccess(response.data.data));
    } else {
      yield put(getCountriesFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(getCountriesFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}


function* getStatesAPI(action) {
  try {
    const response = yield api.postMethod("get_states", action.data);

    if (response.data.success) {
      yield put(getStatesSuccess(response.data.data));
    } else {
      yield put(getStatesFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(getStatesFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}


export default function* pageSaga() {
  yield all([
    yield takeLatest(SAVE_DELIVERY_ADDRESSES_START, saveDeliveryAddressesAPI),
    yield takeLatest(FETCH_DELIVERY_ADDRESSES_LIST_START, fetchDeliveryAddressesListAPI),
    yield takeLatest(MAKE_DEFAULT_DELIVERY_ADDRESSES_START, makeDefaultDeliveryAddressesAPI),
    yield takeLatest(DELETE_DELIVERY_ADDRESSES_START, deleteDeliveryAddressesAPI),
    yield takeLatest(FETCH_SINGLE_DELIVERY_ADDRESS_START, fetchSingleDeliveryAddressAPI),
    yield takeLatest(GET_COUNTRIES_START, getCountriesAPI),
    yield takeLatest(GET_STATES_START, getStatesAPI),
  ]);
}
Back to Directory File Manager