Sync to main (#26)

* Fix sign up form bug

* Add run.sh to run setup and run web app

* Output node version

* Update readme with run.sh

* Fix file upload form to handle ota_update service

* Enable file upload form

Enable error boundary to catch React errors (#7)
Fix warning for link noreferrer
Include authorization header with file upload

* Remove default localhost settings (#8)

* Remove default localhost settings
Replace with deployment settings

* Fix for upload data format

* Fix test data for last commit

* Fix json link format and remove localhost default settings (#10)

* Remove default localhost settings
Replace with deployment settings

* Fix for upload data format

* Fix test data for last commit

* Fix link data format

* Fix link json again (#12)

Use id token instead of access token

* nginx things

* Web Worker Sign Out and Use Go API (#13)

* Calculate checksum and send with file upload

* Limit file upload and display rejected file error

* Add sign in timeout

* Check auth token structure before setting
Clean up

* Use web worker timer to sign out
Remove checksum
Point to Go ota update

* Remove checksum dependency

* Use compute auth service and fix static code analyzer warnings (#15)

* Clean up formatting

* Use new compute_auth service
Implment SSO
Implement token refresh
Clean up unit tests

* Fix unit tests

* Fix auth test
Fix warnings

* Update default settings for compute_auth

* Change main UI layout and add VINs to add and upload forms (#16)

* Add new upload update package form
Add new add vehicle form
Add new side menu layout
Add new toolbar layout
Update and add unit tests

* Enable add get and add vehicles

* Integration issues with ota_update service

* Update get vehicle JSON format

* Fix related unit test
Add release notes field

* Add StatusContext to display error and status messages

* Handle api error json (#18)

* Handle api error json

* Fix get vehicles error handling
Update .env.template

* Fix signout refresh (#20)

* Merge to main (#17)

* Fix sign up form bug

* Add run.sh to run setup and run web app

* Output node version

* Update readme with run.sh

* Fix file upload form to handle ota_update service

* Enable file upload form

Enable error boundary to catch React errors (#7)
Fix warning for link noreferrer
Include authorization header with file upload

* Remove default localhost settings (#8)

* Remove default localhost settings
Replace with deployment settings

* Fix for upload data format

* Fix test data for last commit

* Fix json link format and remove localhost default settings (#10)

* Remove default localhost settings
Replace with deployment settings

* Fix for upload data format

* Fix test data for last commit

* Fix link data format

* Fix link json again (#12)

Use id token instead of access token

* nginx things

* Web Worker Sign Out and Use Go API (#13)

* Calculate checksum and send with file upload

* Limit file upload and display rejected file error

* Add sign in timeout

* Check auth token structure before setting
Clean up

* Use web worker timer to sign out
Remove checksum
Point to Go ota update

* Remove checksum dependency

* Use compute auth service and fix static code analyzer warnings (#15)

* Clean up formatting

* Use new compute_auth service
Implment SSO
Implement token refresh
Clean up unit tests

* Fix unit tests

* Fix auth test
Fix warnings

* Update default settings for compute_auth

* Change main UI layout and add VINs to add and upload forms (#16)

* Add new upload update package form
Add new add vehicle form
Add new side menu layout
Add new toolbar layout
Update and add unit tests

* Enable add get and add vehicles

* Integration issues with ota_update service

* Update get vehicle JSON format

* Fix related unit test
Add release notes field

* Add StatusContext to display error and status messages

* Handle api error json (#18)

* Handle api error json

* Fix get vehicles error handling
Update .env.template

Co-authored-by: Rafi Greenberg <rgreenberg@fiskerinc.com>

* Fix sign out and refresh

* Check for bad json

Co-authored-by: Rafi Greenberg <rgreenberg@fiskerinc.com>

* Add role checks (#21)

* Add role checks

* Remove moved Roles enum

* Add package updates, car updates, and vehicle screens (#25)

Co-authored-by: Rafi Greenberg <rgreenberg@fiskerinc.com>
This commit is contained in:
John Wu
2021-04-01 09:16:38 -07:00
committed by GitHub
parent 30155887cb
commit 0f19a62b32
43 changed files with 3243 additions and 1105 deletions

View File

@@ -0,0 +1,131 @@
import React, { useContext, useState } from "react";
import api from "../../services/updates";
const UpdatesContext = React.createContext();
export const UpdatesProvider = ({ children }) => {
const [busy, setBusy] = useState(false);
const [packages, setPackages] = useState([]);
const [carUpdates, setCarUpdates] = useState([]);
const [totalPackages, setTotalPackages] = useState(0);
const [totalCarUpdates, setTotalCarUpdates] = useState(0);
const getPackages = async (search, token) => {
let result;
try {
setBusy(true);
result = await api.getPackages(search, token);
if (result.error)
throw new Error(`Get packages error. ${result.message}`);
setPackages(result.data);
if (search && search.offset === 0 && result.total) {
setTotalPackages(result.total);
}
} finally {
setBusy(false);
}
return result;
};
const updatePackage = async (data, token) => {
let result = null;
try {
setBusy(true);
validateUpdatePackage(data);
result = await api.updatePackage(data, token);
if (result.error)
throw new Error(`Update package error. ${result.message}`);
} finally {
setBusy(false);
}
return result;
};
const createCarUpdates = async (data, token) => {
let result;
try {
setBusy(true);
validateCreateCarUpdates(data);
result = await api.createCarUpdates(data, token);
if (result.error)
throw new Error(`Create car updates error. ${result.message}`);
} finally {
setBusy(false);
}
return result;
};
const getCarUpdates = async (search, token) => {
let result;
try {
setBusy(true);
result = await api.getCarUpdates(search, token);
if (result.error)
throw new Error(`Get packages error. ${result.message}`);
setCarUpdates(result.data);
if (search && search.offset === 0 && result.total) {
setTotalCarUpdates(result.total);
}
} finally {
setBusy(false);
}
return result;
};
return (
<UpdatesContext.Provider
value={{
busy,
packages,
totalPackages,
carUpdates,
totalCarUpdates,
getPackages,
updatePackage,
createCarUpdates,
getCarUpdates,
}}
>
{children}
</UpdatesContext.Provider>
);
};
export const useUpdatesContext = () => useContext(UpdatesContext);
const validateUpdatePackage = (data) => {
if (data === null) {
throw new Error("No update data");
}
if (!data.package_name) {
throw new Error("Package name required");
}
if (!data.version) {
throw new Error("Version required");
}
};
const validateCreateCarUpdates = (data) => {
if (data === null) {
throw new Error("No car update data");
}
if (!data.package_id || data.package_id === 0) {
throw new Error("Package id required");
}
if (!data.car_ids || data.car_ids.length === 0) {
throw new Error("Car ids required");
}
};