Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions src/components/ConfigureHealthFacilityForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { GenerateScanAndShareQR } from "./GenerateScanAndShareQR";
import { HealthFacility } from "@/types/healthFacility";
import { I18NNAMESPACE } from "@/lib/constants";
import { Input } from "@/components/ui/input";
import { Meta } from "@/types/meta";
import { apis } from "@/apis";
import { toast } from "@/lib/utils";
import { useForm } from "react-hook-form";
Expand All @@ -34,6 +35,7 @@ import { zodResolver } from "@hookform/resolvers/zod";
type ConfigureHealthFacilityFormProps = {
facilityId: string;
onSuccess?: (data: HealthFacility) => void;
meta?: Meta;
};

const configureHealthFacilityFormSchema = z.object({
Expand All @@ -44,9 +46,11 @@ type ConfigureHealthFacilityFormValues = z.infer<
typeof configureHealthFacilityFormSchema
>;

export const ConfigureHealthFacilityForm: FC<
ConfigureHealthFacilityFormProps
> = ({ facilityId, onSuccess }) => {
export const ConfigureHealthFacilityForm: FC<ConfigureHealthFacilityFormProps> = ({
facilityId,
onSuccess,
meta,
}) => {
const { t } = useTranslation(I18NNAMESPACE);

const { data: healthFacility, refetch } = useQuery({
Expand Down Expand Up @@ -221,7 +225,10 @@ export const ConfigureHealthFacilityForm: FC<
</Form>

{healthFacility && (
<GenerateScanAndShareQR healthFacilityId={healthFacility.hf_id} />
<GenerateScanAndShareQR
healthFacilityId={healthFacility.hf_id}
scanAndShareUrl={meta?.config?.scanAndShareUrl}
/>
)}
</div>
);
Expand Down
7 changes: 4 additions & 3 deletions src/components/GenerateScanAndShareQR.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import { Button } from "./ui/button";
import { I18NNAMESPACE } from "@/lib/constants";
import { Input } from "@/components/ui/input";
import { QRCodeSVG } from "qrcode.react";
import { scanAndShareUrl } from "@/config";
import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { z } from "zod";
import { zodResolver } from "@hookform/resolvers/zod";

type GenerateScanAndShareQRProps = {
healthFacilityId: string;
scanAndShareUrl?: string;
};

const scanAndShareQrFormSchema = z.object({
Expand All @@ -29,6 +29,7 @@ const scanAndShareQrFormSchema = z.object({

export const GenerateScanAndShareQR: FC<GenerateScanAndShareQRProps> = ({
healthFacilityId,
scanAndShareUrl,
}) => {
const { t } = useTranslation(I18NNAMESPACE);

Expand Down Expand Up @@ -84,7 +85,7 @@ export const GenerateScanAndShareQR: FC<GenerateScanAndShareQRProps> = ({
document.body.removeChild(downloadLink);
};

function onSubmit(_values: z.infer<typeof scanAndShareQrFormSchema>) {
function onSubmit() {
downloadQR();
}

Expand Down Expand Up @@ -135,7 +136,7 @@ export const GenerateScanAndShareQR: FC<GenerateScanAndShareQRProps> = ({
/>
</form>

{!!scanAndShareQrForm.watch("counterName") && (
{!!scanAndShareQrForm.watch("counterName") && scanAndShareQrValue && (
<div className="grid gap-3 items-center justify-center w-full">
<QRCodeSVG
value={scanAndShareQrValue}
Expand Down
8 changes: 5 additions & 3 deletions src/components/LinkAbhaNumber/CreateWithAadhaar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import { QRCodeSVG } from "qrcode.react";
import { Textarea } from "@/components/ui/textarea";
import { apis } from "@/apis";
import { cn } from "@/lib/utils";
import { faceAuthUrl } from "@/config";
import { toast } from "@/lib/utils";
import { useForm } from "react-hook-form";
import { useLinkAbhaNumberContext } from ".";
Expand Down Expand Up @@ -168,6 +167,8 @@ const EnterAadhaar: FC<EnterAadhaarProps> = ({ setMemory, goTo }) => {
const { t } = useTranslation(I18NNAMESPACE);
const { healthFacility, currentUser } = useLinkAbhaNumberContext();

const faceAuthUrl = window.__CARE_PLUGIN_RUNTIME__?.meta?.care_abdm_fe?.config?.faceAuthUrl;

const form = useForm<EnterAadhaarFormValues>({
resolver: zodResolver(enterAadhaarFormSchema),
defaultValues: {
Expand Down Expand Up @@ -342,7 +343,7 @@ const EnterAadhaar: FC<EnterAadhaarProps> = ({ setMemory, goTo }) => {
>
{t("verify_with_bio")}
</Button>
<Button
{faceAuthUrl && <Button
type="button"
variant="default"
disabled={!form.formState.isValid}
Expand All @@ -358,7 +359,7 @@ const EnterAadhaar: FC<EnterAadhaarProps> = ({ setMemory, goTo }) => {
className="w-full"
>
{t("verify_with_face")}
</Button>
</Button>}
</div>
</form>
</Form>
Expand Down Expand Up @@ -894,6 +895,7 @@ const VerifyAadhaarWithFace: FC<VerifyAadhaarWithFaceProps> = ({
}) => {
const { t } = useTranslation(I18NNAMESPACE);
const [isPolling, setIsPolling] = useState(false);
const faceAuthUrl = window?.__CARE_PLUGIN_RUNTIME__?.meta?.care_abdm_fe?.config?.faceAuthUrl;

const form = useForm<VerifyAadhaarWithFaceFormValues>({
resolver: zodResolver(verifyAadhaarWithFaceFormSchema),
Expand Down
3 changes: 2 additions & 1 deletion src/components/pluggables/EncounterActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { Button } from "@/components/ui/button";
import CreateConsentRequestForm from "../CreateConsentRequestForm";
import { Encounter } from "@/types/encounter";
import { I18NNAMESPACE } from "@/lib/constants";
import { WithMeta } from "@/types/meta";
import { apis } from "@/apis";
import { cn } from "@/lib/utils";
import { useTranslation } from "react-i18next";
Expand All @@ -22,7 +23,7 @@ type EncounterActionsProps = {
className?: string;
};

const EncounterActions: FC<EncounterActionsProps> = ({
const EncounterActions: FC<WithMeta<EncounterActionsProps>> = ({
encounter,
className,
}) => {
Expand Down
20 changes: 13 additions & 7 deletions src/components/pluggables/FacilityHomeActions.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import { FC, useState } from "react";
import { useTranslation } from "react-i18next";
import { Button } from "@/components/ui/button";
import { Facility } from "@/types/facility";
import { SettingsIcon } from "lucide-react";
import { ConfigureHealthFacilityForm } from "../ConfigureHealthFacilityForm";
import {
Sheet,
SheetContent,
Expand All @@ -12,15 +7,25 @@ import {
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet";
import { useQueryClient } from "@tanstack/react-query";

import { Button } from "@/components/ui/button";
import { ConfigureHealthFacilityForm } from "../ConfigureHealthFacilityForm";
import { Facility } from "@/types/facility";
import { I18NNAMESPACE } from "@/lib/constants";
import { SettingsIcon } from "lucide-react";
import { WithMeta } from "@/types/meta";
import { useQueryClient } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";

type FacilityHomeActionsProps = {
facility: Facility;
className?: string;
};

const FacilityHomeActions: FC<FacilityHomeActionsProps> = ({ facility }) => {
const FacilityHomeActions: FC<WithMeta<FacilityHomeActionsProps>> = ({
facility,
__meta,
}) => {
const { t } = useTranslation(I18NNAMESPACE);
const queryClient = useQueryClient();

Expand Down Expand Up @@ -59,6 +64,7 @@ const FacilityHomeActions: FC<FacilityHomeActionsProps> = ({ facility }) => {
});
setOpen(false);
}}
meta={__meta}
/>
</div>
</SheetContent>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { FileDownIcon, ImageDownIcon } from "lucide-react";
import { useMutation, useQuery } from "@tanstack/react-query";

import { Button } from "@/components/ui/button";
import { FC } from "react";
import { I18NNAMESPACE } from "@/lib/constants";
import { Patient } from "@/types/patient";
import { WithMeta } from "@/types/meta";
import { apis } from "@/apis";
import { useMutation, useQuery } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";
import { Button } from "@/components/ui/button";
import { ImageDownIcon, FileDownIcon } from "lucide-react";

type PatientDetailsTabDemographyGeneralInfoProps = {
patientData: Patient;
Expand All @@ -14,7 +16,7 @@ type PatientDetailsTabDemographyGeneralInfoProps = {
};

const PatientDetailsTabDemographyGeneralInfo: FC<
PatientDetailsTabDemographyGeneralInfoProps
WithMeta<PatientDetailsTabDemographyGeneralInfoProps>
> = ({ patientId }) => {
const { t } = useTranslation(I18NNAMESPACE);

Expand Down
3 changes: 2 additions & 1 deletion src/components/pluggables/PatientHomeActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
import { FC } from "react";
import { LinkAbhaNumber } from "@/components/LinkAbhaNumber";
import { Patient } from "@/types/patient";
import { WithMeta } from "@/types/meta";
import { apis } from "@/apis";
import { toast } from "@/lib/utils";

Expand All @@ -12,7 +13,7 @@ type PatientHomeActionsProps = {
className?: string;
};

const PatientHomeActions: FC<PatientHomeActionsProps> = ({
const PatientHomeActions: FC<WithMeta<PatientHomeActionsProps>> = ({
patient,
facilityId,
className,
Expand Down
9 changes: 5 additions & 4 deletions src/components/pluggables/PatientRegistrationForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import { Label } from "@/components/ui/label";
import { LinkAbhaNumber } from "../LinkAbhaNumber";
import { ShowAbhaProfile } from "../LinkAbhaNumber/ShowAbhaProfile";
import { UseFormReturn } from "react-hook-form";
import { WithMeta } from "@/types/meta";
import { apis } from "@/apis";
import { enforceAbhaNumberLinking } from "@/config";
import { toast } from "@/lib/utils";

type PatientRegistrationFormProps = {
Expand All @@ -16,10 +16,11 @@ type PatientRegistrationFormProps = {
patientId?: string;
};

const PatientRegistrationForm: FC<PatientRegistrationFormProps> = ({
const PatientRegistrationForm: FC<WithMeta<PatientRegistrationFormProps>> = ({
form,
facilityId,
patientId,
__meta,
}) => {
const queryClient = useQueryClient();

Expand Down Expand Up @@ -89,9 +90,9 @@ const PatientRegistrationForm: FC<PatientRegistrationFormProps> = ({
return (
<div className="abdm-container flex justify-end w-full">
<LinkAbhaNumber
enforceLinking={enforceAbhaNumberLinking}
enforceLinking={__meta?.config?.enforceAbhaNumberLinking}
backUrl={
enforceAbhaNumberLinking
__meta?.config?.enforceAbhaNumberLinking
? `/facility/${facilityId}/patients`
: undefined
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/pluggables/PatientSearchActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Button } from "@/components/ui/button";
import { FC } from "react";
import { HashIcon } from "lucide-react";
import TokenSearchDialog from "@/components/TokenSearchDialog";
import { WithMeta } from "@/types/meta";
import { apis } from "@/apis";
import { cn } from "@/lib/utils";
import { useQuery } from "@tanstack/react-query";
Expand All @@ -11,7 +12,7 @@ type PatientSearchActionsProps = {
className?: string;
};

const PatientSearchActions: FC<PatientSearchActionsProps> = ({
const PatientSearchActions: FC<WithMeta<PatientSearchActionsProps>> = ({
facilityId,
className,
}) => {
Expand Down
7 changes: 0 additions & 7 deletions src/config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +0,0 @@
export const scanAndShareUrl = import.meta.env.REACT_SCAN_AND_SHARE_URL;

export const faceAuthUrl =
import.meta.env.REACT_FACE_AUTH_URL || "https://phrsbx.abdm.gov.in/face-auth";

export const enforceAbhaNumberLinking =
import.meta.env.REACT_ENFORCE_ABHA_NUMBER_LINKING === "true";
14 changes: 14 additions & 0 deletions src/types/meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export type MetaConfig = {
enforceAbhaNumberLinking?: boolean;
scanAndShareUrl?: string;
};

export type Meta = {
name?: string;
url?: string;
config?: MetaConfig;
};

export type WithMeta<T = unknown> = T & {
__meta?: Meta;
};
29 changes: 24 additions & 5 deletions src/vite-env.d.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
/// <reference types="vite/client" />
/// <reference types="vite-plugin-pwa/client" />

interface ImportMetaEnv {
readonly REACT_SCAN_AND_SHARE_URL: string;
readonly REACT_FACE_AUTH_URL: string;
readonly REACT_ENFORCE_ABHA_NUMBER_LINKING: string;
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
interface ImportMetaEnv {}

interface CareAbdmFePluginConfig {
faceAuthUrl?: string;
enforceAbhaNumberLinking?: boolean;
scanAndShareUrl?: string;
}

interface CarePluginRuntimeMeta {
care_abdm_fe?: {
config?: CareAbdmFePluginConfig;
};
}

interface CarePluginRuntime {
meta?: CarePluginRuntimeMeta;
}

declare global {
var __CORE_ENV__: {
const __CORE_ENV__: {
readonly apiUrl: string;
};

interface Window {
__CARE_PLUGIN_RUNTIME__?: CarePluginRuntime;
}
}

export {};