analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"sources":["../src/hooks/useInstitution.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { BaseApiClient } from '../types/api';\n\nexport interface InstitutionData {\n id: string;\n name: string;\n companyName: string;\n type: string;\n domain: string;\n email: string;\n phone: string;\n active: boolean;\n mainLogo: string | null;\n internalLogo: string | null;\n icon: string | null;\n favicon: string | null;\n loginImage: string | null;\n theme: string | null;\n city: string | null;\n state: string | null;\n}\n\nexport interface UseInstitutionConfig {\n apiClient: BaseApiClient;\n institutionId: string | null;\n}\n\nexport function useInstitution(config: UseInstitutionConfig) {\n const [institution, setInstitution] = useState<InstitutionData | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!config.institutionId) return;\n\n let cancelled = false;\n\n const fetchInstitution = async () => {\n setLoading(true);\n setInstitution(null);\n setError(null);\n try {\n const { data: response } = await config.apiClient.get<{\n data: InstitutionData;\n }>('/institution/filter', {\n params: { filter: config.institutionId },\n });\n if (!cancelled) setInstitution(response.data);\n } catch (err) {\n if (!cancelled) setError(err as Error);\n } finally {\n if (!cancelled) setLoading(false);\n }\n };\n\n fetchInstitution();\n\n return () => {\n cancelled = true;\n };\n }, [config.institutionId, config.apiClient]);\n\n return { institution, loading, error };\n}\n\nexport function useInstitutionId() {\n const [institutionId, setInstitutionId] = useState<string | null>(() => {\n return (\n document\n .querySelector('meta[name=\"institution-id\"]')\n ?.getAttribute('content') ?? null\n );\n });\n\n useEffect(() => {\n const metaTag = document.querySelector('meta[name=\"institution-id\"]');\n\n if (!metaTag) return;\n\n const observer = new MutationObserver(() => {\n const newValue = metaTag.getAttribute('content');\n setInstitutionId(newValue);\n });\n\n observer.observe(metaTag, {\n attributes: true,\n attributeFilter: ['content'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return institutionId;\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AA2B7B,SAAS,eAAe,QAA8B;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiC,IAAI;AAC3E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,YAAU,MAAM;AACd,QAAI,CAAC,OAAO,cAAe;AAE3B,QAAI,YAAY;AAEhB,UAAM,mBAAmB,YAAY;AACnC,iBAAW,IAAI;AACf,qBAAe,IAAI;AACnB,eAAS,IAAI;AACb,UAAI;AACF,cAAM,EAAE,MAAM,SAAS,IAAI,MAAM,OAAO,UAAU,IAE/C,uBAAuB;AAAA,UACxB,QAAQ,EAAE,QAAQ,OAAO,cAAc;AAAA,QACzC,CAAC;AACD,YAAI,CAAC,UAAW,gBAAe,SAAS,IAAI;AAAA,MAC9C,SAAS,KAAK;AACZ,YAAI,CAAC,UAAW,UAAS,GAAY;AAAA,MACvC,UAAE;AACA,YAAI,CAAC,UAAW,YAAW,KAAK;AAAA,MAClC;AAAA,IACF;AAEA,qBAAiB;AAEjB,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,OAAO,eAAe,OAAO,SAAS,CAAC;AAE3C,SAAO,EAAE,aAAa,SAAS,MAAM;AACvC;AAEO,SAAS,mBAAmB;AACjC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,MAAM;AACtE,WACE,SACG,cAAc,6BAA6B,GAC1C,aAAa,SAAS,KAAK;AAAA,EAEnC,CAAC;AAED,YAAU,MAAM;AACd,UAAM,UAAU,SAAS,cAAc,6BAA6B;AAEpE,QAAI,CAAC,QAAS;AAEd,UAAM,WAAW,IAAI,iBAAiB,MAAM;AAC1C,YAAM,WAAW,QAAQ,aAAa,SAAS;AAC/C,uBAAiB,QAAQ;AAAA,IAC3B,CAAC;AAED,aAAS,QAAQ,SAAS;AAAA,MACxB,YAAY;AAAA,MACZ,iBAAiB,CAAC,SAAS;AAAA,IAC7B,CAAC;AAED,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}