CEC-4126-update-manifest-migrate-button (#320)

* CEC-4126-update-manifest-migrate-button

* remove comment

---------

Co-authored-by: John Wu <76966357+jwu-fisker@users.noreply.github.com>
This commit is contained in:
das31
2023-04-25 17:36:25 -04:00
committed by GitHub
parent 7b061c0282
commit e0315ba76e
11 changed files with 73 additions and 2 deletions

View File

@@ -80,12 +80,28 @@ export const ManifestsProvider = ({ children }) => {
return result;
};
const migrateManifest = async (package_id, token) => {
let result;
try{
setBusy(true)
result = await api.migrateManifest(package_id, token)
if(result.error)
throw new Error(`failed to migrate manifest. ${result.message}`);
} finally {
setBusy(false)
}
return result
}
return (
<ManifestsContext.Provider
value={{
busy,
manifests,
totalManifests,
migrateManifest,
updateManifest,
getManifest,
getManifests,

View File

@@ -7,6 +7,8 @@ import { ManifestsProvider, useManifestsContext } from "../../Contexts/Manifests
import { useStatusContext } from "../../Contexts/StatusContext";
import { useUserContext } from "../../Contexts/UserContext";
import { DropDownList } from "../../Controls/DropDownList";
import { RoleWrap } from "../../Controls/RoleWrap";
import { Permissions } from "../../../utils/roles";
import useStyles from "../../useStyles";
const manifestTypes = [
@@ -37,11 +39,13 @@ const MainForm = () => {
const [manifest, setManifest] = useState(null);
const [redirect, setRedirect] = useState(null);
const { getManifest, busy, updateManifest } = useManifestsContext();
const { getManifest, busy, migrateManifest, updateManifest } = useManifestsContext();
const {
token: {
idToken: { jwtToken: token },
},
groups,
providers,
} = useUserContext();
const { setMessage, setTitle, setSitePath } = useStatusContext();
@@ -86,6 +90,17 @@ const MainForm = () => {
}
}
const manifestMigrate = async (e) => {
e.preventDefault();
try{
const result = await migrateManifest(manifest_id, token)
if (!result || result.error) return;
setMessage(`Manifest Migrated ${manifest_id}`)
} catch(e) {
setMessage(`Failed to update manifest ${manifest_id}`)
}
}
useEffect(() => {
(async () => {
try {
@@ -179,6 +194,24 @@ const MainForm = () => {
>
{busy ? "Updating..." : "Update"}
</Button>
<RoleWrap
groups={groups}
providers={providers}
rolesPerProvider={Permissions.ManifestMigration}
>
<Button
type="button"
aria-label="migrate manifest"
disabled={busy || manifest == null}
fullWidth
variant="contained"
color="secondary"
className={classes.submit}
onClick={manifestMigrate}
>
{busy ? "Migrating..." : "Migrate"}
</Button>
</RoleWrap>
</FormControl>
</div>
@@ -191,4 +224,4 @@ const ManifestUpdate = () => (
</ManifestsProvider>
);
export default ManifestUpdate;
export default ManifestUpdate;

View File

@@ -78,6 +78,17 @@ const manifestsAPI = {
})
.then(fetchRespHandler)
.catch(errorHandler),
migrateManifest: async (manifest_id, token) =>
fetch(`${API_ENDPOINT}/manifestmigrate/${manifest_id}`,{
method: "POST",
headers: Object.assign(
{ "Content-Type": "application/json" },
getAuthHeaderOptions(token)
),
})
.then(fetchRespHandler)
.catch(errorHandler),
};
export default manifestsAPI;

View File

@@ -8,6 +8,7 @@ export const Roles = {
APPROVESUPPLIERS: process.env.REACT_APP_ROLE_SUPPLIER_APPROVER,
MANUFACTURE: process.env.REACT_APP_ROLE_MANUFACTURE,
MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID,
MANIFEST_MIGRATION: process.env.REACT_APP_ROLE_MANIFEST_MIGRATION
};
export const Providers = {
@@ -94,4 +95,7 @@ export const Permissions = {
[Providers.FISKER_QA]: [Roles.MANUFACTURE],
[Providers.MAGNA]: [Roles.MAGNAGROUP],
},
ManifestMigration: {
[Providers.FISKER]: [Roles.MANIFEST_MIGRATION]
}
};