WrappersTab() — supabase Function Reference
Architecture documentation for the WrappersTab() function in WrappersTab.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 8eb96865_cf46_b697_a942_df059799468d["WrappersTab()"] f6fdda8f_575f_1739_f5a8_a5415e6d46f8["wrapperMetaComparator()"] 8eb96865_cf46_b697_a942_df059799468d -->|calls| f6fdda8f_575f_1739_f5a8_a5415e6d46f8 style 8eb96865_cf46_b697_a942_df059799468d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/Integrations/Wrappers/WrappersTab.tsx lines 18–116
export const WrappersTab = () => {
const { id } = useParams()
const { data: project } = useSelectedProjectQuery()
const [selectedWrapperForDelete, setSelectedWrapperForDelete] = useState<FDW | null>(null)
const [createWrapperShown, setCreateWrapperShown] = useState(false)
const { can: canCreateWrapper } = useAsyncCheckPermissions(
PermissionAction.TENANT_SQL_ADMIN_WRITE,
'wrappers'
)
const { data } = useFDWsQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
})
const wrappers = data ?? []
const wrapperMeta = WRAPPERS.find((w) => w.name === id)
// this contains a collection of all wrapper instances for the wrapper type
const createdWrappers = wrapperMeta
? wrappers.filter((w) => wrapperMetaComparator(wrapperMeta, w))
: []
const [isDirty, setIsDirty] = useState(false)
const { confirmOnClose, modalProps: closeConfirmationModalProps } = useConfirmOnClose({
checkIsDirty: useCallback(() => isDirty, [isDirty]),
onClose: useCallback(() => {
setCreateWrapperShown(false)
setIsDirty(false)
}, []),
})
const Container = useCallback(
({ ...props }: { children: ReactNode } & HTMLProps<HTMLDivElement>) => (
<div className="w-full mx-10 py-10 ">
{props.children}
<Sheet open={!!createWrapperShown} onOpenChange={confirmOnClose}>
<SheetContent size="lg" tabIndex={undefined}>
{wrapperMeta && (
<CreateWrapperSheet
wrapperMeta={wrapperMeta}
onDirty={setIsDirty}
onClose={() => setCreateWrapperShown(false)}
onCloseWithConfirmation={confirmOnClose}
/>
)}
</SheetContent>
</Sheet>
</div>
),
[createWrapperShown, wrapperMeta, confirmOnClose]
)
if (!wrapperMeta) {
return <div>Missing integration.</div>
}
if (createdWrappers.length === 0) {
return (
<Container>
<div className=" w-full h-48 max-w-4xl">
<div className="border rounded-lg h-full flex flex-col gap-y-2 items-center justify-center">
<p className="text-sm text-foreground-light">
No {wrapperMeta.label} wrappers have been installed
</p>
<ButtonTooltip
type="default"
onClick={() => setCreateWrapperShown(true)}
disabled={!canCreateWrapper}
tooltip={{
content: {
text: !canCreateWrapper
? 'You need additional permissions to create a foreign data wrapper'
: undefined,
},
}}
>
Add new wrapper
</ButtonTooltip>
</div>
</div>
</Container>
)
}
return (
<Container>
<WrapperTable />
{selectedWrapperForDelete && (
<DeleteWrapperModal
selectedWrapper={selectedWrapperForDelete}
onClose={() => setSelectedWrapperForDelete(null)}
/>
)}
<CloseConfirmationModal {...closeConfirmationModalProps} />
</Container>
)
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does WrappersTab() do?
WrappersTab() is a function in the supabase codebase.
What does WrappersTab() call?
WrappersTab() calls 1 function(s): wrapperMetaComparator.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free