Skip to content

Commit cc82294

Browse files
committed
Request subtasks recurringly (fix bug)
* Implement new requestHelpers module with new useRecurringRequest custom hook * Implement useRecurringRequest - custom hook for firing a request every 3 seconds * Use in SubtaskList component * Fixes bug that appeared when jotting list was made recurringly
1 parent c126ee1 commit cc82294

2 files changed

Lines changed: 25 additions & 9 deletions

File tree

components/Jotting/subtaskList.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useEffect, useState } from "react";
2+
import { useRecurringRequest } from "../../libs/Datastore/RequestHelpers";
23
import { deleteTask, getSubtasks } from "../../libs/Datastore/requests";
34
import CircularProgress from "../CircularProgress/circularProgress";
45
import FetchError from "../FetchError/fetchError";
@@ -13,15 +14,16 @@ import jotting from "./jotting.module.css";
1314
export default function SubtaskList({ id, subtasksState }) {
1415
const [subtasks, setSubtasks] = subtasksState;
1516

16-
// componentDidMount() - initally request subtasks
17-
useEffect(() => {
18-
(async function () {
19-
try {
20-
const initialSubtasks = await getSubtasks(id);
21-
setSubtasks(initialSubtasks);
22-
} catch {}
23-
})();
24-
}, []);
17+
// componentDidUpdate() - recur subtasks
18+
useRecurringRequest(() => {
19+
getSubtasks(id)
20+
.then((response) => {
21+
if (response != subtasks) {
22+
setSubtasks(response);
23+
}
24+
})
25+
.catch(() => {});
26+
});
2527

2628
const handleRemoveClick = (e) => {
2729
const itemId = e.target.parentElement.id.substring(2);

libs/Datastore/requestHelpers.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { useEffect } from "react";
2+
3+
/**
4+
* Custom hook for firing the same request every 3 seconds
5+
*/
6+
export function useRecurringRequest(makeRequest, interval = 3000) {
7+
useEffect(() => {
8+
const updateData = setInterval(() => {
9+
makeRequest();
10+
}, interval);
11+
12+
return () => clearInterval(updateData);
13+
}, []);
14+
}

0 commit comments

Comments
 (0)