mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
feat: remove granularProjectAccess feature flag from project-specific roles
Gate solely on supportsProjectSpecificRoles plan flag — no feature flag needed. Also always fetch orgProjects in page load since it is no longer conditionally needed.
This commit is contained in:
@@ -11,8 +11,6 @@
|
||||
import { Submit, trackEvent, trackError } from '$lib/actions/analytics';
|
||||
import { isCloud, isSelfHosted } from '$lib/system';
|
||||
import { roles, buildProjectRole } from '$lib/stores/billing';
|
||||
import { flags } from '$lib/flags';
|
||||
import { user } from '$lib/stores/user';
|
||||
import InputSelect from '$lib/elements/forms/inputSelect.svelte';
|
||||
import Roles from '$lib/components/roles/roles.svelte';
|
||||
import { Icon, Popover, Layout } from '@appwrite.io/pink-svelte';
|
||||
@@ -29,9 +27,7 @@
|
||||
} = $props();
|
||||
|
||||
const supportsProjectRoles = $derived(
|
||||
isCloud &&
|
||||
flags.granularProjectAccess({ account: $user, organization: $organization }) &&
|
||||
!!$currentPlan?.supportsProjectSpecificRoles
|
||||
isCloud && !!$currentPlan?.supportsProjectSpecificRoles
|
||||
);
|
||||
|
||||
let email = $state('');
|
||||
|
||||
@@ -20,10 +20,8 @@
|
||||
} from '$lib/helpers/tooltipContent';
|
||||
import { addNotification } from '$lib/stores/notifications';
|
||||
import { currentPlan, newMemberModal, organization } from '$lib/stores/organization';
|
||||
import { flags } from '$lib/flags';
|
||||
import { isOwner } from '$lib/stores/roles';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { user } from '$lib/stores/user';
|
||||
import type { Models } from '@appwrite.io/console';
|
||||
import Delete from '../deleteMember.svelte';
|
||||
import Edit from './edit.svelte';
|
||||
@@ -63,10 +61,7 @@
|
||||
$: isButtonDisabled =
|
||||
isCloud && (($readOnly && !GRACE_PERIOD_OVERRIDE) || (isLimited && memberCount >= limit));
|
||||
$: supportsOrgRoles = isCloud && !!$currentPlan?.supportsOrganizationRoles;
|
||||
$: supportsProjectRoles =
|
||||
isCloud &&
|
||||
flags.granularProjectAccess({ account: $user, organization: $organization }) &&
|
||||
!!$currentPlan?.supportsProjectSpecificRoles;
|
||||
$: supportsProjectRoles = isCloud && !!$currentPlan?.supportsProjectSpecificRoles;
|
||||
|
||||
const resend = async (member: Models.Membership) => {
|
||||
try {
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import { Dependencies, PAGE_LIMIT } from '$lib/constants';
|
||||
import { flags } from '$lib/flags';
|
||||
import { getLimit, getPage, getSearch, pageToOffset } from '$lib/helpers/load';
|
||||
import { sdk } from '$lib/stores/sdk';
|
||||
import { Query } from '@appwrite.io/console';
|
||||
import type { PageLoad } from './$types';
|
||||
|
||||
export const load: PageLoad = async ({ url, params, route, depends, parent }) => {
|
||||
const { account, organization } = await parent();
|
||||
await parent();
|
||||
depends(Dependencies.ORGANIZATION);
|
||||
depends(Dependencies.MEMBERS);
|
||||
|
||||
@@ -15,22 +14,18 @@ export const load: PageLoad = async ({ url, params, route, depends, parent }) =>
|
||||
const limit = getLimit(url, route, PAGE_LIMIT);
|
||||
const offset = pageToOffset(page, limit);
|
||||
|
||||
const supportsProjectRoles = flags.granularProjectAccess({ account, organization });
|
||||
|
||||
const [organizationMembers, orgProjects] = await Promise.all([
|
||||
sdk.forConsole.teams.listMemberships({
|
||||
teamId: params.organization,
|
||||
queries: [Query.limit(limit), Query.offset(offset)],
|
||||
search
|
||||
}),
|
||||
supportsProjectRoles
|
||||
? sdk.forConsole
|
||||
.organization(params.organization)
|
||||
.listProjects({
|
||||
queries: [Query.limit(100), Query.equal('teamId', params.organization)]
|
||||
})
|
||||
.catch(() => null)
|
||||
: null
|
||||
sdk.forConsole
|
||||
.organization(params.organization)
|
||||
.listProjects({
|
||||
queries: [Query.limit(100), Query.equal('teamId', params.organization)]
|
||||
})
|
||||
.catch(() => null)
|
||||
]);
|
||||
|
||||
return {
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
buildProjectRole
|
||||
} from '$lib/stores/billing';
|
||||
import { isCloud, isSelfHosted } from '$lib/system';
|
||||
import { flags } from '$lib/flags';
|
||||
import { user } from '$lib/stores/user';
|
||||
import ProjectAccessSelector from '../projectAccessSelector.svelte';
|
||||
|
||||
let {
|
||||
@@ -34,9 +32,7 @@
|
||||
} = $props();
|
||||
|
||||
const supportsProjectRoles = $derived(
|
||||
isCloud &&
|
||||
flags.granularProjectAccess({ account: $user, organization: $organization }) &&
|
||||
!!$currentPlan?.supportsProjectSpecificRoles
|
||||
isCloud && !!$currentPlan?.supportsProjectSpecificRoles
|
||||
);
|
||||
const defaultRole = isSelfHosted ? 'owner' : 'developer';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user