Anul 3 Semestrul 1
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { initDB } from "@/database/localdb";
|
||||
import { call, put, select, takeEvery } from "redux-saga/effects";
|
||||
import { SERVER_IP, SERVER_PORT } from "@/constants/Constants";
|
||||
import axios, { AxiosResponse } from "axios"
|
||||
import { addDrug, fetchDrugs, removeDrug, updateDrug } from "./localdbSaga";
|
||||
import { fetch, NetInfoState } from "@react-native-community/netinfo";
|
||||
import { setConnected, setOnline } from "@/redux/features/status/statusSlice";
|
||||
import { Status } from "@/redux/features/status/status";
|
||||
import { addDrugServer, checkConnection, fetchDrugsServer, removeDrugServer, updateDrugServer, webSocketSaga } from "./serverSaga";
|
||||
|
||||
|
||||
function* initialize() {
|
||||
yield call(initDB);
|
||||
yield call(checkConnection);
|
||||
console.log("Initialized");
|
||||
yield put({ type: 'drug/fetch' });
|
||||
yield webSocketSaga();
|
||||
}
|
||||
|
||||
|
||||
function* fetchOfflineOrOnline() {
|
||||
const status: Status = yield select(state => state.status);
|
||||
if (status.isConnected && status.isOnline) {
|
||||
yield call(fetchDrugsServer);
|
||||
} else {
|
||||
yield call(fetchDrugs);
|
||||
}
|
||||
}
|
||||
|
||||
function* addDrugOfflineOrOnline(action: { type: string, payload: any }) {
|
||||
const status: Status = yield select(state => state.status);
|
||||
if (status.isConnected && status.isOnline) {
|
||||
yield call(addDrugServer, action);
|
||||
} else {
|
||||
yield call(addDrug, action);
|
||||
}
|
||||
}
|
||||
|
||||
function* removeDrugOfflineOrOnline(action: { type: string, payload: number }) {
|
||||
const status: Status = yield select(state => state.status);
|
||||
if (status.isConnected && status.isOnline) {
|
||||
yield call(removeDrugServer, action);
|
||||
} else {
|
||||
yield call(removeDrug, action);
|
||||
}
|
||||
}
|
||||
|
||||
function* updateDrugOfflineOrOnline(action: { type: string, payload: any }) {
|
||||
const status: Status = yield select(state => state.status);
|
||||
if (status.isConnected && status.isOnline) {
|
||||
yield call(updateDrugServer, action);
|
||||
} else {
|
||||
yield call(updateDrug, action);
|
||||
}
|
||||
}
|
||||
|
||||
export function* rootSaga() {
|
||||
yield takeEvery('drug/initialize', initialize);
|
||||
yield takeEvery('drug/fetch', fetchOfflineOrOnline);
|
||||
yield takeEvery('drug/add', addDrugOfflineOrOnline);
|
||||
yield takeEvery('drug/remove', removeDrugOfflineOrOnline);
|
||||
yield takeEvery('drug/update', updateDrugOfflineOrOnline);
|
||||
yield takeEvery('status/checkConnection', checkConnection);
|
||||
}
|
||||
Reference in New Issue
Block a user