calcom/packages/app-store/vital/components/InstallAppButton.tsx
alannnc 8c9096b55b
Vital App - Auto reschedule based on health data (#2500)
* Add vital integration

* Tidy up client_user_id creation

* Rename vital app to vitalother to follow name rules

* Added env var

* App vital reschedule

* Fix on app structure and api calls

* Implemented user identification from webhook

* WIP fix api call and read me

* Save vital settings via api

* Now saving userVitalSettings and trigger reschedule on selected param

* Added translations

* Fix type for vitalSettings

* Using api to get env vars required for url, fix display of vital settings

* Fix hours placeholder, translation not working

* Renames vital app

* Update seed-app-store.ts

* Update package.json

* Update yarn.lock

* Refactored env variables

* Update README.md

* Migrates to api_keys

* Extracts AppConfiguration

* vitalClient fixes

* Update index.ts

* Update metadata.ts

* Update index.ts

* Update metadata.ts

* Added namespace vital for translations

Co-authored-by: Maitham <maithamdib@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-05-06 17:21:30 +00:00

39 lines
994 B
TypeScript

import { useState } from "react";
import { InstallAppButtonProps } from "../../types";
export default function InstallAppButton(props: InstallAppButtonProps) {
const getLinkToken = async () => {
const res = await fetch("/api/integrations/vital/token", {
method: "POST",
body: JSON.stringify({}),
headers: {
"Content-Type": "application/json",
},
});
if (!res.ok) {
throw new Error("Failed to get link token");
}
return await res.json();
};
const [loading, setLoading] = useState(false);
return (
<>
{props.render({
onClick() {
setLoading(true);
getLinkToken()
.then((data) => {
setLoading(false);
window.open(`${data.url}&token=${data.token}`, "_self");
})
.catch((error) => {
setLoading(false);
console.error(error);
});
},
loading: loading,
})}
</>
);
}