diff --git a/studio/stores/UiStore.ts b/studio/stores/UiStore.ts
index bddde29b6b6..b5191207285 100644
--- a/studio/stores/UiStore.ts
+++ b/studio/stores/UiStore.ts
@@ -36,7 +36,7 @@ export interface IUiStore {
setNotification: (notification: Notification) => string
setProfile: (value?: User) => void
setPermissions: (permissions?: Permission[]) => void
- isOwnerAndCanLeaveOrg: (members: Member[]) => void
+ isOwnerAndCanLeaveOrg: (members: Member[]) => boolean
}
export default class UiStore implements IUiStore {
rootStore: IRootStore
@@ -170,27 +170,21 @@ export default class UiStore implements IUiStore {
}
/*
- * Check wether the owner is allowed to leave a project
+ * Check whether the owner is allowed to leave a project
* the conditions for this is that they are an owner, and there is also 1 other owner in the org.
*/
isOwnerAndCanLeaveOrg(members: Member[]) {
const selectedOrg = this.selectedOrganization
+ if (!selectedOrg?.is_owner) return false
const roles: { roles: Role[] } = useOrganizationRoles(this.selectedOrganization?.slug)
const membersWhoAreOwners = members.filter((member) => {
const [memberRoleId] = member.role_ids ?? []
const role = (roles.roles || []).find((role: Role) => role.id === memberRoleId)
- // dangerous use of string here
- // to do, refactor so that changing the role name does not fail this check
- // if role name does change, then user will simply not be able to leave project as a 'owner' regardless
- return role && role.name === 'Owner' && !member.invited_at
+ return role?.name === 'Owner' && !member.invited_at
})
- console.log('membersWhoAreOwners', membersWhoAreOwners)
-
- return selectedOrg?.is_owner && membersWhoAreOwners && membersWhoAreOwners.length > 1
- ? true
- : false
+ return membersWhoAreOwners.length > 1
}
}