From 6deeda65490e1935ccebc42e854ca1529895cac4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 23 Dec 2025 00:43:16 +0000 Subject: [PATCH 1/2] feat: Disable convert to member for pending invites Co-authored-by: eric.okuma --- .../table/users/OrgUsersTable.svelte | 1 + .../table/users/UserActionsCell.svelte | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/web-admin/src/features/organizations/user-management/table/users/OrgUsersTable.svelte b/web-admin/src/features/organizations/user-management/table/users/OrgUsersTable.svelte index ea516777d2f..3e75f88d46e 100644 --- a/web-admin/src/features/organizations/user-management/table/users/OrgUsersTable.svelte +++ b/web-admin/src/features/organizations/user-management/table/users/OrgUsersTable.svelte @@ -122,6 +122,7 @@ organizationPermissions, isBillingContact: row.original.userEmail === billingContact, onAttemptRemoveBillingContactUser, + pendingAcceptance: Boolean(row.original.invitedBy), onConvertToMember: () => onConvertToMember(row.original), }), meta: { diff --git a/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte b/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte index 42d1979893b..21faa11d6e6 100644 --- a/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte +++ b/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte @@ -7,7 +7,6 @@ import * as DropdownMenu from "@rilldata/web-common/components/dropdown-menu"; import ThreeDot from "@rilldata/web-common/components/icons/ThreeDot.svelte"; import { OrgUserRoles } from "@rilldata/web-common/features/users/roles.ts"; - import { Trash2Icon } from "lucide-svelte"; import RemoveUserFromOrgConfirmDialog from "@rilldata/web-admin/features/organizations/user-management/dialogs/RemoveUserFromOrgConfirmDialog.svelte"; import { createAdminServiceRemoveOrganizationMemberUser, @@ -26,12 +25,14 @@ // This also avoids rendering the modal per row. export let onAttemptRemoveBillingContactUser: () => void; export let onConvertToMember: () => void; + export let pendingAcceptance = false; let isDropdownOpen = false; let isRemoveConfirmOpen = false; $: organization = $page.params.organization; $: isGuest = role === OrgUserRoles.Guest; + $: canConvertToMember = isGuest && !pendingAcceptance; $: canManageUser = // TODO: backend doesnt restrict removing oneself, revisit this UI check. !isCurrentUser && canManageOrgUser(organizationPermissions, role); @@ -82,10 +83,14 @@ - {#if role === OrgUserRoles.Guest} + {#if isGuest} { + if (!canConvertToMember) return; + onConvertToMember(); + }} > Convert to member @@ -95,8 +100,7 @@ type="destructive" on:click={onRemoveClick} > - - Remove + Remove From 3e912392d16fc3dab1f12a2b96f67c7ac2cd9051 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 23 Dec 2025 00:49:03 +0000 Subject: [PATCH 2/2] Refactor UserActionsCell to simplify convert to member logic Co-authored-by: eric.okuma --- .../user-management/table/users/UserActionsCell.svelte | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte b/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte index 21faa11d6e6..c0aa9b9bdfd 100644 --- a/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte +++ b/web-admin/src/features/organizations/user-management/table/users/UserActionsCell.svelte @@ -83,14 +83,10 @@ - {#if isGuest} + {#if canConvertToMember} { - if (!canConvertToMember) return; - onConvertToMember(); - }} + on:click={onConvertToMember} > Convert to member