Skip to content

Commit

Permalink
Merge pull request #3300 from LiteFarmOrg/LF-4221js-Alternative-Redux…
Browse files Browse the repository at this point in the history
…-approach-branch

LF-4221 Alternative Redux handling
  • Loading branch information
kathyavini committed Jul 18, 2024
2 parents a6402d7 + 463e236 commit 1f403fe
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 125 deletions.
14 changes: 14 additions & 0 deletions packages/api/src/controllers/taskController.js
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,20 @@ const taskController = {
)
.whereIn('task_id', taskIds);
const filteredTasks = graphTasks.map(removeNullTypes);

/* Clean before returning to frontend */
const {
task_type_id: soilAmendmentTypeId,
} = await TaskTypeModel.query()
.whereNotDeleted()
.where({ farm_id: null, task_translation_key: 'SOIL_AMENDMENT_TASK' })
.first();
filteredTasks.forEach((task) => {
if (task.task_type_id !== soilAmendmentTypeId) {
delete task.soil_amendment_task_products;
}
});

if (graphTasks) {
res.status(200).send(filteredTasks);
}
Expand Down
9 changes: 9 additions & 0 deletions packages/api/tests/task.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,15 @@ describe('Task tests', () => {
return knex('task').where({ task_id }).first();
}

beforeAll(async () => {
// Check in controller expects Soil Amendment Task to exist
await knex('task_type').insert({
farm_id: null,
task_name: 'Soil amendment',
task_translation_key: 'SOIL_AMENDMENT_TASK',
});
});

afterAll(async (done) => {
await tableCleanup(knex);
await knex.destroy();
Expand Down
45 changes: 2 additions & 43 deletions packages/webapp/src/containers/Task/saga.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,6 @@ import {
onLoadingHarvestUseTypeStart,
} from '../harvestUseTypeSlice';
import { managementPlanWithCurrentLocationEntitiesSelector } from './TaskCrops/managementPlansWithLocationSelector';
import {
getSoilAmendmentTaskProductsSuccess,
removeSoilAmendmentTaskProducts,
soilAmendmentTaskProductsByTaskIdSelector,
} from '../slice/taskSlice/soilAmendmentTaskProductSlice';
import {
createBeforeCompleteTaskUrl,
createCompleteHarvestQuantityTaskUrl,
Expand All @@ -86,7 +81,6 @@ import { setPersistedPaths, setFormData } from '../hooks/useHookFormPersist/hook
import {
formatSoilAmendmentTaskToDBStructure,
formatSoilAmendmentProductToDBStructure,
getRemovedTaskProductIds,
} from '../../util/task';
import { TASKTYPE_PRODUCT_MAP } from './constants';
import { api } from '../../store/api/apiSlice';
Expand Down Expand Up @@ -329,12 +323,6 @@ const taskTypeActionMap = {
},
};

const taskProductTypeActionMap = {
SOIL_AMENDMENT_TASK: {
success: (tasks) => put(getSoilAmendmentTaskProductsSuccess(tasks)),
},
};

export const onLoadingTaskStart = createAction('onLoadingTaskStartSaga');

export function* onLoadingTaskStartSaga() {
Expand All @@ -357,22 +345,11 @@ function* handleGetTasksSuccess(tasks, successAction) {
},
{},
);

const productsByTranslationKey = {};
const tasksByTranslationKey = tasks.reduce((tasksByTranslationKey, task) => {
const { task_translation_key } = taskTypeEntities[task.task_type_id];
if (taskTypeActionMap[task_translation_key]) {
tasksByTranslationKey[task_translation_key].push(task[task_translation_key.toLowerCase()]);
}
if (TASKTYPE_PRODUCT_MAP[task_translation_key]) {
if (!productsByTranslationKey[task_translation_key]) {
productsByTranslationKey[task_translation_key] = [];
}
productsByTranslationKey[task_translation_key] = [
...productsByTranslationKey[task_translation_key],
...task[TASKTYPE_PRODUCT_MAP[task_translation_key]],
];
}
return tasksByTranslationKey;
}, tasksByTranslationKeyDefault);

Expand All @@ -381,9 +358,6 @@ function* handleGetTasksSuccess(tasks, successAction) {
yield taskTypeActionMap[task_translation_key].success(
tasksByTranslationKey[task_translation_key],
);
yield taskProductTypeActionMap[task_translation_key]?.success(
productsByTranslationKey[task_translation_key],
);
} catch (e) {
yield put(taskTypeActionMap[task_translation_key].fail(e));
console.log(e);
Expand Down Expand Up @@ -805,13 +779,6 @@ const taskTypeGetCompleteTaskBodyFunctionMap = {
SOIL_AMENDMENT_TASK: getCompleteSoilAmendmentTaskBody,
};

const taskTypeProductsAfterCompletionActionMap = {
SOIL_AMENDMENT_TASK: {
taskProductsByTaskIdSelector: soilAmendmentTaskProductsByTaskIdSelector,
removeTaskProducts: removeSoilAmendmentTaskProducts,
},
};

export const completeTask = createAction('completeTaskSaga');

export function* completeTaskSaga({ payload: { task_id, data, returnPath } }) {
Expand All @@ -834,6 +801,7 @@ export function* completeTaskSaga({ payload: { task_id, data, returnPath } }) {
const taskData = taskTypeGetCompleteTaskBodyFunctionMap[task_translation_key]
? taskTypeGetCompleteTaskBodyFunctionMap[task_translation_key](data, taskTypeSpecificData)
: data.taskData;

try {
const result = yield call(
axios.patch,
Expand All @@ -843,16 +811,7 @@ export function* completeTaskSaga({ payload: { task_id, data, returnPath } }) {
);
if (result) {
yield put(putTaskSuccess(result.data));
if (taskTypeProductsAfterCompletionActionMap[task_translation_key]) {
const { taskProductsByTaskIdSelector, removeTaskProducts } =
taskTypeProductsAfterCompletionActionMap[task_translation_key];
const oldTaskProducts = yield select(taskProductsByTaskIdSelector(task_id));
const removedTaskProductIds = getRemovedTaskProductIds(
oldTaskProducts,
result.data[TASKTYPE_PRODUCT_MAP[task_translation_key]],
);
yield put(removeTaskProducts(removedTaskProductIds));
}

yield call(onReqSuccessSaga, {
message: i18n.t('message:TASK.COMPLETE.SUCCESS'),
pathname: returnPath ?? '/tasks',
Expand Down

This file was deleted.

14 changes: 1 addition & 13 deletions packages/webapp/src/containers/taskSlice.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ import { plantTaskEntitiesSelector } from './slice/taskSlice/plantTaskSlice';
import { transplantTaskEntitiesSelector } from './slice/taskSlice/transplantTaskSlice';
import { plantingManagementPlanEntitiesSelector } from './plantingManagementPlanSlice';
import { irrigationTaskEntitiesSelector } from './slice/taskSlice/irrigationTaskSlice';
import { soilAmendmentTaskProductEntitiesSelector } from './slice/taskSlice/soilAmendmentTaskProductSlice';
import { TASKTYPE_PRODUCT_MAP } from './Task/constants';

export const getTask = (obj) => {
const task = pick(obj, [
Expand All @@ -48,6 +46,7 @@ export const getTask = (obj) => {
'other_abandonment_reason',
'abandonment_notes',
'location_defaults',
'soil_amendment_task_products',
]);
//TODO: investigate why incomplete tasks wage_at_moment are null
if (task.wage_at_moment === null) task.wage_at_moment = 0;
Expand Down Expand Up @@ -181,7 +180,6 @@ export const taskEntitiesSelector = createSelector(
plantTaskEntitiesSelector,
transplantTaskEntitiesSelector,
plantingManagementPlanEntitiesSelector,
soilAmendmentTaskProductEntitiesSelector,
],
(
userFarmEntities,
Expand All @@ -199,7 +197,6 @@ export const taskEntitiesSelector = createSelector(
plantTaskEntities,
transplantTaskEntities,
plantingManagementPlanEntities,
soilAmendmentTaskProductEntities,
) => {
const subTaskEntities = {
...cleaningTaskEntities,
Expand All @@ -211,9 +208,6 @@ export const taskEntitiesSelector = createSelector(
...plantTaskEntities,
...transplantTaskEntities,
};
const taskProductEntities = {
...soilAmendmentTaskProductEntities,
};

const getManagementPlanByPlantingManagementPlan = ({
planting_management_plan_id,
Expand Down Expand Up @@ -251,12 +245,6 @@ export const taskEntitiesSelector = createSelector(
getManagementPlanByPlantingManagementPlan(subtask),
];
}
if (!farm_id && TASKTYPE_PRODUCT_MAP[task_translation_key]) {
const taskProducts = Object.values(taskProductEntities).filter((taskProduct) => {
return taskProduct.task_id == task_id;
});
taskEntities[task_id][TASKTYPE_PRODUCT_MAP[task_translation_key]] = taskProducts;
}
taskEntities[task_id].assignee =
userFarmEntities[userFarm.farm_id][taskEntities[task_id].assignee_user_id];
}
Expand Down
2 changes: 0 additions & 2 deletions packages/webapp/src/store/reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ import fieldWorkTaskReducer from '../containers/slice/taskSlice/fieldWorkTaskSli
import harvestTaskReducer from '../containers/slice/taskSlice/harvestTaskSlice';
import pestControlTaskReducer from '../containers/slice/taskSlice/pestControlTaskSlice';
import soilAmendmentTaskReducer from '../containers/slice/taskSlice/soilAmendmentTaskSlice';
import soilAmendmentTaskProductReducer from '../containers/slice/taskSlice/soilAmendmentTaskProductSlice';
import plantTaskReducer from '../containers/slice/taskSlice/plantTaskSlice';
import transplantTaskReducer from '../containers/slice/taskSlice/transplantTaskSlice';
import harvestUseTypeReducer from '../containers/harvestUseTypeSlice';
Expand Down Expand Up @@ -202,7 +201,6 @@ const entitiesReducer = combineReducers({
harvestTaskReducer,
pestControlTaskReducer,
soilAmendmentTaskReducer,
soilAmendmentTaskProductReducer,
plantTaskReducer,
transplantTaskReducer,
taskTypeReducer,
Expand Down

0 comments on commit 1f403fe

Please sign in to comment.