Skip to content
Snippets Groups Projects
Commit b04d060f authored by hannahl8's avatar hannahl8
Browse files

update refreshDiscussions

parent bd704e83
No related branches found
No related tags found
No related merge requests found
Pipeline #10828 failed
......@@ -7,7 +7,7 @@ import {NO_TOKEN} from "../utils.ts";
interface DiscussionContextType {
discussions: DiscussionItem[];
filteredDiscussions: DiscussionItem[];
refreshDiscussions: () => void;
refreshDiscussions: (labName: string) => void;
sortDiscussions: (criteria: string) => void;
updateNumberOfComments: (discussionId: number, increment?: number) => void;
filterDiscussions: (labName: string) => void;
......@@ -44,13 +44,19 @@ export const DiscussionProvider = ({children}: React.PropsWithChildren) => {
}, [token]);
const refreshDiscussions = async () => {
const refreshDiscussions = async (labName: string = ""): Promise<void> => {
if (token === NO_TOKEN) {
return;
}
try {
const updatedDiscussions = await fetchDiscussions(token);
setDiscussions(updatedDiscussions); // Update discussions with fetched data
if (labName) {
const filtered = updatedDiscussions.filter(discussion => discussion.labName === labName);
setFilteredDiscussions(filtered);
} else {
setFilteredDiscussions(updatedDiscussions);
}
} catch (error) {
console.error('Error refreshing discussions:', error);
}
......@@ -91,7 +97,14 @@ export const DiscussionProvider = ({children}: React.PropsWithChildren) => {
return (
<DiscussionContext.Provider value={{discussions, filteredDiscussions, refreshDiscussions, sortDiscussions, updateNumberOfComments, filterDiscussions}}>
<DiscussionContext.Provider value={{
discussions,
filteredDiscussions,
refreshDiscussions,
sortDiscussions,
updateNumberOfComments,
filterDiscussions
}}>
{children}
</DiscussionContext.Provider>
);
......
......@@ -15,7 +15,13 @@ export default function DiscussionPage() {
const {token, role} = useUserContext();
const {student} = useStudentUserContext();
const {labs} = useResearchLabContext();
const {discussions, filteredDiscussions, refreshDiscussions, sortDiscussions, filterDiscussions} = useDiscussionContext();
const {
discussions,
filteredDiscussions,
refreshDiscussions,
sortDiscussions,
filterDiscussions
} = useDiscussionContext();
const [currentDiscussions, setCurrentDiscussions] = useState(discussions);
const [currentLab, setCurrentLab] = useState("");
......@@ -29,38 +35,33 @@ export default function DiscussionPage() {
setCurrentDiscussions(filteredDiscussions);
}, [filteredDiscussions]);
const togglePopup = () => {
setShowPopup(!showPopup);
};
const handleCreate = async (formData: { title: string; content: string; lab: string }) => {
const discussionItem = {
title: formData.title,
content: formData.content,
labName: formData.lab,
student: student,
};
const discussionItem = {
title: formData.title,
content: formData.content,
labName: formData.lab,
student: student,
};
axios.post(`${discussionsAPI}/add`, discussionItem, {
try {
await axios.post(`${discussionsAPI}/add`, discussionItem, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
.then(response => {
console.log('Discussion created successfully:', response.data);
refreshDiscussions(); // Refresh discussions after successful creation
})
.catch(error => {
console.error('Error creating discussion:', error);
});
togglePopup();
filterDiscussions(currentLab);
setCurrentDiscussions(filteredDiscussions);
};
});
console.log('Discussion created successfully');
refreshDiscussions(currentLab); // Pass the current lab filter to refreshDiscussions
} catch (error) {
console.error('Error creating discussion:', error);
}
togglePopup();
};
const handleSortChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
sortDiscussions(event.target.value); // Sort discussions based on selected criteria
......@@ -85,7 +86,7 @@ export default function DiscussionPage() {
<option value="highest">Comments (Most to Fewest)</option>
<option value="lowest">Comments (Fewest to Most)</option>
</select>
</div>
<div className='sort-dropdown'>
<label htmlFor="lab" className='secondary-button'>Lab Filter:</label>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment