Skip to content

Instantly share code, notes, and snippets.

@Harasz
Created September 1, 2021 12:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Harasz/1ed0c06731005bbac784f804b88d76a7 to your computer and use it in GitHub Desktop.
Save Harasz/1ed0c06731005bbac784f804b88d76a7 to your computer and use it in GitHub Desktop.
const useSettingsManagement = () => {
const app = useAppBridge();
const [isLoading, setIsLoading] = useState(true);
const [isSetLoading, setIsSetLoading] = useState(false);
const [settingsObj, setSettingsObj] = useState(undefined);
const [error, setError] = useState(undefined);
useEffect(() => {
getSettings();
}, []);
const getSettings = async () => {
setIsLoading(true);
try {
const token = await getSessionToken(app);
const res = await fetch("/settings", {
headers: { Authorization: `Bearer ${token}` },
});
const responseData = await res.json();
if (responseData.status === "EMPTY_SETTINGS") {
return;
}
if (responseData.status === "OK_SETTINGS") {
setSettingsObj(responseData.data);
return;
}
throw Error("Unknown settings status");
} catch (err) {
setError(err.message);
} finally {
setIsLoading(false);
}
};
const setSettings = async (productId) => {
setIsSetLoading(true);
try {
const token = await getSessionToken(app);
const res = await fetch("/settings", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-type": "text/plain",
},
body: JSON.stringify({ productId }),
});
const responseData = await res.json();
if (responseData.status === "OK_SETTINGS") {
setSettingsObj(responseData.data);
}
throw Error("Unknown settings status");
} catch (err) {
setError(err.message);
} finally {
setIsSetLoading(false);
}
};
const clearError = () => setError(undefined);
return {
settingsObj,
isLoading,
error,
isSetLoading,
setSettings,
clearError,
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment