diff --git a/studio/components/interfaces/Organization/TeamSettings/InviteMemberModal.tsx b/studio/components/interfaces/Organization/TeamSettings/InviteMemberModal.tsx index 8fc592d0a29..7b6db4cd416 100644 --- a/studio/components/interfaces/Organization/TeamSettings/InviteMemberModal.tsx +++ b/studio/components/interfaces/Organization/TeamSettings/InviteMemberModal.tsx @@ -22,7 +22,7 @@ const InviteMemberModal: FC = ({ members = [], user }) => { const [isOpen, setIsOpen] = useState(false) const { roles } = useOrganizationRoles((slug as string) || '') - const { mutateOrgMembers } = useOrganizationDetail(ui.selectedOrganization?.slug || '') + const { mutateOrgMembers } = useOrganizationDetail((slug as string) || '') const initialValues = { email: '', role: '' } diff --git a/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx b/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx index 1e7a9cff661..9e06a047b5b 100644 --- a/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx +++ b/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx @@ -1,5 +1,5 @@ import Image from 'next/image' -import { useState, useContext } from 'react' +import { useState, useContext, Fragment } from 'react' import { observer } from 'mobx-react-lite' import { Badge, Button, Loading, Listbox, IconUser, Modal } from '@supabase/ui' import { PermissionAction } from '@supabase/shared-types/out/constants' @@ -87,8 +87,8 @@ const MembersView = () => { const disableRoleEdit = !canEditMembers || memberIsUser return ( - <> - + +
@@ -160,7 +160,7 @@ const MembersView = () => { )} - + ) }), (url, get) + const { data, error } = useSWR(slug ? url : null, get) let members = data ?? [] // Get pending invite users const pendingInviteUrl = `${API_URL}/organizations/${slug}/members/invite` - const { data: inviteData, error: inviteError } = useSWR(pendingInviteUrl, get) + const { data: inviteData, error: inviteError } = useSWR(slug ? pendingInviteUrl : null, get) if (data && inviteData && inviteData.length > 0) { // remap invite data to look like existing members data diff --git a/studio/hooks/queries/useOrganizationRoles.ts b/studio/hooks/queries/useOrganizationRoles.ts index 6b5582b5d6b..33ba0bfb459 100644 --- a/studio/hooks/queries/useOrganizationRoles.ts +++ b/studio/hooks/queries/useOrganizationRoles.ts @@ -10,7 +10,7 @@ import { Role } from 'types' export function useOrganizationRoles(slug: string) { const url = `${API_URL}/organizations/${slug}/roles` - const { data, error } = useSWR(url, get) + const { data, error } = useSWR(slug ? url : null, get) const anyError = data?.error || error return { diff --git a/studio/hooks/queries/usePermissions.ts b/studio/hooks/queries/usePermissions.ts index 4cb4adb6d39..6d2f065d17b 100644 --- a/studio/hooks/queries/usePermissions.ts +++ b/studio/hooks/queries/usePermissions.ts @@ -32,18 +32,7 @@ export function checkPermissions(action: string, resource: string, data?: object const enablePermissions = useFlag('enablePermissions') if (!enablePermissions) return true - const { app, ui } = useStore() - const router = useRouter() - - let organization_id: number | undefined - const { ref, slug } = router.query - if (ref) { - const project = find(app.projects.list(), { ref }) as Project | undefined - organization_id = project?.organization_id - } else if (slug) { - const organization = find(app.organizations.list(), { slug }) as Organization | undefined - organization_id = organization?.id - } + const { ui } = useStore() return (ui?.permissions ?? []) .filter( @@ -86,8 +75,8 @@ export function checkIsOwner() { if (!organization) return false - const { roles } = useOrganizationRoles(router.query.slug as string) - const { members } = useOrganizationDetail(router.query.slug as string) + const { roles } = useOrganizationRoles(slug as string) + const { members } = useOrganizationDetail(slug as string) const userMember = (members || []).find((member) => member.gotrue_id === ui?.profile?.gotrue_id) const [memberRoleId] = userMember?.role_ids ?? [] diff --git a/studio/stores/UiStore.ts b/studio/stores/UiStore.ts index a79d1279e27..7599784ce8a 100644 --- a/studio/stores/UiStore.ts +++ b/studio/stores/UiStore.ts @@ -17,6 +17,7 @@ export interface IUiStore { notification?: Notification profile?: User permissions?: any // [Joshen TODO]: type this + load: () => void setTheme: (theme: 'dark' | 'light') => void onThemeOptionChange: (themeOption: 'dark' | 'light' | 'system') => void