Files
ota-admin-portal/src/components/Contexts/IssueContext.jsx
John Wu b80a2cb8bf Release/0.0.3 to main (#254)
* CEC-2628 - Display IP in digital twin in portal (#251)

* CEC-3453 Update security dll instructions (#252)

* CEC-2752-Add-Mobile-Issue-Tracker (#250)

* first commit

* removed comments

* remove more comments

* fix build issues

* fix unused vars

* update snapshot

* fix test

* Fix connect ECONNREFUSED 127.0.0.1:80

* Test Magna side menu

* attempt to pass test

* fix test

* remove comments

* fix some code smells

* fix test

* resolve comments

* fix bug

* resolved comments

* resolve comments

* resolve comments

* update snapshot

* resolved comments

Co-authored-by: jwu-fisker <jwu@fiskerinc.com>

* Cec 2752 small fix (#253)

* first commit

* removed comments

* remove more comments

* fix build issues

* fix unused vars

* update snapshot

* fix test

* Fix connect ECONNREFUSED 127.0.0.1:80

* Test Magna side menu

* attempt to pass test

* fix test

* remove comments

* fix some code smells

* fix test

* resolve comments

* fix bug

* resolved comments

* resolve comments

* resolve comments

* update snapshot

* resolved comments

* small fix

Co-authored-by: jwu-fisker <jwu@fiskerinc.com>

Co-authored-by: Paul Adamsen <117673433+pauladamseniii@users.noreply.github.com>
Co-authored-by: das31 <31259710+das31@users.noreply.github.com>
2023-01-10 18:30:39 -08:00

56 lines
1.5 KiB
JavaScript

import React, { useContext, useState, useMemo, useCallback } from "react";
import api from "../../services/issueAPI";
const IssueContext = React.createContext();
export const IssueProvider = ({ children }) => {
const [issue, setIssue] = useState({});
const [issues, setIssues] = useState([]);
const [totalIssues, setTotalIssues] = useState(0);
const getIssue = useCallback(async (id, token) => {
const result = await api.getIssue(id, token);
if (result.error) throw new Error(`Get issue error. ${result.message}`);
setIssue(result.data ?? []);
return result;
}, []);
const getIssues = useCallback(async (search,token) => {
const result = await api.getIssues(search,token);
if (result.error) {
setIssues([]);
throw new Error(`Get issues error. ${result.message}`);
}
setIssues(result.data ?? []);
if (result.total) {
setTotalIssues(result.total);
}
}, []);
const deleteIssue = useCallback(async (id, token) => {
const result = await api.deleteIssue(id, token);
if (result.error)
throw new Error(`Delete issue error. ${result.message}`);
return result;
}, []);
const value = useMemo(() => ({
totalIssues,
issue,
issues,
deleteIssue,
getIssue,
getIssues,
}), [totalIssues, issue, issues, deleteIssue, getIssue, getIssues]);
return (
<IssueContext.Provider value={value}>
{children}
</IssueContext.Provider>
);
};
export const useIssueContext = () => useContext(IssueContext);