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:
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=bfd1cccc-213a-4f31-b3d1-6e685976aec8
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=
|
REACT_APP_ECCKEY_ENV=
|
||||||
|
|||||||
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=bfd1cccc-213a-4f31-b3d1-6e685976aec8
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=9af2d8c0-c26d-4d6d-bbd1-ac53cbd37ebc
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=
|
REACT_APP_ECCKEY_ENV=
|
||||||
|
|||||||
1
.env.dev
1
.env.dev
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=stage,prod
|
REACT_APP_ECCKEY_ENV=stage,prod
|
||||||
|
|||||||
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=dev,stage,prod
|
REACT_APP_ECCKEY_ENV=dev,stage,prod
|
||||||
|
|||||||
1
.env.prd
1
.env.prd
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=stage
|
REACT_APP_ECCKEY_ENV=stage
|
||||||
|
|||||||
1
.env.stg
1
.env.stg
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=prod
|
REACT_APP_ECCKEY_ENV=prod
|
||||||
|
|||||||
@@ -14,4 +14,5 @@ REACT_APP_ROLE_DELETE=8f78dce7-f5f9-4033-a10c-c9c7408bfcfe
|
|||||||
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
REACT_APP_ROLE_GENERATE_CERTIFICATE=746f34b0-9ba0-4b5d-8d84-0256a9c8e390
|
||||||
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
REACT_APP_ROLE_MANUFACTURE=3412e11a-a2d1-4355-be3e-ef9aa5065b69
|
||||||
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
REACT_APP_ROLE_SUPPLIER_APPROVER=a6c9805e-80b2-42b2-bfbb-9df52e5504d8
|
||||||
|
REACT_APP_ROLE_MANIFEST_MIGRATION=42798c8a-9fa7-4fb4-82c0-9582cabe364f
|
||||||
REACT_APP_ECCKEY_ENV=dev,stage,prod
|
REACT_APP_ECCKEY_ENV=dev,stage,prod
|
||||||
|
|||||||
@@ -80,12 +80,28 @@ export const ManifestsProvider = ({ children }) => {
|
|||||||
return result;
|
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 (
|
return (
|
||||||
<ManifestsContext.Provider
|
<ManifestsContext.Provider
|
||||||
value={{
|
value={{
|
||||||
busy,
|
busy,
|
||||||
manifests,
|
manifests,
|
||||||
totalManifests,
|
totalManifests,
|
||||||
|
migrateManifest,
|
||||||
updateManifest,
|
updateManifest,
|
||||||
getManifest,
|
getManifest,
|
||||||
getManifests,
|
getManifests,
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import { ManifestsProvider, useManifestsContext } from "../../Contexts/Manifests
|
|||||||
import { useStatusContext } from "../../Contexts/StatusContext";
|
import { useStatusContext } from "../../Contexts/StatusContext";
|
||||||
import { useUserContext } from "../../Contexts/UserContext";
|
import { useUserContext } from "../../Contexts/UserContext";
|
||||||
import { DropDownList } from "../../Controls/DropDownList";
|
import { DropDownList } from "../../Controls/DropDownList";
|
||||||
|
import { RoleWrap } from "../../Controls/RoleWrap";
|
||||||
|
import { Permissions } from "../../../utils/roles";
|
||||||
import useStyles from "../../useStyles";
|
import useStyles from "../../useStyles";
|
||||||
|
|
||||||
const manifestTypes = [
|
const manifestTypes = [
|
||||||
@@ -37,11 +39,13 @@ const MainForm = () => {
|
|||||||
const [manifest, setManifest] = useState(null);
|
const [manifest, setManifest] = useState(null);
|
||||||
const [redirect, setRedirect] = useState(null);
|
const [redirect, setRedirect] = useState(null);
|
||||||
|
|
||||||
const { getManifest, busy, updateManifest } = useManifestsContext();
|
const { getManifest, busy, migrateManifest, updateManifest } = useManifestsContext();
|
||||||
const {
|
const {
|
||||||
token: {
|
token: {
|
||||||
idToken: { jwtToken: token },
|
idToken: { jwtToken: token },
|
||||||
},
|
},
|
||||||
|
groups,
|
||||||
|
providers,
|
||||||
} = useUserContext();
|
} = useUserContext();
|
||||||
|
|
||||||
const { setMessage, setTitle, setSitePath } = useStatusContext();
|
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(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
@@ -179,6 +194,24 @@ const MainForm = () => {
|
|||||||
>
|
>
|
||||||
{busy ? "Updating..." : "Update"}
|
{busy ? "Updating..." : "Update"}
|
||||||
</Button>
|
</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>
|
</FormControl>
|
||||||
</div>
|
</div>
|
||||||
@@ -191,4 +224,4 @@ const ManifestUpdate = () => (
|
|||||||
</ManifestsProvider>
|
</ManifestsProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
export default ManifestUpdate;
|
export default ManifestUpdate;
|
||||||
|
|||||||
@@ -78,6 +78,17 @@ const manifestsAPI = {
|
|||||||
})
|
})
|
||||||
.then(fetchRespHandler)
|
.then(fetchRespHandler)
|
||||||
.catch(errorHandler),
|
.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;
|
export default manifestsAPI;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export const Roles = {
|
|||||||
APPROVESUPPLIERS: process.env.REACT_APP_ROLE_SUPPLIER_APPROVER,
|
APPROVESUPPLIERS: process.env.REACT_APP_ROLE_SUPPLIER_APPROVER,
|
||||||
MANUFACTURE: process.env.REACT_APP_ROLE_MANUFACTURE,
|
MANUFACTURE: process.env.REACT_APP_ROLE_MANUFACTURE,
|
||||||
MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID,
|
MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID,
|
||||||
|
MANIFEST_MIGRATION: process.env.REACT_APP_ROLE_MANIFEST_MIGRATION
|
||||||
};
|
};
|
||||||
|
|
||||||
export const Providers = {
|
export const Providers = {
|
||||||
@@ -94,4 +95,7 @@ export const Permissions = {
|
|||||||
[Providers.FISKER_QA]: [Roles.MANUFACTURE],
|
[Providers.FISKER_QA]: [Roles.MANUFACTURE],
|
||||||
[Providers.MAGNA]: [Roles.MAGNAGROUP],
|
[Providers.MAGNA]: [Roles.MAGNAGROUP],
|
||||||
},
|
},
|
||||||
|
ManifestMigration: {
|
||||||
|
[Providers.FISKER]: [Roles.MANIFEST_MIGRATION]
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user