Store in local storage what api & version were selected (and re-select them0

This commit is contained in:
2023-06-21 12:05:03 -05:00
parent 9cbf9f4dcf
commit 97f1ac2263

View File

@ -47,8 +47,6 @@ TableDeveloperView.defaultProps =
function TableDeveloperView({table}: Props): JSX.Element function TableDeveloperView({table}: Props): JSX.Element
{ {
const {id} = useParams();
const {getAccessTokenSilently} = useAuth0(); const {getAccessTokenSilently} = useAuth0();
const [accessToken, setAccessToken] = useState(null as string); const [accessToken, setAccessToken] = useState(null as string);
@ -70,6 +68,33 @@ function TableDeveloperView({table}: Props): JSX.Element
setAccessToken(accessToken); setAccessToken(accessToken);
})(); })();
const LAST_API_NAME_LS_KEY = "qqq.tableDeveloperView.lastApiName";
const LAST_API_VERSION_LS_KEY = "qqq.tableDeveloperView.lastApiVersion";
const lastSelectedApiName = localStorage.getItem(LAST_API_NAME_LS_KEY);
const lastSelectedApiVersion = localStorage.getItem(LAST_API_VERSION_LS_KEY);
function selectVersionAfterApiIsChanged(versionsJson: any)
{
if (versionsJson.currentVersion)
{
setSelectedVersion(versionsJson.currentVersion);
localStorage.setItem(LAST_API_VERSION_LS_KEY, versionsJson.currentVersion);
}
if (lastSelectedApiVersion)
{
for (let i = 0; i < versionsJson.supportedVersions.length; i++)
{
if (versionsJson.supportedVersions[i] == lastSelectedApiVersion)
{
setSelectedVersion(lastSelectedApiVersion);
localStorage.setItem(LAST_API_VERSION_LS_KEY, lastSelectedApiVersion);
}
}
}
}
if (!asyncLoadInited) if (!asyncLoadInited)
{ {
setAsyncLoadInited(true); setAsyncLoadInited(true);
@ -90,11 +115,14 @@ function TableDeveloperView({table}: Props): JSX.Element
setPageHeader(tableMetaData.label + " Developer Mode"); setPageHeader(tableMetaData.label + " Developer Mode");
///////////////////////////////
// fetch apis for this table //
///////////////////////////////
const apisResponse = await fetch("/apis.json?tableName=" + tableName); const apisResponse = await fetch("/apis.json?tableName=" + tableName);
const apisJson = await apisResponse.json(); const apisJson = await apisResponse.json();
console.log(apisJson); console.log(apisJson);
if(!apisJson["apis"] || apisJson["apis"].length == 0) if (!apisJson["apis"] || apisJson["apis"].length == 0)
{ {
setNoApis(true); setNoApis(true);
return; return;
@ -102,18 +130,36 @@ function TableDeveloperView({table}: Props): JSX.Element
setSupportedApis(apisJson["apis"]); setSupportedApis(apisJson["apis"]);
const selectedApi = apisJson["apis"][0]; ////////////////////////////////////////////////////////////////////////////////////////////////////////
// either select the 0th api, or, if there was one previously stored in local storage, use it instead //
////////////////////////////////////////////////////////////////////////////////////////////////////////
let selectedApi = apisJson["apis"][0];
if (lastSelectedApiName)
{
for (let i = 0; i < apisJson["apis"].length; i++)
{
if (apisJson["apis"][i].name == lastSelectedApiName)
{
selectedApi = apisJson["apis"][i];
break;
}
}
}
localStorage.setItem(LAST_API_NAME_LS_KEY, selectedApi.name);
setSelectedApi(selectedApi); setSelectedApi(selectedApi);
////////////////////////////////
// fetch versions for ths api //
////////////////////////////////
const versionsResponse = await fetch(selectedApi["path"] + "versions.json"); const versionsResponse = await fetch(selectedApi["path"] + "versions.json");
const versionsJson = await versionsResponse.json(); const versionsJson = await versionsResponse.json();
console.log(versionsJson); console.log(versionsJson);
setSupportedVersions(versionsJson.supportedVersions); setSupportedVersions(versionsJson.supportedVersions);
if (versionsJson.currentVersion)
{ ///////////////////////////////////////////////////////////////////////////////////////////////
setSelectedVersion(versionsJson.currentVersion); // set the selected version, either to current, or to one from local storage, if still valid //
} ///////////////////////////////////////////////////////////////////////////////////////////////
selectVersionAfterApiIsChanged(versionsJson);
})(); })();
} }
@ -129,16 +175,15 @@ function TableDeveloperView({table}: Props): JSX.Element
{ {
const selectedApi = supportedApis[i]; const selectedApi = supportedApis[i];
setSelectedApi(selectedApi); setSelectedApi(selectedApi);
localStorage.setItem(LAST_API_NAME_LS_KEY, selectedApi.name);
const versionsResponse = await fetch(selectedApi["path"] + "versions.json"); const versionsResponse = await fetch(selectedApi["path"] + "versions.json");
const versionsJson = await versionsResponse.json(); const versionsJson = await versionsResponse.json();
console.log(versionsJson); console.log(versionsJson);
setSupportedVersions(versionsJson.supportedVersions); setSupportedVersions(versionsJson.supportedVersions);
if (versionsJson.currentVersion)
{ selectVersionAfterApiIsChanged(versionsJson);
setSelectedVersion(versionsJson.currentVersion);
}
break; break;
} }
} }
@ -147,6 +192,7 @@ function TableDeveloperView({table}: Props): JSX.Element
const selectVersion = (event: SelectChangeEvent) => const selectVersion = (event: SelectChangeEvent) =>
{ {
setSelectedVersion(event.target.value); setSelectedVersion(event.target.value);
localStorage.setItem(LAST_API_VERSION_LS_KEY, event.target.value);
}; };
return ( return (
@ -207,7 +253,7 @@ function TableDeveloperView({table}: Props): JSX.Element
persist-auth={true} persist-auth={true}
allow-server-selection={false} allow-server-selection={false}
allow-spec-file-download={true} allow-spec-file-download={true}
sort-endpoints-by="method" sort-endpoints-by="none"
schema-description-expanded={true} schema-description-expanded={true}
css-file={"/api/rapi-doc.css"} css-file={"/api/rapi-doc.css"}
css-classes={"qqq-rapi-doc"} css-classes={"qqq-rapi-doc"}