@workos-inc/widgets 1.18.0 → 1.19.0-next.1790102694835
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/admin-portal-audit-log-streaming.client.cjs +16 -20
- package/dist/cjs/admin-portal-audit-log-streaming.client.cjs.map +1 -1
- package/dist/cjs/admin-portal-audit-log-streaming.client.d.cts +2 -0
- package/dist/cjs/admin-portal-domain-verification.client.cjs +42 -34
- package/dist/cjs/admin-portal-domain-verification.client.cjs.map +1 -1
- package/dist/cjs/admin-portal-domain-verification.client.d.cts +2 -0
- package/dist/cjs/admin-portal-sso-connection.client.cjs +77 -50
- package/dist/cjs/admin-portal-sso-connection.client.cjs.map +1 -1
- package/dist/cjs/api/client-graphql/client.cjs +2 -1
- package/dist/cjs/api/client-graphql/client.cjs.map +1 -1
- package/dist/cjs/api/client-graphql/generated.cjs +2295 -6
- package/dist/cjs/api/client-graphql/generated.cjs.map +1 -1
- package/dist/cjs/api/client-graphql/generated.d.cts +2989 -7
- package/dist/cjs/api/client-graphql/hooks.cjs +67 -0
- package/dist/cjs/api/client-graphql/hooks.cjs.map +1 -0
- package/dist/cjs/api/client-graphql/hooks.d.cts +44 -0
- package/dist/cjs/api/endpoint.cjs +43 -27
- package/dist/cjs/api/endpoint.cjs.map +1 -1
- package/dist/cjs/api/endpoint.d.cts +53 -20
- package/dist/cjs/api-keys.client.cjs +1 -2
- package/dist/cjs/api-keys.client.cjs.map +1 -1
- package/dist/cjs/directory-sync.client.cjs +54 -13
- package/dist/cjs/directory-sync.client.cjs.map +1 -1
- package/dist/cjs/experimental/api/fetch.cjs +44 -16
- package/dist/cjs/experimental/api/fetch.cjs.map +1 -1
- package/dist/cjs/experimental/api/fetch.d.cts +38 -9
- package/dist/cjs/experimental/api/react-query.cjs +75 -38
- package/dist/cjs/experimental/api/react-query.cjs.map +1 -1
- package/dist/cjs/experimental/api/react-query.d.cts +57 -24
- package/dist/cjs/experimental/api/swr.cjs +77 -35
- package/dist/cjs/experimental/api/swr.cjs.map +1 -1
- package/dist/cjs/experimental/api/swr.d.cts +49 -20
- package/dist/cjs/index.d.cts +4 -0
- package/dist/cjs/lib/add-mfa-dialog.cjs +39 -33
- package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-audit-log-streaming.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-audit-log-streaming.d.cts +5 -3
- package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-domain-verification.d.cts +4 -2
- package/dist/cjs/lib/api/api-key.cjs +128 -40
- package/dist/cjs/lib/api/api-key.cjs.map +1 -1
- package/dist/cjs/lib/api/api-key.d.cts +20 -9
- package/dist/cjs/lib/api/me.cjs +70 -0
- package/dist/cjs/lib/api/me.cjs.map +1 -0
- package/dist/cjs/lib/api/me.d.cts +37 -0
- package/dist/cjs/lib/api/pipes.cjs +419 -0
- package/dist/cjs/lib/api/pipes.cjs.map +1 -0
- package/dist/cjs/lib/api/pipes.d.cts +69 -0
- package/dist/cjs/lib/api/user-api-key.cjs +116 -45
- package/dist/cjs/lib/api/user-api-key.cjs.map +1 -1
- package/dist/cjs/lib/api/user-api-key.d.cts +17 -12
- package/dist/cjs/lib/api/user.cjs +170 -51
- package/dist/cjs/lib/api/user.cjs.map +1 -1
- package/dist/cjs/lib/api/user.d.cts +4 -25
- package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs +2 -2
- package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/create-api-key.cjs +1 -2
- package/dist/cjs/lib/api-keys/create-api-key.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs +5 -13
- package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs.map +1 -1
- package/dist/cjs/lib/change-email-dialog.cjs +39 -26
- package/dist/cjs/lib/change-email-dialog.cjs.map +1 -1
- package/dist/cjs/lib/change-email-dialog.d.cts +4 -3
- package/dist/cjs/lib/change-password-dialog.cjs +14 -13
- package/dist/cjs/lib/change-password-dialog.cjs.map +1 -1
- package/dist/cjs/lib/client-graphql-result.cjs +116 -0
- package/dist/cjs/lib/client-graphql-result.cjs.map +1 -0
- package/dist/cjs/lib/client-graphql-result.d.cts +32 -0
- package/dist/cjs/lib/delete-domain-dialog.cjs.map +1 -1
- package/dist/cjs/lib/delete-domain-dialog.d.cts +3 -4
- package/dist/cjs/lib/delete-user-dialog.cjs.map +1 -1
- package/dist/cjs/lib/delete-user-dialog.d.cts +3 -2
- package/dist/cjs/lib/directory-sync.cjs +59 -23
- package/dist/cjs/lib/directory-sync.cjs.map +1 -1
- package/dist/cjs/lib/directory-sync.d.cts +23 -5
- package/dist/cjs/lib/domain-actions.cjs.map +1 -1
- package/dist/cjs/lib/domain-actions.d.cts +3 -4
- package/dist/cjs/lib/domain-item.cjs.map +1 -1
- package/dist/cjs/lib/domain-item.d.cts +3 -4
- package/dist/cjs/lib/edit-user-profile-dialog.cjs +19 -19
- package/dist/cjs/lib/edit-user-profile-dialog.cjs.map +1 -1
- package/dist/cjs/lib/edit-user-profile-dialog.d.cts +4 -3
- package/dist/cjs/lib/edit-user-role-dialog.cjs +3 -8
- package/dist/cjs/lib/edit-user-role-dialog.cjs.map +1 -1
- package/dist/cjs/lib/edit-user-role-dialog.d.cts +5 -4
- package/dist/cjs/lib/elevated-access.cjs +22 -13
- package/dist/cjs/lib/elevated-access.cjs.map +1 -1
- package/dist/cjs/lib/elevated-access.d.cts +1 -1
- package/dist/cjs/lib/invite-user-dialog.cjs +9 -15
- package/dist/cjs/lib/invite-user-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-all-sessions-dialog.cjs +13 -5
- package/dist/cjs/lib/logout-all-sessions-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-all-sessions-dialog.d.cts +2 -2
- package/dist/cjs/lib/logout-dialog.cjs +10 -6
- package/dist/cjs/lib/logout-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-dialog.d.cts +3 -4
- package/dist/cjs/lib/name-server-icon.cjs.map +1 -1
- package/dist/cjs/lib/name-server-icon.d.cts +3 -4
- package/dist/cjs/lib/oauth-icons.cjs +13 -2
- package/dist/cjs/lib/oauth-icons.cjs.map +1 -1
- package/dist/cjs/lib/oauth-icons.d.cts +2 -1
- package/dist/cjs/lib/organization-switcher.cjs +3 -3
- package/dist/cjs/lib/organization-switcher.cjs.map +1 -1
- package/dist/cjs/lib/organization-switcher.d.cts +6 -3
- package/dist/cjs/lib/password-error-utils.cjs +28 -43
- package/dist/cjs/lib/password-error-utils.cjs.map +1 -1
- package/dist/cjs/lib/password-error-utils.d.cts +3 -13
- package/dist/cjs/lib/pipes-admin.cjs +109 -79
- package/dist/cjs/lib/pipes-admin.cjs.map +1 -1
- package/dist/cjs/lib/pipes-admin.d.cts +1 -1
- package/dist/cjs/lib/pipes.cjs +133 -60
- package/dist/cjs/lib/pipes.cjs.map +1 -1
- package/dist/cjs/lib/resend-invite-dialog.cjs.map +1 -1
- package/dist/cjs/lib/resend-invite-dialog.d.cts +3 -2
- package/dist/cjs/lib/reset-mfa-dialog.cjs +11 -3
- package/dist/cjs/lib/reset-mfa-dialog.cjs.map +1 -1
- package/dist/cjs/lib/revoke-invite-dialog.cjs.map +1 -1
- package/dist/cjs/lib/revoke-invite-dialog.d.cts +3 -2
- package/dist/cjs/lib/set-password-dialog.cjs +16 -3
- package/dist/cjs/lib/set-password-dialog.cjs.map +1 -1
- package/dist/cjs/lib/use-security-settings.cjs +5 -25
- package/dist/cjs/lib/use-security-settings.cjs.map +1 -1
- package/dist/cjs/lib/use-security-settings.d.cts +2 -2
- package/dist/cjs/lib/user-actions-dropdown.cjs +2 -6
- package/dist/cjs/lib/user-actions-dropdown.cjs.map +1 -1
- package/dist/cjs/lib/user-actions-dropdown.d.cts +3 -2
- package/dist/cjs/lib/user-api-keys/revoke-user-api-key-dialog.cjs +3 -10
- package/dist/cjs/lib/user-api-keys/revoke-user-api-key-dialog.cjs.map +1 -1
- package/dist/cjs/lib/user-profile.cjs +10 -5
- package/dist/cjs/lib/user-profile.cjs.map +1 -1
- package/dist/cjs/lib/user-profile.d.cts +5 -2
- package/dist/cjs/lib/user-security.cjs +4 -5
- package/dist/cjs/lib/user-security.cjs.map +1 -1
- package/dist/cjs/lib/user-security.d.cts +6 -2
- package/dist/cjs/lib/user-sessions.cjs +2 -2
- package/dist/cjs/lib/user-sessions.cjs.map +1 -1
- package/dist/cjs/lib/user-sessions.d.cts +6 -4
- package/dist/cjs/lib/users-filter.cjs.map +1 -1
- package/dist/cjs/lib/users-filter.d.cts +4 -3
- package/dist/cjs/lib/users-management-context.cjs.map +1 -1
- package/dist/cjs/lib/users-management-context.d.cts +4 -18
- package/dist/cjs/lib/users-management-state.cjs.map +1 -1
- package/dist/cjs/lib/users-management-state.d.cts +4 -25
- package/dist/cjs/lib/users-management.cjs.map +1 -1
- package/dist/cjs/lib/users-management.d.cts +7 -7
- package/dist/cjs/lib/view-dns-record-dialog.cjs.map +1 -1
- package/dist/cjs/lib/view-dns-record-dialog.d.cts +3 -4
- package/dist/cjs/organization-switcher.client.cjs +7 -6
- package/dist/cjs/organization-switcher.client.cjs.map +1 -1
- package/dist/cjs/organization-switcher.client.d.cts +3 -1
- package/dist/cjs/pipes-admin.client.cjs +7 -4
- package/dist/cjs/pipes-admin.client.cjs.map +1 -1
- package/dist/cjs/pipes.client.cjs +17 -16
- package/dist/cjs/pipes.client.cjs.map +1 -1
- package/dist/cjs/user-CgBDfSHl.d.cts +502 -0
- package/dist/cjs/user-profile.client.cjs +3 -3
- package/dist/cjs/user-profile.client.cjs.map +1 -1
- package/dist/cjs/user-profile.client.d.cts +4 -1
- package/dist/cjs/user-security.client.cjs +25 -14
- package/dist/cjs/user-security.client.cjs.map +1 -1
- package/dist/cjs/user-security.client.d.cts +2 -0
- package/dist/cjs/user-sessions.client.cjs +12 -29
- package/dist/cjs/user-sessions.client.cjs.map +1 -1
- package/dist/cjs/user-sessions.client.d.cts +2 -0
- package/dist/cjs/users-management.client.cjs +1 -4
- package/dist/cjs/users-management.client.cjs.map +1 -1
- package/dist/cjs/users-management.client.d.cts +4 -1
- package/dist/cjs/utils.cjs +2 -1
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/esm/admin-portal-audit-log-streaming.client.d.ts +2 -0
- package/dist/esm/admin-portal-audit-log-streaming.client.js +20 -23
- package/dist/esm/admin-portal-audit-log-streaming.client.js.map +1 -1
- package/dist/esm/admin-portal-domain-verification.client.d.ts +2 -0
- package/dist/esm/admin-portal-domain-verification.client.js +45 -39
- package/dist/esm/admin-portal-domain-verification.client.js.map +1 -1
- package/dist/esm/admin-portal-sso-connection.client.js +80 -52
- package/dist/esm/admin-portal-sso-connection.client.js.map +1 -1
- package/dist/esm/api/client-graphql/client.js +2 -1
- package/dist/esm/api/client-graphql/client.js.map +1 -1
- package/dist/esm/api/client-graphql/generated.d.ts +2989 -7
- package/dist/esm/api/client-graphql/generated.js +2203 -0
- package/dist/esm/api/client-graphql/generated.js.map +1 -1
- package/dist/esm/api/client-graphql/hooks.d.ts +44 -0
- package/dist/esm/api/client-graphql/hooks.js +43 -0
- package/dist/esm/api/client-graphql/hooks.js.map +1 -0
- package/dist/esm/api/endpoint.d.ts +53 -20
- package/dist/esm/api/endpoint.js +43 -27
- package/dist/esm/api/endpoint.js.map +1 -1
- package/dist/esm/api-keys.client.js +4 -2
- package/dist/esm/api-keys.client.js.map +1 -1
- package/dist/esm/directory-sync.client.js +56 -7
- package/dist/esm/directory-sync.client.js.map +1 -1
- package/dist/esm/experimental/api/fetch.d.ts +38 -9
- package/dist/esm/experimental/api/fetch.js +44 -16
- package/dist/esm/experimental/api/fetch.js.map +1 -1
- package/dist/esm/experimental/api/react-query.d.ts +57 -24
- package/dist/esm/experimental/api/react-query.js +75 -38
- package/dist/esm/experimental/api/react-query.js.map +1 -1
- package/dist/esm/experimental/api/swr.d.ts +49 -20
- package/dist/esm/experimental/api/swr.js +77 -35
- package/dist/esm/experimental/api/swr.js.map +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/lib/add-mfa-dialog.js +39 -36
- package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
- package/dist/esm/lib/admin-portal-audit-log-streaming.d.ts +5 -3
- package/dist/esm/lib/admin-portal-audit-log-streaming.js.map +1 -1
- package/dist/esm/lib/admin-portal-domain-verification.d.ts +4 -2
- package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
- package/dist/esm/lib/api/api-key.d.ts +20 -9
- package/dist/esm/lib/api/api-key.js +124 -49
- package/dist/esm/lib/api/api-key.js.map +1 -1
- package/dist/esm/lib/api/me.d.ts +37 -0
- package/dist/esm/lib/api/me.js +37 -0
- package/dist/esm/lib/api/me.js.map +1 -0
- package/dist/esm/lib/api/pipes.d.ts +69 -0
- package/dist/esm/lib/api/pipes.js +380 -0
- package/dist/esm/lib/api/pipes.js.map +1 -0
- package/dist/esm/lib/api/user-api-key.d.ts +17 -12
- package/dist/esm/lib/api/user-api-key.js +113 -52
- package/dist/esm/lib/api/user-api-key.js.map +1 -1
- package/dist/esm/lib/api/user.d.ts +4 -25
- package/dist/esm/lib/api/user.js +173 -59
- package/dist/esm/lib/api/user.js.map +1 -1
- package/dist/esm/lib/api-keys/api-key-details-dialog.js +1 -3
- package/dist/esm/lib/api-keys/api-key-details-dialog.js.map +1 -1
- package/dist/esm/lib/api-keys/create-api-key.js +2 -2
- package/dist/esm/lib/api-keys/create-api-key.js.map +1 -1
- package/dist/esm/lib/api-keys/revoke-api-key-dialog.js +5 -15
- package/dist/esm/lib/api-keys/revoke-api-key-dialog.js.map +1 -1
- package/dist/esm/lib/change-email-dialog.d.ts +4 -3
- package/dist/esm/lib/change-email-dialog.js +39 -31
- package/dist/esm/lib/change-email-dialog.js.map +1 -1
- package/dist/esm/lib/change-password-dialog.js +14 -13
- package/dist/esm/lib/change-password-dialog.js.map +1 -1
- package/dist/esm/lib/client-graphql-result.d.ts +32 -0
- package/dist/esm/lib/client-graphql-result.js +89 -0
- package/dist/esm/lib/client-graphql-result.js.map +1 -0
- package/dist/esm/lib/delete-domain-dialog.d.ts +3 -4
- package/dist/esm/lib/delete-domain-dialog.js.map +1 -1
- package/dist/esm/lib/delete-user-dialog.d.ts +3 -2
- package/dist/esm/lib/delete-user-dialog.js.map +1 -1
- package/dist/esm/lib/directory-sync.d.ts +23 -5
- package/dist/esm/lib/directory-sync.js +46 -14
- package/dist/esm/lib/directory-sync.js.map +1 -1
- package/dist/esm/lib/domain-actions.d.ts +3 -4
- package/dist/esm/lib/domain-actions.js.map +1 -1
- package/dist/esm/lib/domain-item.d.ts +3 -4
- package/dist/esm/lib/domain-item.js.map +1 -1
- package/dist/esm/lib/edit-user-profile-dialog.d.ts +4 -3
- package/dist/esm/lib/edit-user-profile-dialog.js +19 -19
- package/dist/esm/lib/edit-user-profile-dialog.js.map +1 -1
- package/dist/esm/lib/edit-user-role-dialog.d.ts +5 -4
- package/dist/esm/lib/edit-user-role-dialog.js +7 -11
- package/dist/esm/lib/edit-user-role-dialog.js.map +1 -1
- package/dist/esm/lib/elevated-access.d.ts +1 -1
- package/dist/esm/lib/elevated-access.js +20 -11
- package/dist/esm/lib/elevated-access.js.map +1 -1
- package/dist/esm/lib/invite-user-dialog.js +10 -16
- package/dist/esm/lib/invite-user-dialog.js.map +1 -1
- package/dist/esm/lib/logout-all-sessions-dialog.d.ts +2 -2
- package/dist/esm/lib/logout-all-sessions-dialog.js +16 -5
- package/dist/esm/lib/logout-all-sessions-dialog.js.map +1 -1
- package/dist/esm/lib/logout-dialog.d.ts +3 -4
- package/dist/esm/lib/logout-dialog.js +12 -8
- package/dist/esm/lib/logout-dialog.js.map +1 -1
- package/dist/esm/lib/name-server-icon.d.ts +3 -4
- package/dist/esm/lib/name-server-icon.js.map +1 -1
- package/dist/esm/lib/oauth-icons.d.ts +2 -1
- package/dist/esm/lib/oauth-icons.js +11 -1
- package/dist/esm/lib/oauth-icons.js.map +1 -1
- package/dist/esm/lib/organization-switcher.d.ts +6 -3
- package/dist/esm/lib/organization-switcher.js +3 -3
- package/dist/esm/lib/organization-switcher.js.map +1 -1
- package/dist/esm/lib/password-error-utils.d.ts +3 -13
- package/dist/esm/lib/password-error-utils.js +28 -43
- package/dist/esm/lib/password-error-utils.js.map +1 -1
- package/dist/esm/lib/pipes-admin.d.ts +1 -1
- package/dist/esm/lib/pipes-admin.js +105 -78
- package/dist/esm/lib/pipes-admin.js.map +1 -1
- package/dist/esm/lib/pipes.js +140 -71
- package/dist/esm/lib/pipes.js.map +1 -1
- package/dist/esm/lib/resend-invite-dialog.d.ts +3 -2
- package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
- package/dist/esm/lib/reset-mfa-dialog.js +11 -3
- package/dist/esm/lib/reset-mfa-dialog.js.map +1 -1
- package/dist/esm/lib/revoke-invite-dialog.d.ts +3 -2
- package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
- package/dist/esm/lib/set-password-dialog.js +16 -3
- package/dist/esm/lib/set-password-dialog.js.map +1 -1
- package/dist/esm/lib/use-security-settings.d.ts +2 -2
- package/dist/esm/lib/use-security-settings.js +5 -27
- package/dist/esm/lib/use-security-settings.js.map +1 -1
- package/dist/esm/lib/user-actions-dropdown.d.ts +3 -2
- package/dist/esm/lib/user-actions-dropdown.js +2 -6
- package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
- package/dist/esm/lib/user-api-keys/revoke-user-api-key-dialog.js +3 -11
- package/dist/esm/lib/user-api-keys/revoke-user-api-key-dialog.js.map +1 -1
- package/dist/esm/lib/user-profile.d.ts +5 -2
- package/dist/esm/lib/user-profile.js +15 -6
- package/dist/esm/lib/user-profile.js.map +1 -1
- package/dist/esm/lib/user-security.d.ts +6 -2
- package/dist/esm/lib/user-security.js +4 -5
- package/dist/esm/lib/user-security.js.map +1 -1
- package/dist/esm/lib/user-sessions.d.ts +6 -4
- package/dist/esm/lib/user-sessions.js +2 -2
- package/dist/esm/lib/user-sessions.js.map +1 -1
- package/dist/esm/lib/users-filter.d.ts +4 -3
- package/dist/esm/lib/users-filter.js.map +1 -1
- package/dist/esm/lib/users-management-context.d.ts +4 -18
- package/dist/esm/lib/users-management-context.js.map +1 -1
- package/dist/esm/lib/users-management-state.d.ts +4 -25
- package/dist/esm/lib/users-management-state.js.map +1 -1
- package/dist/esm/lib/users-management.d.ts +7 -7
- package/dist/esm/lib/users-management.js.map +1 -1
- package/dist/esm/lib/view-dns-record-dialog.d.ts +3 -4
- package/dist/esm/lib/view-dns-record-dialog.js.map +1 -1
- package/dist/esm/organization-switcher.client.d.ts +3 -1
- package/dist/esm/organization-switcher.client.js +10 -6
- package/dist/esm/organization-switcher.client.js.map +1 -1
- package/dist/esm/pipes-admin.client.js +10 -4
- package/dist/esm/pipes-admin.client.js.map +1 -1
- package/dist/esm/pipes.client.js +17 -14
- package/dist/esm/pipes.client.js.map +1 -1
- package/dist/esm/user-BE5sIud6.d.ts +502 -0
- package/dist/esm/user-profile.client.d.ts +4 -1
- package/dist/esm/user-profile.client.js +2 -2
- package/dist/esm/user-profile.client.js.map +1 -1
- package/dist/esm/user-security.client.d.ts +2 -0
- package/dist/esm/user-security.client.js +28 -14
- package/dist/esm/user-security.client.js.map +1 -1
- package/dist/esm/user-sessions.client.d.ts +2 -0
- package/dist/esm/user-sessions.client.js +16 -30
- package/dist/esm/user-sessions.client.js.map +1 -1
- package/dist/esm/users-management.client.d.ts +4 -1
- package/dist/esm/users-management.client.js +2 -5
- package/dist/esm/users-management.client.js.map +1 -1
- package/dist/esm/utils.js +2 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api/user-api-key.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/api/user-api-key.ts"],"sourcesContent":["import { keepPreviousData, useQueryClient } from \"@tanstack/react-query\";\nimport type {\n CreateUserApiKeyRequest,\n CreateUserApiKeyResponse,\n ListUserApiKeysResponse,\n ListUserApiKeysResponseData,\n} from \"../../api/endpoint.js\";\nimport type {\n CreateUserApiKeyMutation,\n ExpireUserApiKeyMutation,\n UserApiKeyFieldsFragment,\n} from \"../../api/client-graphql/generated.js\";\nimport {\n clientGraphqlQueryKey,\n useClientGraphqlMutation,\n useClientGraphqlQuery,\n} from \"../../api/client-graphql/hooks.js\";\nimport { useUserApiKeysContext } from \"../user-api-keys/user-api-keys-context.js\";\nimport { API_KEYS_PAGE_SIZE, apiKeyMutationFailure } from \"./api-key.js\";\n\n// TODO(client-graphql): see `useListOrganizationApiKeyPermissions`.\nexport {\n useListUserApiKeyPermissions,\n type CreateUserApiKeyResponse,\n type ListUserApiKeyPermission,\n type ListUserApiKeysResponse,\n type ListUserApiKeysResponseData,\n} from \"../../api/endpoint.js\";\n\nexport const userApiKeysQueryKey = clientGraphqlQueryKey(\"ListUserApiKeys\");\n\nexport function toUserApiKey(\n apiKey: UserApiKeyFieldsFragment,\n): ListUserApiKeysResponseData {\n return {\n id: apiKey.id,\n owner: {\n type: \"user\",\n id: apiKey.owner.id,\n email: apiKey.owner.email,\n firstName: apiKey.owner.firstName ?? null,\n lastName: apiKey.owner.lastName ?? null,\n displayName: apiKey.owner.displayName,\n },\n name: apiKey.name,\n obfuscatedValue: apiKey.obfuscatedValue,\n createdAt: apiKey.createdAt,\n lastUsedAt: apiKey.lastUsedAt ?? null,\n expiresAt: apiKey.expiresAt ?? null,\n permissions: apiKey.permissions,\n };\n}\n\nfunction unwrapCreateUserApiKey(\n result: CreateUserApiKeyMutation[\"createUserApiKey\"],\n): CreateUserApiKeyResponse {\n switch (result.__typename) {\n case \"UserApiKeyCreated\": {\n const { owner: _owner, ...apiKey } = toUserApiKey(result.apiKey);\n return { ...apiKey, value: result.value };\n }\n case \"ApiKeyPermissionsNotHeld\":\n case \"ApiKeyPermissionsUnsupportedForToken\":\n case \"InvalidApiKeyExpiration\":\n case \"InvalidApiKeyName\":\n case \"InvalidApiKeyPermissions\":\n throw apiKeyMutationFailure(result.__typename, result.message);\n }\n}\n\nfunction unwrapExpireUserApiKey(\n result: ExpireUserApiKeyMutation[\"expireUserApiKey\"],\n): ListUserApiKeysResponseData {\n switch (result.__typename) {\n case \"UserApiKeyExpired\":\n return toUserApiKey(result.apiKey);\n case \"ApiKeyAlreadyExpired\":\n throw apiKeyMutationFailure(\n result.__typename,\n \"API key is already expired\",\n );\n }\n}\n\nexport const useUserApiKeys = () => {\n const {\n state: { pagination, searchQuery },\n } = useUserApiKeysContext();\n const { before, after } = pagination || {};\n const variables = {\n after: after ?? undefined,\n before: before ?? undefined,\n limit: API_KEYS_PAGE_SIZE,\n search: searchQuery || undefined,\n };\n\n return useClientGraphqlQuery({\n queryKey: clientGraphqlQueryKey(\"ListUserApiKeys\", variables),\n queryFn: async (sdk) => {\n const { userApiKeys } = await sdk.ListUserApiKeys(variables);\n return userApiKeys;\n },\n select: (list): ListUserApiKeysResponse => ({\n data: list.data.map(toUserApiKey),\n list_metadata: {\n after: list.listMetadata.after ?? undefined,\n before: list.listMetadata.before ?? undefined,\n },\n }),\n placeholderData: keepPreviousData,\n });\n};\n\nexport const useInvalidateUserApiKeys = () => {\n const queryClient = useQueryClient();\n return () => queryClient.invalidateQueries({ queryKey: userApiKeysQueryKey });\n};\n\nexport const useCreateUserApiKeyWithInvalidation = () => {\n const invalidate = useInvalidateUserApiKeys();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, { data }: { data: CreateUserApiKeyRequest }) => {\n const { createUserApiKey: result } = await sdk.CreateUserApiKey({\n input: {\n name: data.name,\n permissions: data.permissions,\n expiresAt: data.expiresAt ?? null,\n },\n });\n return unwrapCreateUserApiKey(result);\n },\n onSuccess: invalidate,\n });\n};\n\nexport const useDeleteUserApiKey = ({\n onSuccess,\n}: { onSuccess?: () => void } = {}) => {\n const invalidate = useInvalidateUserApiKeys();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, { apiKeyId }: { apiKeyId: string }) => {\n const { deleteUserApiKey } = await sdk.DeleteUserApiKey({ apiKeyId });\n return toUserApiKey(deleteUserApiKey);\n },\n onSuccess: () => {\n void invalidate();\n onSuccess?.();\n },\n });\n};\n\nexport const useExpireUserApiKey = () => {\n const invalidate = useInvalidateUserApiKeys();\n\n return useClientGraphqlMutation({\n mutationFn: async (\n sdk,\n { apiKeyId, expiresAt }: { apiKeyId: string; expiresAt: string | null },\n ) => {\n const { expireUserApiKey: result } = await sdk.ExpireUserApiKey({\n input: { apiKeyId, expiresAt },\n });\n return unwrapExpireUserApiKey(result);\n },\n onSuccess: invalidate,\n });\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import '
|
|
1
|
+
import '../../api/client-graphql/generated.js';
|
|
2
|
+
import '@tanstack/react-query';
|
|
3
|
+
export { L as ListMetadata, a as Member, g as MemberAction, M as MembersQueryResult, b as Role, R as RolesAndConfig, l as useDeleteUser, k as useInviteUser, n as useResendUserInvite, m as useRevokeUserInvite, h as useRolesAndConfig, j as useUpdateUserRole, i as useUsers } from '../../user-BE5sIud6.js';
|
|
4
|
+
import 'graphql-request';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../users-management-state.js';
|
|
7
|
-
|
|
8
|
-
declare const useUsers: (context?: UsersManagementContextType) => _tanstack_react_query.UseQueryResult<MembersResponse, Members403 | Members404> & {
|
|
9
|
-
queryKey: readonly unknown[] & {
|
|
10
|
-
[dataTagSymbol]: MembersResponse;
|
|
11
|
-
[dataTagErrorSymbol]: Members403 | Members404;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
declare const useUpdateUserRole: typeof useUpdateMember;
|
|
15
|
-
declare const useInviteUser: typeof useInviteMember;
|
|
16
|
-
declare const useDeleteUser: () => _tanstack_react_query.UseMutationResult<RemoveMemberResponse, RemoveMember400 | RemoveMember403 | RemoveMember404, {
|
|
17
|
-
userId: string;
|
|
18
|
-
}, unknown>;
|
|
19
|
-
declare const useRevokeUserInvite: () => _tanstack_react_query.UseMutationResult<RevokeMemberResponse, RevokeInvite400 | RevokeInvite403 | RevokeInvite404, {
|
|
20
|
-
userId: string;
|
|
21
|
-
}, unknown>;
|
|
22
|
-
declare const useResendUserInvite: () => _tanstack_react_query.UseMutationResult<ResendInviteResponse, ResendInvite400 | ResendInvite403 | ResendInvite404 | ResendInvite422, {
|
|
23
|
-
userId: string;
|
|
24
|
-
}, unknown>;
|
|
25
|
-
|
|
26
|
-
export { useDeleteUser, useInviteUser, useResendUserInvite, useRevokeUserInvite, useUpdateUserRole, useUsers };
|
package/dist/esm/lib/api/user.js
CHANGED
|
@@ -1,93 +1,207 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getMembersQueryKey,
|
|
3
|
-
useInviteMember,
|
|
4
|
-
useMembers,
|
|
5
|
-
useRemoveMember,
|
|
6
|
-
useResendInvite,
|
|
7
|
-
useRevokeInvite,
|
|
8
|
-
useUpdateMember
|
|
9
|
-
} from "../../api/endpoint.js";
|
|
10
1
|
import { keepPreviousData, useQueryClient } from "@tanstack/react-query";
|
|
2
|
+
import {
|
|
3
|
+
clientGraphqlQueryKey,
|
|
4
|
+
useClientGraphqlMutation,
|
|
5
|
+
useClientGraphqlQuery
|
|
6
|
+
} from "../../api/client-graphql/hooks.js";
|
|
7
|
+
import { ApiError } from "../../api/errors.js";
|
|
11
8
|
import { USER_ROW_LIMIT } from "../constants.js";
|
|
12
9
|
import {
|
|
13
10
|
useUsersManagementContext
|
|
14
11
|
} from "../users-management-context.js";
|
|
12
|
+
const MEMBER_ACTIONS = {
|
|
13
|
+
EditRole: "edit-role",
|
|
14
|
+
ResendInvite: "resend-invite",
|
|
15
|
+
RevokeInvite: "revoke-invite",
|
|
16
|
+
RevokeMembership: "revoke-membership"
|
|
17
|
+
};
|
|
18
|
+
function toMember(member) {
|
|
19
|
+
return {
|
|
20
|
+
...member,
|
|
21
|
+
actions: member.actions.map((action) => MEMBER_ACTIONS[action]),
|
|
22
|
+
isLoggedInUser: member.isCurrentUser
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function toMembersQueryResult(data) {
|
|
26
|
+
const { organizationMemberships } = data;
|
|
27
|
+
return {
|
|
28
|
+
data: organizationMemberships.data.map(toMember),
|
|
29
|
+
listMetadata: {
|
|
30
|
+
before: organizationMemberships.listMetadata.before ?? null,
|
|
31
|
+
after: organizationMemberships.listMetadata.after ?? null
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const EMPTY_ROLES_AND_CONFIG = {
|
|
36
|
+
roles: { multipleRolesEnabled: false, roles: [] }
|
|
37
|
+
};
|
|
38
|
+
const useRolesAndConfig = () => {
|
|
39
|
+
const query = useClientGraphqlQuery({
|
|
40
|
+
queryKey: clientGraphqlQueryKey("ListRoles"),
|
|
41
|
+
queryFn: (sdk) => sdk.ListRoles(),
|
|
42
|
+
select: (data) => data.roles,
|
|
43
|
+
initialData: EMPTY_ROLES_AND_CONFIG
|
|
44
|
+
});
|
|
45
|
+
return { ...query, data: query.data ?? EMPTY_ROLES_AND_CONFIG.roles };
|
|
46
|
+
};
|
|
15
47
|
const useUsers = (context) => {
|
|
16
48
|
const {
|
|
17
49
|
state: { pagination, role, searchQuery }
|
|
18
50
|
} = useUsersManagementContext(context);
|
|
19
|
-
const limit = USER_ROW_LIMIT;
|
|
20
51
|
const { before, after } = pagination || {};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
);
|
|
52
|
+
const variables = {
|
|
53
|
+
after: after ?? null,
|
|
54
|
+
before: before ?? null,
|
|
55
|
+
limit: USER_ROW_LIMIT,
|
|
56
|
+
roleSlug: role ?? null,
|
|
57
|
+
search: searchQuery ?? null
|
|
58
|
+
};
|
|
59
|
+
return useClientGraphqlQuery({
|
|
60
|
+
queryKey: clientGraphqlQueryKey("ListOrganizationMemberships", variables),
|
|
61
|
+
queryFn: (sdk) => sdk.ListOrganizationMemberships(variables),
|
|
62
|
+
select: toMembersQueryResult,
|
|
63
|
+
placeholderData: keepPreviousData
|
|
64
|
+
});
|
|
35
65
|
};
|
|
36
|
-
const
|
|
66
|
+
const useInvalidateMembers = () => {
|
|
37
67
|
const queryClient = useQueryClient();
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
onSuccess: () => {
|
|
41
|
-
queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });
|
|
42
|
-
}
|
|
43
|
-
}
|
|
68
|
+
return () => queryClient.invalidateQueries({
|
|
69
|
+
queryKey: clientGraphqlQueryKey("ListOrganizationMemberships")
|
|
44
70
|
});
|
|
45
71
|
};
|
|
72
|
+
function mutationFailure(typename, message) {
|
|
73
|
+
return new ApiError({
|
|
74
|
+
message,
|
|
75
|
+
status: 400,
|
|
76
|
+
queryType: "mutation",
|
|
77
|
+
context: { typename }
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const useUpdateUserRole = () => {
|
|
81
|
+
const invalidateMembers = useInvalidateMembers();
|
|
82
|
+
return useClientGraphqlMutation({
|
|
83
|
+
mutationFn: async (sdk, input) => {
|
|
84
|
+
const { updateMemberRole: result } = await sdk.UpdateMemberRole({
|
|
85
|
+
input
|
|
86
|
+
});
|
|
87
|
+
return unwrapUpdateMemberRole(result);
|
|
88
|
+
},
|
|
89
|
+
onSuccess: invalidateMembers
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
function unwrapUpdateMemberRole(result) {
|
|
93
|
+
switch (result.__typename) {
|
|
94
|
+
case "MemberRoleUpdated":
|
|
95
|
+
return result.member;
|
|
96
|
+
case "MemberNotFound":
|
|
97
|
+
throw mutationFailure(result.__typename, "Cannot edit role for user");
|
|
98
|
+
case "RoleNotFound":
|
|
99
|
+
throw mutationFailure(result.__typename, "Invalid role");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
46
102
|
const useInviteUser = () => {
|
|
47
|
-
const
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
103
|
+
const invalidateMembers = useInvalidateMembers();
|
|
104
|
+
return useClientGraphqlMutation({
|
|
105
|
+
mutationFn: async (sdk, input) => {
|
|
106
|
+
const { inviteUser: result } = await sdk.InviteUser({ input });
|
|
107
|
+
return unwrapInviteUser(result);
|
|
108
|
+
},
|
|
109
|
+
onSuccess: invalidateMembers
|
|
54
110
|
});
|
|
55
111
|
};
|
|
112
|
+
function unwrapInviteUser(result) {
|
|
113
|
+
switch (result.__typename) {
|
|
114
|
+
case "UserInvited":
|
|
115
|
+
return result.invitation;
|
|
116
|
+
case "InviteeAlreadyMember":
|
|
117
|
+
throw mutationFailure(result.__typename, "User already exists");
|
|
118
|
+
case "InviteeAlreadyInvited":
|
|
119
|
+
throw mutationFailure(result.__typename, "User already invited");
|
|
120
|
+
case "InvalidInviteeEmail":
|
|
121
|
+
case "InviteeEmailNotDeliverable":
|
|
122
|
+
throw mutationFailure(result.__typename, "Invalid email");
|
|
123
|
+
case "InvalidInviteeRole":
|
|
124
|
+
throw mutationFailure(result.__typename, "Invalid role");
|
|
125
|
+
case "InvalidInvitationExpiry":
|
|
126
|
+
throw mutationFailure(result.__typename, "Invalid input");
|
|
127
|
+
case "OrganizationBlockedFromSendingInvites":
|
|
128
|
+
throw mutationFailure(
|
|
129
|
+
result.__typename,
|
|
130
|
+
"This organization is not allowed to send invites."
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
56
134
|
const useDeleteUser = () => {
|
|
57
|
-
const
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
135
|
+
const invalidateMembers = useInvalidateMembers();
|
|
136
|
+
return useClientGraphqlMutation({
|
|
137
|
+
mutationFn: async (sdk, input) => {
|
|
138
|
+
const { removeMember: result } = await sdk.RemoveMember({ input });
|
|
139
|
+
return unwrapRemoveMember(result);
|
|
140
|
+
},
|
|
141
|
+
onSuccess: invalidateMembers
|
|
64
142
|
});
|
|
65
143
|
};
|
|
144
|
+
function unwrapRemoveMember(result) {
|
|
145
|
+
switch (result.__typename) {
|
|
146
|
+
case "MemberRemoved":
|
|
147
|
+
return result;
|
|
148
|
+
case "MemberNotFound":
|
|
149
|
+
case "MemberIsManagedByDirectory":
|
|
150
|
+
throw mutationFailure(result.__typename, "Cannot revoke membership");
|
|
151
|
+
}
|
|
152
|
+
}
|
|
66
153
|
const useRevokeUserInvite = () => {
|
|
67
|
-
const
|
|
68
|
-
return
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
154
|
+
const invalidateMembers = useInvalidateMembers();
|
|
155
|
+
return useClientGraphqlMutation({
|
|
156
|
+
mutationFn: async (sdk, input) => {
|
|
157
|
+
const { revokeInvitation: result } = await sdk.RevokeInvitation({
|
|
158
|
+
input
|
|
159
|
+
});
|
|
160
|
+
return unwrapRevokeInvitation(result);
|
|
161
|
+
},
|
|
162
|
+
onSuccess: invalidateMembers
|
|
74
163
|
});
|
|
75
164
|
};
|
|
165
|
+
function unwrapRevokeInvitation(result) {
|
|
166
|
+
switch (result.__typename) {
|
|
167
|
+
case "InvitationRevoked":
|
|
168
|
+
return result.invitation;
|
|
169
|
+
case "InvitationNotFound":
|
|
170
|
+
throw mutationFailure(result.__typename, "User not invited");
|
|
171
|
+
case "InvitationNotPending":
|
|
172
|
+
throw mutationFailure(result.__typename, "User already accepted invite");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
76
175
|
const useResendUserInvite = () => {
|
|
77
|
-
const
|
|
78
|
-
return
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
176
|
+
const invalidateMembers = useInvalidateMembers();
|
|
177
|
+
return useClientGraphqlMutation({
|
|
178
|
+
mutationFn: async (sdk, input) => {
|
|
179
|
+
const { resendInvitation: result } = await sdk.ResendInvitation({
|
|
180
|
+
input
|
|
181
|
+
});
|
|
182
|
+
return unwrapResendInvitation(result);
|
|
183
|
+
},
|
|
184
|
+
onSuccess: invalidateMembers
|
|
84
185
|
});
|
|
85
186
|
};
|
|
187
|
+
function unwrapResendInvitation(result) {
|
|
188
|
+
switch (result.__typename) {
|
|
189
|
+
case "InvitationResent":
|
|
190
|
+
return result.invitation;
|
|
191
|
+
case "ResendInvitationNotFound":
|
|
192
|
+
throw mutationFailure(result.__typename, "User not invited");
|
|
193
|
+
case "InviteeAlreadyAccepted":
|
|
194
|
+
throw mutationFailure(result.__typename, "User already accepted invite");
|
|
195
|
+
case "InviteeEmailNotDeliverable":
|
|
196
|
+
throw mutationFailure(result.__typename, "Invalid email");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
86
199
|
export {
|
|
87
200
|
useDeleteUser,
|
|
88
201
|
useInviteUser,
|
|
89
202
|
useResendUserInvite,
|
|
90
203
|
useRevokeUserInvite,
|
|
204
|
+
useRolesAndConfig,
|
|
91
205
|
useUpdateUserRole,
|
|
92
206
|
useUsers
|
|
93
207
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api/user.ts"],"sourcesContent":["import {\n getMembersQueryKey,\n useInviteMember,\n useMembers,\n useRemoveMember,\n useResendInvite,\n useRevokeInvite,\n useUpdateMember,\n} from \"../../api/endpoint.js\";\nimport { keepPreviousData, useQueryClient } from \"@tanstack/react-query\";\nimport { USER_ROW_LIMIT } from \"../constants.js\";\nimport {\n useUsersManagementContext,\n type UsersManagementContextType,\n} from \"../users-management-context.js\";\n\nexport const useUsers = (context?: UsersManagementContextType) => {\n const {\n state: { pagination, role, searchQuery },\n } = useUsersManagementContext(context);\n const limit = USER_ROW_LIMIT;\n const { before, after } = pagination || {};\n\n return useMembers(\n {\n after: after ?? undefined,\n before: before ?? undefined,\n limit: limit.toString(),\n role: role ?? undefined,\n search: searchQuery ?? undefined,\n },\n {\n query: {\n placeholderData: keepPreviousData,\n },\n },\n );\n};\n\nexport const useUpdateUserRole: typeof useUpdateMember = () => {\n const queryClient = useQueryClient();\n\n return useUpdateMember({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });\n },\n },\n });\n};\n\nexport const useInviteUser: typeof useInviteMember = () => {\n const queryClient = useQueryClient();\n\n return useInviteMember({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });\n },\n },\n });\n};\n\nexport const useDeleteUser = () => {\n const queryClient = useQueryClient();\n\n return useRemoveMember({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });\n },\n },\n });\n};\n\nexport const useRevokeUserInvite = () => {\n const queryClient = useQueryClient();\n\n return useRevokeInvite({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });\n },\n },\n });\n};\n\nexport const useResendUserInvite = () => {\n const queryClient = useQueryClient();\n\n return useResendInvite({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: getMembersQueryKey() });\n },\n },\n });\n};\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,sBAAsB;AACjD,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,OAEK;AAEA,MAAM,WAAW,CAAC,YAAyC;AAChE,QAAM;AAAA,IACJ,OAAO,EAAE,YAAY,MAAM,YAAY;AAAA,EACzC,IAAI,0BAA0B,OAAO;AACrC,QAAM,QAAQ;AACd,QAAM,EAAE,QAAQ,MAAM,IAAI,cAAc,CAAC;AAEzC,SAAO;AAAA,IACL;AAAA,MACE,OAAO,SAAS;AAAA,MAChB,QAAQ,UAAU;AAAA,MAClB,OAAO,MAAM,SAAS;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,QAAQ,eAAe;AAAA,IACzB;AAAA,IACA;AAAA,MACE,OAAO;AAAA,QACL,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,oBAA4C,MAAM;AAC7D,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAgB;AAAA,IACrB,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,gBAAwC,MAAM;AACzD,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAgB;AAAA,IACrB,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,gBAAgB,MAAM;AACjC,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAgB;AAAA,IACrB,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,sBAAsB,MAAM;AACvC,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAgB;AAAA,IACrB,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,sBAAsB,MAAM;AACvC,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAgB;AAAA,IACrB,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/api/user.ts"],"sourcesContent":["import { keepPreviousData, useQueryClient } from \"@tanstack/react-query\";\nimport {\n clientGraphqlQueryKey,\n useClientGraphqlMutation,\n useClientGraphqlQuery,\n} from \"../../api/client-graphql/hooks.js\";\nimport type {\n InviteUserInput,\n InviteUserMutation,\n ListOrganizationMembershipsQuery,\n ListRolesQuery,\n OrganizationMemberAction,\n OrganizationMemberFieldsFragment,\n RemoveMemberInput,\n RemoveMemberMutation,\n ResendInvitationInput,\n ResendInvitationMutation,\n RevokeInvitationInput,\n RevokeInvitationMutation,\n RoleFieldsFragment,\n UpdateMemberRoleInput,\n UpdateMemberRoleMutation,\n} from \"../../api/client-graphql/generated.js\";\nimport { ApiError } from \"../../api/errors.js\";\nimport { USER_ROW_LIMIT } from \"../constants.js\";\nimport {\n useUsersManagementContext,\n type UsersManagementContextType,\n} from \"../users-management-context.js\";\n\nexport type Role = RoleFieldsFragment;\nexport type RolesAndConfig = ListRolesQuery[\"roles\"];\n\nexport interface ListMetadata {\n before: string | null;\n after: string | null;\n}\n\nexport type MemberAction =\n | \"edit-role\"\n | \"resend-invite\"\n | \"revoke-invite\"\n | \"revoke-membership\";\n\nexport interface Member extends Omit<\n OrganizationMemberFieldsFragment,\n \"actions\"\n> {\n actions: MemberAction[];\n isLoggedInUser: boolean;\n}\n\nexport interface MembersQueryResult {\n data: Member[];\n listMetadata: ListMetadata;\n}\n\nconst MEMBER_ACTIONS: Record<OrganizationMemberAction, MemberAction> = {\n EditRole: \"edit-role\",\n ResendInvite: \"resend-invite\",\n RevokeInvite: \"revoke-invite\",\n RevokeMembership: \"revoke-membership\",\n};\n\nfunction toMember(member: OrganizationMemberFieldsFragment): Member {\n return {\n ...member,\n actions: member.actions.map((action) => MEMBER_ACTIONS[action]),\n isLoggedInUser: member.isCurrentUser,\n };\n}\n\nfunction toMembersQueryResult(\n data: ListOrganizationMembershipsQuery,\n): MembersQueryResult {\n const { organizationMemberships } = data;\n return {\n data: organizationMemberships.data.map(toMember),\n listMetadata: {\n before: organizationMemberships.listMetadata.before ?? null,\n after: organizationMemberships.listMetadata.after ?? null,\n },\n };\n}\n\nconst EMPTY_ROLES_AND_CONFIG: ListRolesQuery = {\n roles: { multipleRolesEnabled: false, roles: [] },\n};\n\nexport const useRolesAndConfig = () => {\n const query = useClientGraphqlQuery({\n queryKey: clientGraphqlQueryKey(\"ListRoles\"),\n queryFn: (sdk) => sdk.ListRoles(),\n select: (data) => data.roles,\n initialData: EMPTY_ROLES_AND_CONFIG,\n });\n return { ...query, data: query.data ?? EMPTY_ROLES_AND_CONFIG.roles };\n};\n\nexport const useUsers = (context?: UsersManagementContextType) => {\n const {\n state: { pagination, role, searchQuery },\n } = useUsersManagementContext(context);\n const { before, after } = pagination || {};\n const variables = {\n after: after ?? null,\n before: before ?? null,\n limit: USER_ROW_LIMIT,\n roleSlug: role ?? null,\n search: searchQuery ?? null,\n };\n\n return useClientGraphqlQuery({\n queryKey: clientGraphqlQueryKey(\"ListOrganizationMemberships\", variables),\n queryFn: (sdk) => sdk.ListOrganizationMemberships(variables),\n select: toMembersQueryResult,\n placeholderData: keepPreviousData,\n });\n};\n\nconst useInvalidateMembers = () => {\n const queryClient = useQueryClient();\n return () =>\n queryClient.invalidateQueries({\n queryKey: clientGraphqlQueryKey(\"ListOrganizationMemberships\"),\n });\n};\n\nfunction mutationFailure(typename: string, message: string): ApiError {\n return new ApiError({\n message,\n status: 400,\n queryType: \"mutation\",\n context: { typename },\n });\n}\n\nexport const useUpdateUserRole = () => {\n const invalidateMembers = useInvalidateMembers();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, input: UpdateMemberRoleInput) => {\n const { updateMemberRole: result } = await sdk.UpdateMemberRole({\n input,\n });\n return unwrapUpdateMemberRole(result);\n },\n onSuccess: invalidateMembers,\n });\n};\n\nfunction unwrapUpdateMemberRole(\n result: UpdateMemberRoleMutation[\"updateMemberRole\"],\n) {\n switch (result.__typename) {\n case \"MemberRoleUpdated\":\n return result.member;\n case \"MemberNotFound\":\n throw mutationFailure(result.__typename, \"Cannot edit role for user\");\n case \"RoleNotFound\":\n throw mutationFailure(result.__typename, \"Invalid role\");\n }\n}\n\nexport const useInviteUser = () => {\n const invalidateMembers = useInvalidateMembers();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, input: InviteUserInput) => {\n const { inviteUser: result } = await sdk.InviteUser({ input });\n return unwrapInviteUser(result);\n },\n onSuccess: invalidateMembers,\n });\n};\n\nfunction unwrapInviteUser(result: InviteUserMutation[\"inviteUser\"]) {\n switch (result.__typename) {\n case \"UserInvited\":\n return result.invitation;\n case \"InviteeAlreadyMember\":\n throw mutationFailure(result.__typename, \"User already exists\");\n case \"InviteeAlreadyInvited\":\n throw mutationFailure(result.__typename, \"User already invited\");\n case \"InvalidInviteeEmail\":\n case \"InviteeEmailNotDeliverable\":\n throw mutationFailure(result.__typename, \"Invalid email\");\n case \"InvalidInviteeRole\":\n throw mutationFailure(result.__typename, \"Invalid role\");\n case \"InvalidInvitationExpiry\":\n throw mutationFailure(result.__typename, \"Invalid input\");\n case \"OrganizationBlockedFromSendingInvites\":\n throw mutationFailure(\n result.__typename,\n \"This organization is not allowed to send invites.\",\n );\n }\n}\n\nexport const useDeleteUser = () => {\n const invalidateMembers = useInvalidateMembers();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, input: RemoveMemberInput) => {\n const { removeMember: result } = await sdk.RemoveMember({ input });\n return unwrapRemoveMember(result);\n },\n onSuccess: invalidateMembers,\n });\n};\n\nfunction unwrapRemoveMember(result: RemoveMemberMutation[\"removeMember\"]) {\n switch (result.__typename) {\n case \"MemberRemoved\":\n return result;\n case \"MemberNotFound\":\n case \"MemberIsManagedByDirectory\":\n throw mutationFailure(result.__typename, \"Cannot revoke membership\");\n }\n}\n\nexport const useRevokeUserInvite = () => {\n const invalidateMembers = useInvalidateMembers();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, input: RevokeInvitationInput) => {\n const { revokeInvitation: result } = await sdk.RevokeInvitation({\n input,\n });\n return unwrapRevokeInvitation(result);\n },\n onSuccess: invalidateMembers,\n });\n};\n\nfunction unwrapRevokeInvitation(\n result: RevokeInvitationMutation[\"revokeInvitation\"],\n) {\n switch (result.__typename) {\n case \"InvitationRevoked\":\n return result.invitation;\n case \"InvitationNotFound\":\n throw mutationFailure(result.__typename, \"User not invited\");\n case \"InvitationNotPending\":\n throw mutationFailure(result.__typename, \"User already accepted invite\");\n }\n}\n\nexport const useResendUserInvite = () => {\n const invalidateMembers = useInvalidateMembers();\n\n return useClientGraphqlMutation({\n mutationFn: async (sdk, input: ResendInvitationInput) => {\n const { resendInvitation: result } = await sdk.ResendInvitation({\n input,\n });\n return unwrapResendInvitation(result);\n },\n onSuccess: invalidateMembers,\n });\n};\n\nfunction unwrapResendInvitation(\n result: ResendInvitationMutation[\"resendInvitation\"],\n) {\n switch (result.__typename) {\n case \"InvitationResent\":\n return result.invitation;\n case \"ResendInvitationNotFound\":\n throw mutationFailure(result.__typename, \"User not invited\");\n case \"InviteeAlreadyAccepted\":\n throw mutationFailure(result.__typename, \"User already accepted invite\");\n case \"InviteeEmailNotDeliverable\":\n throw mutationFailure(result.__typename, \"Invalid email\");\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,9 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Flex, Box, Text, ScrollArea } from "@radix-ui/themes";
|
|
3
3
|
import { Button, Dialog, Label } from "../elements.js";
|
|
4
4
|
import { ApiKeyDetailsCard } from "./api-key-details-card.js";
|
|
5
|
-
import {
|
|
6
|
-
useListOrganizationApiKeyPermissions
|
|
7
|
-
} from "../../api/endpoint.js";
|
|
5
|
+
import { useListOrganizationApiKeyPermissions } from "../api/api-key.js";
|
|
8
6
|
import { Translation } from "../i18n/translation.js";
|
|
9
7
|
function Permission({
|
|
10
8
|
...permission
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api-keys/api-key-details-dialog.tsx"],"sourcesContent":["import { Flex, Box, Text, ScrollArea } from \"@radix-ui/themes\";\nimport { Button, Dialog, Label } from \"../elements.js\";\nimport { ApiKeyDetailsCard } from \"./api-key-details-card.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/api-keys/api-key-details-dialog.tsx"],"sourcesContent":["import { Flex, Box, Text, ScrollArea } from \"@radix-ui/themes\";\nimport { Button, Dialog, Label } from \"../elements.js\";\nimport { ApiKeyDetailsCard } from \"./api-key-details-card.js\";\nimport type { ListOrganizationApiKeysResponseData } from \"../../api/endpoint.js\";\nimport { useListOrganizationApiKeyPermissions } from \"../api/api-key.js\";\nimport { Translation } from \"../i18n/translation.js\";\n\nfunction Permission({\n ...permission\n}: {\n slug: string;\n name: string;\n description?: string | null;\n}) {\n return (\n <Box className=\"woswidgets-api-key-details-permission\" px=\"4\" py=\"3\">\n <Flex direction=\"column\">\n <Text size=\"2\" weight=\"bold\">\n {permission.name}\n </Text>\n {permission.description ? (\n <Text size=\"2\" color=\"gray\">\n {permission.description}\n </Text>\n ) : null}\n </Flex>\n </Box>\n );\n}\n\nexport function ApiKeyDetailsDialog({\n open,\n onOpenChange,\n apiKey,\n permissions,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n apiKey: ListOrganizationApiKeysResponseData;\n permissions: string[];\n}) {\n const permissionsQuery = useListOrganizationApiKeyPermissions({ limit: 100 });\n const permissionBySlug = new Map(\n permissionsQuery.data?.data.map((permission) => [\n permission.slug,\n permission,\n ]) ?? [],\n );\n const displayedPermissions = permissions.map(\n (slug) =>\n permissionBySlug.get(slug) ?? {\n slug,\n name: slug,\n description: null,\n },\n );\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content maxWidth=\"529px\">\n <Dialog.Title>\n <Translation\n defaultMessage=\"API key details\"\n id=\"dqU4kt\"\n description=\"Dialog title for viewing API key details\"\n />\n </Dialog.Title>\n <Flex direction=\"column\" gap=\"5\">\n <ApiKeyDetailsCard apiKey={apiKey} mt=\"5\" />\n {permissions.length ? (\n <Flex direction=\"column\" gap=\"2\">\n <Label>\n <Translation\n defaultMessage=\"Permissions\"\n id=\"i0XUeg\"\n description=\"Label for API key permissions section\"\n />\n </Label>\n <Flex\n style={{\n borderRadius: \"var(--radius-3)\",\n borderColor: \"var(--gray-6)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n }}\n direction=\"column\"\n align=\"stretch\"\n >\n <ScrollArea style={{ maxHeight: \"calc(50vh - 150px)\" }}>\n {displayedPermissions.map((permission) => (\n <Permission key={permission.slug} {...permission} />\n ))}\n </ScrollArea>\n </Flex>\n </Flex>\n ) : null}\n </Flex>\n <Flex align=\"center\" gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <Button variant=\"secondary\">\n <Translation\n defaultMessage=\"Close\"\n id=\"/4YwoE\"\n description=\"Button to close the API key details dialog\"\n />\n </Button>\n </Dialog.Close>\n </Flex>\n </Dialog.Content>\n </Dialog.Root>\n );\n}\n"],"mappings":"AAgBM,SACE,KADF;AAhBN,SAAS,MAAM,KAAK,MAAM,kBAAkB;AAC5C,SAAS,QAAQ,QAAQ,aAAa;AACtC,SAAS,yBAAyB;AAElC,SAAS,4CAA4C;AACrD,SAAS,mBAAmB;AAE5B,SAAS,WAAW;AAAA,EAClB,GAAG;AACL,GAIG;AACD,SACE,oBAAC,OAAI,WAAU,yCAAwC,IAAG,KAAI,IAAG,KAC/D,+BAAC,QAAK,WAAU,UACd;AAAA,wBAAC,QAAK,MAAK,KAAI,QAAO,QACnB,qBAAW,MACd;AAAA,IACC,WAAW,cACV,oBAAC,QAAK,MAAK,KAAI,OAAM,QAClB,qBAAW,aACd,IACE;AAAA,KACN,GACF;AAEJ;AAEO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,mBAAmB,qCAAqC,EAAE,OAAO,IAAI,CAAC;AAC5E,QAAM,mBAAmB,IAAI;AAAA,IAC3B,iBAAiB,MAAM,KAAK,IAAI,CAAC,eAAe;AAAA,MAC9C,WAAW;AAAA,MACX;AAAA,IACF,CAAC,KAAK,CAAC;AAAA,EACT;AACA,QAAM,uBAAuB,YAAY;AAAA,IACvC,CAAC,SACC,iBAAiB,IAAI,IAAI,KAAK;AAAA,MAC5B;AAAA,MACA,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACJ;AAEA,SACE,oBAAC,OAAO,MAAP,EAAY,MAAY,cACvB,+BAAC,OAAO,SAAP,EAAe,UAAS,SACvB;AAAA,wBAAC,OAAO,OAAP,EACC;AAAA,MAAC;AAAA;AAAA,QACC,gBAAe;AAAA,QACf,IAAG;AAAA,QACH,aAAY;AAAA;AAAA,IACd,GACF;AAAA,IACA,qBAAC,QAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,0BAAC,qBAAkB,QAAgB,IAAG,KAAI;AAAA,MACzC,YAAY,SACX,qBAAC,QAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,4BAAC,SACC;AAAA,UAAC;AAAA;AAAA,YACC,gBAAe;AAAA,YACf,IAAG;AAAA,YACH,aAAY;AAAA;AAAA,QACd,GACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,cAAc;AAAA,cACd,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,YACf;AAAA,YACA,WAAU;AAAA,YACV,OAAM;AAAA,YAEN,8BAAC,cAAW,OAAO,EAAE,WAAW,qBAAqB,GAClD,+BAAqB,IAAI,CAAC,eACzB,oBAAC,cAAkC,GAAG,cAArB,WAAW,IAAsB,CACnD,GACH;AAAA;AAAA,QACF;AAAA,SACF,IACE;AAAA,OACN;AAAA,IACA,oBAAC,QAAK,OAAM,UAAS,KAAI,KAAI,SAAQ,OAAM,IAAG,KAC5C,8BAAC,OAAO,OAAP,EACC,8BAAC,UAAO,SAAQ,aACd;AAAA,MAAC;AAAA;AAAA,QACC,gBAAe;AAAA,QACf,IAAG;AAAA,QACH,aAAY;AAAA;AAAA,IACd,GACF,GACF,GACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
import { CopyButton, CopyIconButton } from "../copy-button.js";
|
|
24
24
|
import * as React from "react";
|
|
25
25
|
import {
|
|
26
|
+
useCreateApiKey,
|
|
26
27
|
useListOrganizationApiKeyPermissions
|
|
27
|
-
} from "
|
|
28
|
-
import { useCreateApiKey } from "../api/api-key.js";
|
|
28
|
+
} from "../api/api-key.js";
|
|
29
29
|
import { useApiKeysContext } from "./api-keys-context.js";
|
|
30
30
|
import { Translation } from "../i18n/translation.js";
|
|
31
31
|
import { useTranslation } from "../i18n/use-translation.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api-keys/create-api-key.tsx"],"sourcesContent":["import {\n Box,\n Checkbox,\n Flex,\n ScrollArea,\n Text,\n Callout,\n} from \"@radix-ui/themes\";\nimport {\n Dialog,\n Label,\n Button,\n TextField,\n TextFieldSlot,\n} from \"../elements.js\";\nimport * as Form from \"../form.js\";\nimport {\n ExclamationTriangleIcon,\n InfoCircledIcon,\n MagnifyingGlassIcon,\n} from \"@radix-ui/react-icons\";\nimport { CopyButton, CopyIconButton } from \"../copy-button.js\";\nimport * as React from \"react\";\nimport {\n useListOrganizationApiKeyPermissions,\n ListOrganizationApiKeyPermission,\n} from \"../../api/endpoint.js\";\nimport { useCreateApiKey } from \"../api/api-key.js\";\nimport { useApiKeysContext } from \"./api-keys-context.js\";\nimport { Translation } from \"../i18n/translation.js\";\nimport { useTranslation } from \"../i18n/use-translation.js\";\nimport {\n ApiKeyExpirationSelectField,\n getApiKeyExpiresAt,\n type ApiKeyExpirationOption,\n} from \"./api-key-expiration.js\";\n\nexport function CreateApiKeyDialog() {\n const {\n state: { createDialogOpen, createdApiKey },\n dispatch,\n } = useApiKeysContext();\n\n return (\n <Dialog.Root\n open={createDialogOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({ type: \"CLOSE_CREATE_DIALOG\" });\n }\n }}\n >\n {createdApiKey ? (\n <SaveApiKeyContent apiKey={createdApiKey.value} />\n ) : (\n <CreateApiKeyForm\n // always remount the form when the dialog is opened to reset the validation errors\n key={`${createDialogOpen}`}\n />\n )}\n </Dialog.Root>\n );\n}\n\nfunction CreateApiKeyForm() {\n const { dispatch } = useApiKeysContext();\n const translate = useTranslation();\n const [errors, setErrors] = React.useState<{\n name: boolean;\n }>({ name: false });\n\n const validate = (formData: FormData) => {\n const name = formData.get(\"name\")?.toString() ?? \"\";\n const errors = { name: !name.trim().length };\n setErrors(errors);\n const isValid = Object.values(errors).every((error) => error === false);\n return isValid;\n };\n\n const {\n mutate: createOrganizationApiKey,\n error,\n isPending,\n isSuccess,\n } = useCreateApiKey();\n const permissions = useListOrganizationApiKeyPermissions({ limit: 100 });\n\n return (\n <Dialog.Content maxWidth=\"529px\">\n <Dialog.Title size=\"4\" weight={\"bold\"}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"eUFRNS\"\n description=\"Dialog title for creating a new API key\"\n />\n </Dialog.Title>\n <Form.Root\n onSubmit={(e) => {\n if (isPending) return;\n e.preventDefault();\n const data = new FormData(e.currentTarget);\n const isValid = validate(data);\n if (!isValid) {\n return;\n }\n\n createOrganizationApiKey(\n {\n data: {\n name: data.get(\"name\")?.toString() ?? \"\",\n permissions: data.getAll(\"permission\").map(String),\n expiresAt:\n getApiKeyExpiresAt(\n (data.get(\"expiration\")?.toString() ??\n \"never\") as ApiKeyExpirationOption,\n ) ?? null,\n },\n },\n {\n onSuccess: (data) => {\n dispatch({ type: \"RESET_PAGINATION\" });\n dispatch({ type: \"SET_CREATED_API_KEY\", apiKey: data });\n },\n },\n );\n }}\n >\n <Flex direction=\"column\" align=\"stretch\" gap=\"4\">\n {error && (\n <Callout.Root color=\"red\" role=\"alert\">\n <Callout.Icon>\n <ExclamationTriangleIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"An error occurred while creating the API key.\"\n id=\"0LyBVd\"\n description=\"Error message when API key creation fails\"\n />\n </Callout.Text>\n </Callout.Root>\n )}\n <Form.Field name=\"name\" asChild>\n <Flex direction=\"column\" align=\"stretch\" gap=\"2\">\n <Form.Label asChild>\n <Label>\n <Translation\n defaultMessage=\"Name\"\n id=\"v0VmRy\"\n description=\"Label for API key name input field\"\n />\n </Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"off\"\n placeholder={translate({\n defaultMessage: \"A descriptive name for the API key\",\n id: \"moyvr4\",\n description: \"Placeholder for API key name input\",\n })}\n />\n </Form.Control>\n {errors.name && (\n <Form.Message asChild>\n <Text size=\"2\" color=\"red\">\n <Translation\n defaultMessage=\"The name is required\"\n id=\"oF9d2V\"\n description=\"Validation error when API key name is empty\"\n />\n </Text>\n </Form.Message>\n )}\n </Flex>\n </Form.Field>\n <ApiKeyExpirationSelectField />\n {permissions.isError ? (\n <Callout.Root color=\"amber\" role=\"status\">\n <Callout.Icon>\n <ExclamationTriangleIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"Permissions are unavailable right now. You can still create an API key without selecting permissions.\"\n id=\"Pw7VUu\"\n description=\"Warning message when API key permissions fail to load\"\n />\n </Callout.Text>\n </Callout.Root>\n ) : null}\n {permissions.isSuccess && permissions.data.data.length > 0 && (\n <PermissionsField permissions={permissions.data.data} />\n )}\n </Flex>\n\n <Flex align=\"center\" gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <Button variant=\"secondary\" disabled={isPending || isSuccess}>\n <Translation\n defaultMessage=\"Cancel\"\n id=\"AyVAAW\"\n description=\"Button to cancel API key creation\"\n />\n </Button>\n </Dialog.Close>\n <Button type=\"submit\" loading={isPending || isSuccess}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"d4BNWL\"\n description=\"Button to submit and create the API key\"\n />\n </Button>\n </Flex>\n </Form.Root>\n </Dialog.Content>\n );\n}\n\nfunction SaveApiKeyContent({ apiKey }: { apiKey: string }) {\n return (\n <Dialog.Content maxWidth=\"529px\">\n <Dialog.Title size=\"4\" weight={\"bold\"}>\n <Translation\n defaultMessage=\"Save your key\"\n id=\"wFFCij\"\n description=\"Dialog title prompting user to save their API key\"\n />\n </Dialog.Title>\n <Dialog.Description>\n <Translation\n defaultMessage=\"Please save this API key in a secure location. If you lose it, you'll need to generate a new one.\"\n id=\"sy+2x7\"\n description=\"Warning message about saving the API key\"\n />\n </Dialog.Description>\n <Callout.Root mt=\"5\" mb=\"4\">\n <Callout.Icon>\n <InfoCircledIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"You won't be able to access the key again. Please copy it now.\"\n id=\"EFAK/K\"\n description=\"Callout warning that the key won't be accessible again\"\n />\n </Callout.Text>\n </Callout.Root>\n <TextField value={apiKey} readOnly>\n <TextFieldSlot side=\"right\">\n <CopyIconButton value={apiKey} />\n </TextFieldSlot>\n </TextField>\n <Flex align=\"center\" gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <CopyButton value={apiKey}>\n <Translation\n defaultMessage=\"Copy and close\"\n id=\"ViYtvQ\"\n description=\"Button to copy API key and close dialog\"\n />\n </CopyButton>\n </Dialog.Close>\n </Flex>\n </Dialog.Content>\n );\n}\n\nfunction Permission({\n checked,\n permission,\n onChange,\n}: {\n checked: boolean;\n permission: ListOrganizationApiKeyPermission;\n onChange: (isChecked: boolean) => void;\n}) {\n return (\n <label\n htmlFor={permission.slug}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"var(--space-2) var(--space-4)\",\n gap: \"var(--space-3)\",\n borderBottom: \"1px solid var(--gray-6)\",\n cursor: \"pointer\",\n }}\n >\n <Checkbox\n checked={checked}\n id={permission.slug}\n name=\"permission\"\n value={permission.slug}\n onCheckedChange={(e) => onChange(e === \"indeterminate\" ? false : e)}\n />\n <Flex direction=\"column\">\n <Text size=\"2\" weight=\"bold\">\n {permission.name}\n </Text>\n <Text size=\"2\" color=\"gray\">\n {permission.description}\n </Text>\n </Flex>\n </label>\n );\n}\n\nfunction PermissionsField({\n permissions = [],\n}: {\n permissions: ListOrganizationApiKeyPermission[];\n}) {\n const [selectedPermissions, setSelectedPermissions] = React.useState<\n ListOrganizationApiKeyPermission[]\n >([]);\n const [filter, setFilter] = React.useState(\"\");\n const fieldRef = React.useRef<HTMLDivElement | null>(null);\n const translate = useTranslation();\n const filteredPermissions = React.useMemo(() => {\n return permissions.filter((p) => {\n return (\n !filter.trim().length ||\n p.description?.toLowerCase().match(filter.toLowerCase()) ||\n p.name.toLowerCase().match(filter.toLowerCase()) ||\n p.slug.toLowerCase().match(filter.toLowerCase())\n );\n });\n }, [permissions, filter]);\n\n React.useEffect(() => {\n const onResize = () => {\n if (fieldRef.current && filteredPermissions.length !== 0) {\n fieldRef.current.style.minHeight = \"unset\";\n }\n };\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, [filteredPermissions.length]);\n\n return (\n <Form.Field name=\"permissions\" asChild>\n <Flex direction=\"column\" align=\"stretch\" gap=\"1\">\n <Form.Label asChild>\n <Label>\n <Translation\n defaultMessage=\"Permissions\"\n id=\"6YN1wO\"\n description=\"Label for API key permissions field\"\n />\n </Label>\n </Form.Label>\n <Text size=\"2\" mb=\"2\" color=\"gray\">\n <Translation\n defaultMessage=\"Only enable the minimum permissions required for your use case.\"\n id=\"q2VEtG\"\n description=\"Help text for API key permissions selection\"\n />\n </Text>\n <Flex\n ref={fieldRef}\n style={{\n borderRadius: \"var(--radius-3)\",\n borderColor: \"var(--gray-6)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n }}\n direction=\"column\"\n align=\"stretch\"\n >\n <TextField\n name=\"search\"\n value={filter}\n size=\"2\"\n onChange={(e) => {\n if (fieldRef.current) {\n fieldRef.current.style.minHeight =\n fieldRef.current.clientHeight + 2 + \"px\";\n }\n setFilter(e.target.value);\n }}\n style={{\n height: \"40px\",\n borderRadius: \"var(--radius-3) var(--radius-3) 0 0\",\n boxShadow: \"none\",\n }}\n placeholder={translate({\n defaultMessage: \"Search\",\n id: \"iyNcly\",\n description: \"Placeholder for permissions search input\",\n })}\n >\n <TextFieldSlot side=\"left\" px=\"3\">\n <MagnifyingGlassIcon aria-hidden=\"true\" height=\"16\" width=\"16\" />\n </TextFieldSlot>\n </TextField>\n {filteredPermissions.length > 0 ? (\n <>\n <ScrollArea\n scrollbars=\"vertical\"\n style={{\n flex: 1,\n maxHeight: \"calc(50vh - 150px)\",\n border: \"1px solid var(--gray-6)\",\n borderWidth: \"1px 0 0\",\n }}\n >\n {filteredPermissions.map((permission) => (\n <Permission\n checked={selectedPermissions.some(\n (sp) => sp.slug === permission.slug,\n )}\n key={permission.slug}\n permission={permission}\n onChange={(isChecked) =>\n setSelectedPermissions((prev) =>\n isChecked\n ? [...prev, permission]\n : prev.filter((sp) => sp.slug !== permission.slug),\n )\n }\n />\n ))}\n </ScrollArea>\n <Box\n px=\"4\"\n py=\"3\"\n mt={\"-1px\"}\n flexGrow=\"0\"\n style={{\n borderTop: \"0 solid var(--gray-6)\",\n borderWidth: \"1px 0 0\",\n }}\n >\n <SelectedPermissions\n total={permissions.length}\n selected={selectedPermissions.length}\n onToggle={() =>\n setSelectedPermissions((prev) =>\n prev.length === permissions.length ? [] : permissions,\n )\n }\n />\n </Box>\n </>\n ) : (\n <Flex\n gap=\"4\"\n pt=\"6\"\n pb=\"6\"\n style={{ borderTop: \"1px solid var(--gray-6)\" }}\n flexGrow=\"1\"\n justify=\"center\"\n align=\"center\"\n direction=\"column\"\n >\n <MagnifyingGlassIcon\n style={{\n color: \"var(--gray-9)\",\n width: \"var(--space-5)\",\n height: \"var(--space-5)\",\n }}\n />\n <Text size=\"2\" align=\"center\" mb=\"2\" wrap=\"balance\" weight=\"bold\">\n <Translation\n defaultMessage=\"No permissions match your search\"\n id=\"xjqT9f\"\n description=\"Empty state message when no permissions match search\"\n />\n </Text>\n <Button\n variant=\"secondary\"\n size=\"1\"\n onClick={() => setFilter(\"\")}\n >\n <Translation\n defaultMessage=\"Clear search\"\n id=\"YrMs63\"\n description=\"Button to clear permissions search\"\n />\n </Button>\n </Flex>\n )}\n </Flex>\n </Flex>\n </Form.Field>\n );\n}\n\nfunction SelectedPermissions({\n total,\n selected,\n onToggle,\n}: {\n total: number;\n selected: number;\n onToggle: () => void;\n}) {\n return (\n <Flex align=\"center\" gap=\"2\">\n <Text size=\"1\" style={{ lineHeight: 1, color: \"var(--gray-11)\" }}>\n {selected === 0 ? (\n <Translation\n defaultMessage=\"No permissions selected\"\n id=\"FqU9hv\"\n description=\"Message when no permissions are selected\"\n />\n ) : selected === 1 ? (\n <Translation\n defaultMessage=\"1 permission selected\"\n id=\"VouLgT\"\n description=\"Message showing count of selected permissions\"\n />\n ) : (\n <Translation\n defaultMessage=\"{count} permissions selected\"\n id=\"ZL90DI\"\n description=\"Message showing count of selected permissions\"\n values={{ count: selected }}\n />\n )}\n </Text>\n <Text\n size=\"1\"\n onClick={onToggle}\n style={{ cursor: \"pointer\", color: \"var(--accent-10)\" }}\n >\n {total === selected ? (\n <Translation\n defaultMessage=\"Deselect all\"\n id=\"63f7SY\"\n description=\"Button to deselect all permissions\"\n />\n ) : (\n <Translation\n defaultMessage=\"Select all\"\n id=\"onTqlA\"\n description=\"Button to select all permissions\"\n />\n )}\n </Text>\n </Flex>\n );\n}\n\nexport function CreateApiKeyButton() {\n const { dispatch } = useApiKeysContext();\n return (\n <Button onClick={() => dispatch({ type: \"OPEN_CREATE_DIALOG\" })}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"vq5724\"\n description=\"Button to open create API key dialog\"\n />\n </Button>\n );\n}\n"],"mappings":"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","names":["errors","error","data"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/api-keys/create-api-key.tsx"],"sourcesContent":["import {\n Box,\n Checkbox,\n Flex,\n ScrollArea,\n Text,\n Callout,\n} from \"@radix-ui/themes\";\nimport {\n Dialog,\n Label,\n Button,\n TextField,\n TextFieldSlot,\n} from \"../elements.js\";\nimport * as Form from \"../form.js\";\nimport {\n ExclamationTriangleIcon,\n InfoCircledIcon,\n MagnifyingGlassIcon,\n} from \"@radix-ui/react-icons\";\nimport { CopyButton, CopyIconButton } from \"../copy-button.js\";\nimport * as React from \"react\";\nimport type { ListOrganizationApiKeyPermission } from \"../../api/endpoint.js\";\nimport {\n useCreateApiKey,\n useListOrganizationApiKeyPermissions,\n} from \"../api/api-key.js\";\nimport { useApiKeysContext } from \"./api-keys-context.js\";\nimport { Translation } from \"../i18n/translation.js\";\nimport { useTranslation } from \"../i18n/use-translation.js\";\nimport {\n ApiKeyExpirationSelectField,\n getApiKeyExpiresAt,\n type ApiKeyExpirationOption,\n} from \"./api-key-expiration.js\";\n\nexport function CreateApiKeyDialog() {\n const {\n state: { createDialogOpen, createdApiKey },\n dispatch,\n } = useApiKeysContext();\n\n return (\n <Dialog.Root\n open={createDialogOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({ type: \"CLOSE_CREATE_DIALOG\" });\n }\n }}\n >\n {createdApiKey ? (\n <SaveApiKeyContent apiKey={createdApiKey.value} />\n ) : (\n <CreateApiKeyForm\n // always remount the form when the dialog is opened to reset the validation errors\n key={`${createDialogOpen}`}\n />\n )}\n </Dialog.Root>\n );\n}\n\nfunction CreateApiKeyForm() {\n const { dispatch } = useApiKeysContext();\n const translate = useTranslation();\n const [errors, setErrors] = React.useState<{\n name: boolean;\n }>({ name: false });\n\n const validate = (formData: FormData) => {\n const name = formData.get(\"name\")?.toString() ?? \"\";\n const errors = { name: !name.trim().length };\n setErrors(errors);\n const isValid = Object.values(errors).every((error) => error === false);\n return isValid;\n };\n\n const {\n mutate: createOrganizationApiKey,\n error,\n isPending,\n isSuccess,\n } = useCreateApiKey();\n const permissions = useListOrganizationApiKeyPermissions({ limit: 100 });\n\n return (\n <Dialog.Content maxWidth=\"529px\">\n <Dialog.Title size=\"4\" weight={\"bold\"}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"eUFRNS\"\n description=\"Dialog title for creating a new API key\"\n />\n </Dialog.Title>\n <Form.Root\n onSubmit={(e) => {\n if (isPending) return;\n e.preventDefault();\n const data = new FormData(e.currentTarget);\n const isValid = validate(data);\n if (!isValid) {\n return;\n }\n\n createOrganizationApiKey(\n {\n data: {\n name: data.get(\"name\")?.toString() ?? \"\",\n permissions: data.getAll(\"permission\").map(String),\n expiresAt:\n getApiKeyExpiresAt(\n (data.get(\"expiration\")?.toString() ??\n \"never\") as ApiKeyExpirationOption,\n ) ?? null,\n },\n },\n {\n onSuccess: (data) => {\n dispatch({ type: \"RESET_PAGINATION\" });\n dispatch({ type: \"SET_CREATED_API_KEY\", apiKey: data });\n },\n },\n );\n }}\n >\n <Flex direction=\"column\" align=\"stretch\" gap=\"4\">\n {error && (\n <Callout.Root color=\"red\" role=\"alert\">\n <Callout.Icon>\n <ExclamationTriangleIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"An error occurred while creating the API key.\"\n id=\"0LyBVd\"\n description=\"Error message when API key creation fails\"\n />\n </Callout.Text>\n </Callout.Root>\n )}\n <Form.Field name=\"name\" asChild>\n <Flex direction=\"column\" align=\"stretch\" gap=\"2\">\n <Form.Label asChild>\n <Label>\n <Translation\n defaultMessage=\"Name\"\n id=\"v0VmRy\"\n description=\"Label for API key name input field\"\n />\n </Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"off\"\n placeholder={translate({\n defaultMessage: \"A descriptive name for the API key\",\n id: \"moyvr4\",\n description: \"Placeholder for API key name input\",\n })}\n />\n </Form.Control>\n {errors.name && (\n <Form.Message asChild>\n <Text size=\"2\" color=\"red\">\n <Translation\n defaultMessage=\"The name is required\"\n id=\"oF9d2V\"\n description=\"Validation error when API key name is empty\"\n />\n </Text>\n </Form.Message>\n )}\n </Flex>\n </Form.Field>\n <ApiKeyExpirationSelectField />\n {permissions.isError ? (\n <Callout.Root color=\"amber\" role=\"status\">\n <Callout.Icon>\n <ExclamationTriangleIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"Permissions are unavailable right now. You can still create an API key without selecting permissions.\"\n id=\"Pw7VUu\"\n description=\"Warning message when API key permissions fail to load\"\n />\n </Callout.Text>\n </Callout.Root>\n ) : null}\n {permissions.isSuccess && permissions.data.data.length > 0 && (\n <PermissionsField permissions={permissions.data.data} />\n )}\n </Flex>\n\n <Flex align=\"center\" gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <Button variant=\"secondary\" disabled={isPending || isSuccess}>\n <Translation\n defaultMessage=\"Cancel\"\n id=\"AyVAAW\"\n description=\"Button to cancel API key creation\"\n />\n </Button>\n </Dialog.Close>\n <Button type=\"submit\" loading={isPending || isSuccess}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"d4BNWL\"\n description=\"Button to submit and create the API key\"\n />\n </Button>\n </Flex>\n </Form.Root>\n </Dialog.Content>\n );\n}\n\nfunction SaveApiKeyContent({ apiKey }: { apiKey: string }) {\n return (\n <Dialog.Content maxWidth=\"529px\">\n <Dialog.Title size=\"4\" weight={\"bold\"}>\n <Translation\n defaultMessage=\"Save your key\"\n id=\"wFFCij\"\n description=\"Dialog title prompting user to save their API key\"\n />\n </Dialog.Title>\n <Dialog.Description>\n <Translation\n defaultMessage=\"Please save this API key in a secure location. If you lose it, you'll need to generate a new one.\"\n id=\"sy+2x7\"\n description=\"Warning message about saving the API key\"\n />\n </Dialog.Description>\n <Callout.Root mt=\"5\" mb=\"4\">\n <Callout.Icon>\n <InfoCircledIcon />\n </Callout.Icon>\n <Callout.Text>\n <Translation\n defaultMessage=\"You won't be able to access the key again. Please copy it now.\"\n id=\"EFAK/K\"\n description=\"Callout warning that the key won't be accessible again\"\n />\n </Callout.Text>\n </Callout.Root>\n <TextField value={apiKey} readOnly>\n <TextFieldSlot side=\"right\">\n <CopyIconButton value={apiKey} />\n </TextFieldSlot>\n </TextField>\n <Flex align=\"center\" gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <CopyButton value={apiKey}>\n <Translation\n defaultMessage=\"Copy and close\"\n id=\"ViYtvQ\"\n description=\"Button to copy API key and close dialog\"\n />\n </CopyButton>\n </Dialog.Close>\n </Flex>\n </Dialog.Content>\n );\n}\n\nfunction Permission({\n checked,\n permission,\n onChange,\n}: {\n checked: boolean;\n permission: ListOrganizationApiKeyPermission;\n onChange: (isChecked: boolean) => void;\n}) {\n return (\n <label\n htmlFor={permission.slug}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"var(--space-2) var(--space-4)\",\n gap: \"var(--space-3)\",\n borderBottom: \"1px solid var(--gray-6)\",\n cursor: \"pointer\",\n }}\n >\n <Checkbox\n checked={checked}\n id={permission.slug}\n name=\"permission\"\n value={permission.slug}\n onCheckedChange={(e) => onChange(e === \"indeterminate\" ? false : e)}\n />\n <Flex direction=\"column\">\n <Text size=\"2\" weight=\"bold\">\n {permission.name}\n </Text>\n <Text size=\"2\" color=\"gray\">\n {permission.description}\n </Text>\n </Flex>\n </label>\n );\n}\n\nfunction PermissionsField({\n permissions = [],\n}: {\n permissions: ListOrganizationApiKeyPermission[];\n}) {\n const [selectedPermissions, setSelectedPermissions] = React.useState<\n ListOrganizationApiKeyPermission[]\n >([]);\n const [filter, setFilter] = React.useState(\"\");\n const fieldRef = React.useRef<HTMLDivElement | null>(null);\n const translate = useTranslation();\n const filteredPermissions = React.useMemo(() => {\n return permissions.filter((p) => {\n return (\n !filter.trim().length ||\n p.description?.toLowerCase().match(filter.toLowerCase()) ||\n p.name.toLowerCase().match(filter.toLowerCase()) ||\n p.slug.toLowerCase().match(filter.toLowerCase())\n );\n });\n }, [permissions, filter]);\n\n React.useEffect(() => {\n const onResize = () => {\n if (fieldRef.current && filteredPermissions.length !== 0) {\n fieldRef.current.style.minHeight = \"unset\";\n }\n };\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, [filteredPermissions.length]);\n\n return (\n <Form.Field name=\"permissions\" asChild>\n <Flex direction=\"column\" align=\"stretch\" gap=\"1\">\n <Form.Label asChild>\n <Label>\n <Translation\n defaultMessage=\"Permissions\"\n id=\"6YN1wO\"\n description=\"Label for API key permissions field\"\n />\n </Label>\n </Form.Label>\n <Text size=\"2\" mb=\"2\" color=\"gray\">\n <Translation\n defaultMessage=\"Only enable the minimum permissions required for your use case.\"\n id=\"q2VEtG\"\n description=\"Help text for API key permissions selection\"\n />\n </Text>\n <Flex\n ref={fieldRef}\n style={{\n borderRadius: \"var(--radius-3)\",\n borderColor: \"var(--gray-6)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n }}\n direction=\"column\"\n align=\"stretch\"\n >\n <TextField\n name=\"search\"\n value={filter}\n size=\"2\"\n onChange={(e) => {\n if (fieldRef.current) {\n fieldRef.current.style.minHeight =\n fieldRef.current.clientHeight + 2 + \"px\";\n }\n setFilter(e.target.value);\n }}\n style={{\n height: \"40px\",\n borderRadius: \"var(--radius-3) var(--radius-3) 0 0\",\n boxShadow: \"none\",\n }}\n placeholder={translate({\n defaultMessage: \"Search\",\n id: \"iyNcly\",\n description: \"Placeholder for permissions search input\",\n })}\n >\n <TextFieldSlot side=\"left\" px=\"3\">\n <MagnifyingGlassIcon aria-hidden=\"true\" height=\"16\" width=\"16\" />\n </TextFieldSlot>\n </TextField>\n {filteredPermissions.length > 0 ? (\n <>\n <ScrollArea\n scrollbars=\"vertical\"\n style={{\n flex: 1,\n maxHeight: \"calc(50vh - 150px)\",\n border: \"1px solid var(--gray-6)\",\n borderWidth: \"1px 0 0\",\n }}\n >\n {filteredPermissions.map((permission) => (\n <Permission\n checked={selectedPermissions.some(\n (sp) => sp.slug === permission.slug,\n )}\n key={permission.slug}\n permission={permission}\n onChange={(isChecked) =>\n setSelectedPermissions((prev) =>\n isChecked\n ? [...prev, permission]\n : prev.filter((sp) => sp.slug !== permission.slug),\n )\n }\n />\n ))}\n </ScrollArea>\n <Box\n px=\"4\"\n py=\"3\"\n mt={\"-1px\"}\n flexGrow=\"0\"\n style={{\n borderTop: \"0 solid var(--gray-6)\",\n borderWidth: \"1px 0 0\",\n }}\n >\n <SelectedPermissions\n total={permissions.length}\n selected={selectedPermissions.length}\n onToggle={() =>\n setSelectedPermissions((prev) =>\n prev.length === permissions.length ? [] : permissions,\n )\n }\n />\n </Box>\n </>\n ) : (\n <Flex\n gap=\"4\"\n pt=\"6\"\n pb=\"6\"\n style={{ borderTop: \"1px solid var(--gray-6)\" }}\n flexGrow=\"1\"\n justify=\"center\"\n align=\"center\"\n direction=\"column\"\n >\n <MagnifyingGlassIcon\n style={{\n color: \"var(--gray-9)\",\n width: \"var(--space-5)\",\n height: \"var(--space-5)\",\n }}\n />\n <Text size=\"2\" align=\"center\" mb=\"2\" wrap=\"balance\" weight=\"bold\">\n <Translation\n defaultMessage=\"No permissions match your search\"\n id=\"xjqT9f\"\n description=\"Empty state message when no permissions match search\"\n />\n </Text>\n <Button\n variant=\"secondary\"\n size=\"1\"\n onClick={() => setFilter(\"\")}\n >\n <Translation\n defaultMessage=\"Clear search\"\n id=\"YrMs63\"\n description=\"Button to clear permissions search\"\n />\n </Button>\n </Flex>\n )}\n </Flex>\n </Flex>\n </Form.Field>\n );\n}\n\nfunction SelectedPermissions({\n total,\n selected,\n onToggle,\n}: {\n total: number;\n selected: number;\n onToggle: () => void;\n}) {\n return (\n <Flex align=\"center\" gap=\"2\">\n <Text size=\"1\" style={{ lineHeight: 1, color: \"var(--gray-11)\" }}>\n {selected === 0 ? (\n <Translation\n defaultMessage=\"No permissions selected\"\n id=\"FqU9hv\"\n description=\"Message when no permissions are selected\"\n />\n ) : selected === 1 ? (\n <Translation\n defaultMessage=\"1 permission selected\"\n id=\"VouLgT\"\n description=\"Message showing count of selected permissions\"\n />\n ) : (\n <Translation\n defaultMessage=\"{count} permissions selected\"\n id=\"ZL90DI\"\n description=\"Message showing count of selected permissions\"\n values={{ count: selected }}\n />\n )}\n </Text>\n <Text\n size=\"1\"\n onClick={onToggle}\n style={{ cursor: \"pointer\", color: \"var(--accent-10)\" }}\n >\n {total === selected ? (\n <Translation\n defaultMessage=\"Deselect all\"\n id=\"63f7SY\"\n description=\"Button to deselect all permissions\"\n />\n ) : (\n <Translation\n defaultMessage=\"Select all\"\n id=\"onTqlA\"\n description=\"Button to select all permissions\"\n />\n )}\n </Text>\n </Flex>\n );\n}\n\nexport function CreateApiKeyButton() {\n const { dispatch } = useApiKeysContext();\n return (\n <Button onClick={() => dispatch({ type: \"OPEN_CREATE_DIALOG\" })}>\n <Translation\n defaultMessage=\"Create API key\"\n id=\"vq5724\"\n description=\"Button to open create API key dialog\"\n />\n </Button>\n );\n}\n"],"mappings":"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","names":["errors","error","data"]}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Flex, Callout } from "@radix-ui/themes";
|
|
3
3
|
import { ApiKeyDetailsCard } from "./api-key-details-card.js";
|
|
4
|
-
import {
|
|
5
|
-
getListOrganizationApiKeysQueryKey
|
|
6
|
-
} from "../../api/endpoint.js";
|
|
7
|
-
import { useDeleteOrganizationApiKey } from "../../api/endpoint.js";
|
|
8
|
-
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { useDeleteApiKey } from "../api/api-key.js";
|
|
9
5
|
import { ExclamationTriangleIcon } from "@radix-ui/react-icons";
|
|
10
6
|
import { AlertDialog, Button } from "../elements.js";
|
|
11
7
|
import { Translation } from "../i18n/translation.js";
|
|
@@ -15,22 +11,16 @@ function RevokeApiKeyDialog({
|
|
|
15
11
|
open,
|
|
16
12
|
onOpenChange
|
|
17
13
|
}) {
|
|
18
|
-
const queryClient = useQueryClient();
|
|
19
14
|
const { dispatch } = useApiKeysContext();
|
|
20
15
|
const {
|
|
21
16
|
mutate: deleteOrganizationApiKey,
|
|
22
17
|
isPending,
|
|
23
18
|
error,
|
|
24
19
|
isSuccess
|
|
25
|
-
} =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
queryClient.invalidateQueries({
|
|
30
|
-
queryKey: getListOrganizationApiKeysQueryKey()
|
|
31
|
-
});
|
|
32
|
-
onOpenChange(false);
|
|
33
|
-
}
|
|
20
|
+
} = useDeleteApiKey({
|
|
21
|
+
onSuccess: () => {
|
|
22
|
+
dispatch({ type: "RESET_PAGINATION" });
|
|
23
|
+
onOpenChange(false);
|
|
34
24
|
}
|
|
35
25
|
});
|
|
36
26
|
return /* @__PURE__ */ jsx(AlertDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialog.Content, { maxWidth: "529px", children: [
|