diff --git a/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts index e5ae7f5f3..819f3c264 100644 --- a/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<4122c968a27fbbea7a81d2a87bbc4bc3>> * @lightSyntaxTransform * @nogrep */ @@ -250,13 +250,6 @@ return { "name": "createdAt", "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "expiresAt", - "storageKey": null - }, { "alias": null, "args": null, @@ -366,12 +359,12 @@ return { ] }, "params": { - "cacheID": "afc5598fd9e211b2e7af8ac8bce27511", + "cacheID": "af2ddd3fd12ff396d6e19fa1e630b614", "id": null, "metadata": {}, "name": "InvitationListFragment_RefetchQuery", "operationKind": "query", - "text": "query InvitationListFragment_RefetchQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $first: Int = 20\n $last: Int = null\n $order: InvitationOrder = {direction: ASC, field: CREATED_AT}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...InvitationListFragment_16fISc\n id\n }\n}\n\nfragment InvitationListFragment_16fISc on Organization {\n invitations(first: $first, after: $after, last: $last, before: $before, orderBy: $order) {\n edges {\n node {\n id\n ...InvitationListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment InvitationListItemFragment on Invitation {\n id\n fullName\n email\n role\n status\n createdAt\n expiresAt\n acceptedAt\n canDelete: permission(action: \"iam:invitation:delete\")\n}\n" + "text": "query InvitationListFragment_RefetchQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $first: Int = 20\n $last: Int = null\n $order: InvitationOrder = {direction: ASC, field: CREATED_AT}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...InvitationListFragment_16fISc\n id\n }\n}\n\nfragment InvitationListFragment_16fISc on Organization {\n invitations(first: $first, after: $after, last: $last, before: $before, orderBy: $order) {\n edges {\n node {\n id\n ...InvitationListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment InvitationListItemFragment on Invitation {\n id\n fullName\n email\n role\n status\n createdAt\n acceptedAt\n canDelete: permission(action: \"iam:invitation:delete\")\n}\n" } }; })(); diff --git a/apps/console/src/__generated__/iam/InvitationListItemFragment.graphql.ts b/apps/console/src/__generated__/iam/InvitationListItemFragment.graphql.ts index 8760b5721..99777cbaf 100644 --- a/apps/console/src/__generated__/iam/InvitationListItemFragment.graphql.ts +++ b/apps/console/src/__generated__/iam/InvitationListItemFragment.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<5b60de19e893c841d45ecd555eecf65a>> + * @generated SignedSource<<0ea0836cf3619cc6dc1017ed5dd24cb0>> * @lightSyntaxTransform * @nogrep */ @@ -17,7 +17,6 @@ export type InvitationListItemFragment$data = { readonly canDelete: boolean; readonly createdAt: string; readonly email: string; - readonly expiresAt: string; readonly fullName: string; readonly id: string; readonly role: MembershipRole; @@ -77,13 +76,6 @@ const node: ReaderFragment = { "name": "createdAt", "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "expiresAt", - "storageKey": null - }, { "alias": null, "args": null, @@ -109,6 +101,6 @@ const node: ReaderFragment = { "abstractKey": null }; -(node as any).hash = "c0e21d5dd227cd3fff739dc9f0922657"; +(node as any).hash = "07748312ae877349e46cc169e5473408"; export default node; diff --git a/apps/console/src/__generated__/iam/MemberListFragment.graphql.ts b/apps/console/src/__generated__/iam/MemberListFragment.graphql.ts deleted file mode 100644 index cac91a0bc..000000000 --- a/apps/console/src/__generated__/iam/MemberListFragment.graphql.ts +++ /dev/null @@ -1,244 +0,0 @@ -/** - * @generated SignedSource<<81b275e4cf4b88d7d9e797f5ae20a163>> - * @lightSyntaxTransform - * @nogrep - */ - -/* tslint:disable */ -/* eslint-disable */ -// @ts-nocheck - -import { ReaderFragment } from 'relay-runtime'; -import { FragmentRefs } from "relay-runtime"; -export type MemberListFragment$data = { - readonly id: string; - readonly members: { - readonly __id: string; - readonly edges: ReadonlyArray<{ - readonly node: { - readonly id: string; - readonly " $fragmentSpreads": FragmentRefs<"MemberListItemFragment">; - }; - }>; - readonly totalCount: number | null | undefined; - }; - readonly " $fragmentType": "MemberListFragment"; -}; -export type MemberListFragment$key = { - readonly " $data"?: MemberListFragment$data; - readonly " $fragmentSpreads": FragmentRefs<"MemberListFragment">; -}; - -import MemberListFragment_RefetchQuery_graphql from './MemberListFragment_RefetchQuery.graphql'; - -const node: ReaderFragment = (function(){ -var v0 = [ - "members" -], -v1 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null -}; -return { - "argumentDefinitions": [ - { - "defaultValue": null, - "kind": "LocalArgument", - "name": "after" - }, - { - "defaultValue": null, - "kind": "LocalArgument", - "name": "before" - }, - { - "defaultValue": 20, - "kind": "LocalArgument", - "name": "first" - }, - { - "defaultValue": null, - "kind": "LocalArgument", - "name": "last" - }, - { - "defaultValue": { - "direction": "ASC", - "field": "FULL_NAME" - }, - "kind": "LocalArgument", - "name": "order" - } - ], - "kind": "Fragment", - "metadata": { - "connection": [ - { - "count": null, - "cursor": null, - "direction": "bidirectional", - "path": (v0/*: any*/) - } - ], - "refetch": { - "connection": { - "forward": { - "count": "first", - "cursor": "after" - }, - "backward": { - "count": "last", - "cursor": "before" - }, - "path": (v0/*: any*/) - }, - "fragmentPathInResult": [ - "node" - ], - "operation": MemberListFragment_RefetchQuery_graphql, - "identifierInfo": { - "identifierField": "id", - "identifierQueryVariableName": "id" - } - } - }, - "name": "MemberListFragment", - "selections": [ - { - "kind": "RequiredField", - "field": { - "alias": "members", - "args": [ - { - "kind": "Variable", - "name": "orderBy", - "variableName": "order" - } - ], - "concreteType": "MembershipConnection", - "kind": "LinkedField", - "name": "__MemberListFragment_members_connection", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "totalCount", - "storageKey": null - }, - { - "kind": "RequiredField", - "field": { - "alias": null, - "args": null, - "concreteType": "MembershipEdge", - "kind": "LinkedField", - "name": "edges", - "plural": true, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "Membership", - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v1/*: any*/), - { - "args": null, - "kind": "FragmentSpread", - "name": "MemberListItemFragment" - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__typename", - "storageKey": null - } - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "cursor", - "storageKey": null - } - ], - "storageKey": null - }, - "action": "THROW" - }, - { - "alias": null, - "args": null, - "concreteType": "PageInfo", - "kind": "LinkedField", - "name": "pageInfo", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "endCursor", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasNextPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasPreviousPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "startCursor", - "storageKey": null - } - ], - "storageKey": null - }, - { - "kind": "ClientExtension", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__id", - "storageKey": null - } - ] - } - ], - "storageKey": null - }, - "action": "THROW" - }, - (v1/*: any*/) - ], - "type": "Organization", - "abstractKey": null -}; -})(); - -(node as any).hash = "c1af7d267ca5d53454869cc8fbf4420c"; - -export default node; diff --git a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts deleted file mode 100644 index 837ba1489..000000000 --- a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts +++ /dev/null @@ -1,432 +0,0 @@ -/** - * @generated SignedSource<<07e8369de4150113311dccdc51e4d1da>> - * @lightSyntaxTransform - * @nogrep - */ - -/* tslint:disable */ -/* eslint-disable */ -// @ts-nocheck - -import { ConcreteRequest } from 'relay-runtime'; -import { FragmentRefs } from "relay-runtime"; -export type MembershipOrderField = "CREATED_AT" | "EMAIL_ADDRESS" | "FULL_NAME" | "ORGANIZATION_NAME" | "ROLE"; -export type OrderDirection = "ASC" | "DESC"; -export type MembershipOrder = { - direction: OrderDirection; - field: MembershipOrderField; -}; -export type MemberListFragment_RefetchQuery$variables = { - after?: string | null | undefined; - before?: string | null | undefined; - first?: number | null | undefined; - id: string; - last?: number | null | undefined; - order?: MembershipOrder | null | undefined; -}; -export type MemberListFragment_RefetchQuery$data = { - readonly node: { - readonly " $fragmentSpreads": FragmentRefs<"MemberListFragment">; - } | null | undefined; -}; -export type MemberListFragment_RefetchQuery = { - response: MemberListFragment_RefetchQuery$data; - variables: MemberListFragment_RefetchQuery$variables; -}; - -const node: ConcreteRequest = (function(){ -var v0 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "after" -}, -v1 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "before" -}, -v2 = { - "defaultValue": 20, - "kind": "LocalArgument", - "name": "first" -}, -v3 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "id" -}, -v4 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "last" -}, -v5 = { - "defaultValue": { - "direction": "ASC", - "field": "FULL_NAME" - }, - "kind": "LocalArgument", - "name": "order" -}, -v6 = [ - { - "kind": "Variable", - "name": "id", - "variableName": "id" - } -], -v7 = { - "kind": "Variable", - "name": "after", - "variableName": "after" -}, -v8 = { - "kind": "Variable", - "name": "before", - "variableName": "before" -}, -v9 = { - "kind": "Variable", - "name": "first", - "variableName": "first" -}, -v10 = { - "kind": "Variable", - "name": "last", - "variableName": "last" -}, -v11 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__typename", - "storageKey": null -}, -v12 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null -}, -v13 = [ - (v7/*: any*/), - (v8/*: any*/), - (v9/*: any*/), - (v10/*: any*/), - { - "kind": "Variable", - "name": "orderBy", - "variableName": "order" - } -]; -return { - "fragment": { - "argumentDefinitions": [ - (v0/*: any*/), - (v1/*: any*/), - (v2/*: any*/), - (v3/*: any*/), - (v4/*: any*/), - (v5/*: any*/) - ], - "kind": "Fragment", - "metadata": null, - "name": "MemberListFragment_RefetchQuery", - "selections": [ - { - "alias": null, - "args": (v6/*: any*/), - "concreteType": null, - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - { - "args": [ - (v7/*: any*/), - (v8/*: any*/), - (v9/*: any*/), - (v10/*: any*/), - { - "kind": "Variable", - "name": "order", - "variableName": "order" - } - ], - "kind": "FragmentSpread", - "name": "MemberListFragment" - } - ], - "storageKey": null - } - ], - "type": "Query", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [ - (v0/*: any*/), - (v1/*: any*/), - (v2/*: any*/), - (v4/*: any*/), - (v5/*: any*/), - (v3/*: any*/) - ], - "kind": "Operation", - "name": "MemberListFragment_RefetchQuery", - "selections": [ - { - "alias": null, - "args": (v6/*: any*/), - "concreteType": null, - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v11/*: any*/), - (v12/*: any*/), - { - "kind": "InlineFragment", - "selections": [ - { - "alias": null, - "args": (v13/*: any*/), - "concreteType": "MembershipConnection", - "kind": "LinkedField", - "name": "members", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "totalCount", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "MembershipEdge", - "kind": "LinkedField", - "name": "edges", - "plural": true, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "Membership", - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v12/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "role", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "source", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "state", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "MembershipProfile", - "kind": "LinkedField", - "name": "profile", - "plural": false, - "selections": [ - (v12/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "fullName", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "kind", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "position", - "storageKey": null - } - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "Identity", - "kind": "LinkedField", - "name": "identity", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "email", - "storageKey": null - }, - (v12/*: any*/) - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "createdAt", - "storageKey": null - }, - { - "alias": "canUpdate", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:update" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:update\")" - }, - { - "alias": "canDelete", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:delete" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:delete\")" - }, - (v11/*: any*/) - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "cursor", - "storageKey": null - } - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "PageInfo", - "kind": "LinkedField", - "name": "pageInfo", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "endCursor", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasNextPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasPreviousPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "startCursor", - "storageKey": null - } - ], - "storageKey": null - }, - { - "kind": "ClientExtension", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__id", - "storageKey": null - } - ] - } - ], - "storageKey": null - }, - { - "alias": null, - "args": (v13/*: any*/), - "filters": [ - "orderBy" - ], - "handle": "connection", - "key": "MemberListFragment_members", - "kind": "LinkedHandle", - "name": "members" - } - ], - "type": "Organization", - "abstractKey": null - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "8a5e322c63c4dfa1c5528d50638ec6cc", - "id": null, - "metadata": {}, - "name": "MemberListFragment_RefetchQuery", - "operationKind": "query", - "text": "query MemberListFragment_RefetchQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $first: Int = 20\n $last: Int = null\n $order: MembershipOrder = {direction: ASC, field: FULL_NAME}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...MemberListFragment_16fISc\n id\n }\n}\n\nfragment MemberListFragment_16fISc on Organization {\n members(first: $first, after: $after, last: $last, before: $before, orderBy: $order) {\n totalCount\n edges {\n node {\n id\n ...MemberListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment MemberListItemFragment on Membership {\n id\n role\n source\n state\n profile {\n id\n fullName\n kind\n position\n }\n identity {\n email\n id\n }\n createdAt\n canUpdate: permission(action: \"iam:membership:update\")\n canDelete: permission(action: \"iam:membership:delete\")\n}\n" - } -}; -})(); - -(node as any).hash = "c1af7d267ca5d53454869cc8fbf4420c"; - -export default node; diff --git a/apps/console/src/__generated__/iam/MemberListItemFragment.graphql.ts b/apps/console/src/__generated__/iam/MemberListItemFragment.graphql.ts deleted file mode 100644 index 838849b25..000000000 --- a/apps/console/src/__generated__/iam/MemberListItemFragment.graphql.ts +++ /dev/null @@ -1,177 +0,0 @@ -/** - * @generated SignedSource<<770fb773083cc4f819594e268d9eb0cc>> - * @lightSyntaxTransform - * @nogrep - */ - -/* tslint:disable */ -/* eslint-disable */ -// @ts-nocheck - -import { ReaderFragment } from 'relay-runtime'; -export type MembershipRole = "ADMIN" | "AUDITOR" | "EMPLOYEE" | "OWNER" | "VIEWER"; -export type MembershipSource = "MANUAL" | "SAML" | "SCIM"; -export type MembershipState = "ACTIVE" | "INACTIVE"; -export type ProfileKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT"; -import { FragmentRefs } from "relay-runtime"; -export type MemberListItemFragment$data = { - readonly canDelete: boolean; - readonly canUpdate: boolean; - readonly createdAt: string; - readonly id: string; - readonly identity: { - readonly email: string; - }; - readonly profile: { - readonly fullName: string; - readonly id: string; - readonly kind: ProfileKind; - readonly position: string | null | undefined; - }; - readonly role: MembershipRole; - readonly source: MembershipSource; - readonly state: MembershipState; - readonly " $fragmentType": "MemberListItemFragment"; -}; -export type MemberListItemFragment$key = { - readonly " $data"?: MemberListItemFragment$data; - readonly " $fragmentSpreads": FragmentRefs<"MemberListItemFragment">; -}; - -const node: ReaderFragment = (function(){ -var v0 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null -}; -return { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "MemberListItemFragment", - "selections": [ - (v0/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "role", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "source", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "state", - "storageKey": null - }, - { - "kind": "RequiredField", - "field": { - "alias": null, - "args": null, - "concreteType": "MembershipProfile", - "kind": "LinkedField", - "name": "profile", - "plural": false, - "selections": [ - (v0/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "fullName", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "kind", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "position", - "storageKey": null - } - ], - "storageKey": null - }, - "action": "THROW" - }, - { - "kind": "RequiredField", - "field": { - "alias": null, - "args": null, - "concreteType": "Identity", - "kind": "LinkedField", - "name": "identity", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "email", - "storageKey": null - } - ], - "storageKey": null - }, - "action": "THROW" - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "createdAt", - "storageKey": null - }, - { - "alias": "canUpdate", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:update" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:update\")" - }, - { - "alias": "canDelete", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:delete" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:delete\")" - } - ], - "type": "Membership", - "abstractKey": null -}; -})(); - -(node as any).hash = "378a4cdc212c16aecae368d41d80739e"; - -export default node; diff --git a/apps/console/src/__generated__/iam/MemberListItem_removeMutation.graphql.ts b/apps/console/src/__generated__/iam/MemberListItem_removeMutation.graphql.ts deleted file mode 100644 index b2f142f0d..000000000 --- a/apps/console/src/__generated__/iam/MemberListItem_removeMutation.graphql.ts +++ /dev/null @@ -1,133 +0,0 @@ -/** - * @generated SignedSource<<1eebc63e903c6dd5ab9f0178d2aaaa90>> - * @lightSyntaxTransform - * @nogrep - */ - -/* tslint:disable */ -/* eslint-disable */ -// @ts-nocheck - -import { ConcreteRequest } from 'relay-runtime'; -export type RemoveMemberInput = { - membershipId: string; - organizationId: string; -}; -export type MemberListItem_removeMutation$variables = { - connections: ReadonlyArray; - input: RemoveMemberInput; -}; -export type MemberListItem_removeMutation$data = { - readonly removeMember: { - readonly deletedMembershipId: string; - } | null | undefined; -}; -export type MemberListItem_removeMutation = { - response: MemberListItem_removeMutation$data; - variables: MemberListItem_removeMutation$variables; -}; - -const node: ConcreteRequest = (function(){ -var v0 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "connections" -}, -v1 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "input" -}, -v2 = [ - { - "kind": "Variable", - "name": "input", - "variableName": "input" - } -], -v3 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "deletedMembershipId", - "storageKey": null -}; -return { - "fragment": { - "argumentDefinitions": [ - (v0/*: any*/), - (v1/*: any*/) - ], - "kind": "Fragment", - "metadata": null, - "name": "MemberListItem_removeMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "RemoveMemberPayload", - "kind": "LinkedField", - "name": "removeMember", - "plural": false, - "selections": [ - (v3/*: any*/) - ], - "storageKey": null - } - ], - "type": "Mutation", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [ - (v1/*: any*/), - (v0/*: any*/) - ], - "kind": "Operation", - "name": "MemberListItem_removeMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "RemoveMemberPayload", - "kind": "LinkedField", - "name": "removeMember", - "plural": false, - "selections": [ - (v3/*: any*/), - { - "alias": null, - "args": null, - "filters": null, - "handle": "deleteEdge", - "key": "", - "kind": "ScalarHandle", - "name": "deletedMembershipId", - "handleArgs": [ - { - "kind": "Variable", - "name": "connections", - "variableName": "connections" - } - ] - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "6bf37e12e069385eabd2bba63e0e980f", - "id": null, - "metadata": {}, - "name": "MemberListItem_removeMutation", - "operationKind": "mutation", - "text": "mutation MemberListItem_removeMutation(\n $input: RemoveMemberInput!\n) {\n removeMember(input: $input) {\n deletedMembershipId\n }\n}\n" - } -}; -})(); - -(node as any).hash = "9732b5ce9ca9de5c31e71a690e1763ed"; - -export default node; diff --git a/apps/console/src/__generated__/iam/MembersPageQuery.graphql.ts b/apps/console/src/__generated__/iam/MembersPageQuery.graphql.ts deleted file mode 100644 index fc8d4720b..000000000 --- a/apps/console/src/__generated__/iam/MembersPageQuery.graphql.ts +++ /dev/null @@ -1,561 +0,0 @@ -/** - * @generated SignedSource<<9a67aa27afef79bc9334f341f01d986d>> - * @lightSyntaxTransform - * @nogrep - */ - -/* tslint:disable */ -/* eslint-disable */ -// @ts-nocheck - -import { ConcreteRequest } from 'relay-runtime'; -import { FragmentRefs } from "relay-runtime"; -export type MembersPageQuery$variables = { - organizationId: string; -}; -export type MembersPageQuery$data = { - readonly organization: { - readonly __typename: "Organization"; - readonly canInviteUser: boolean; - readonly invitations: { - readonly $updatableFragmentSpreads: FragmentRefs<"MembersPage_invitationsTotalCountFragment">; - readonly totalCount: number | null | undefined; - }; - readonly members: { - readonly totalCount: number | null | undefined; - }; - readonly " $fragmentSpreads": FragmentRefs<"InvitationListFragment" | "MemberListFragment">; - } | { - // This will never be '%other', but we need some - // value in case none of the concrete values match. - readonly __typename: "%other"; - }; -}; -export type MembersPageQuery = { - response: MembersPageQuery$data; - variables: MembersPageQuery$variables; -}; - -const node: ConcreteRequest = (function(){ -var v0 = [ - { - "defaultValue": null, - "kind": "LocalArgument", - "name": "organizationId" - } -], -v1 = [ - { - "kind": "Variable", - "name": "id", - "variableName": "organizationId" - } -], -v2 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__typename", - "storageKey": null -}, -v3 = { - "alias": "canInviteUser", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:invitation:create" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:invitation:create\")" -}, -v4 = { - "kind": "Literal", - "name": "first", - "value": 20 -}, -v5 = { - "direction": "ASC", - "field": "FULL_NAME" -}, -v6 = [ - (v4/*: any*/), - { - "kind": "Literal", - "name": "orderBy", - "value": (v5/*: any*/) - } -], -v7 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "totalCount", - "storageKey": null -}, -v8 = { - "direction": "DESC", - "field": "CREATED_AT" -}, -v9 = [ - (v4/*: any*/), - { - "kind": "Literal", - "name": "orderBy", - "value": (v8/*: any*/) - } -], -v10 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null -}, -v11 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "role", - "storageKey": null -}, -v12 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "fullName", - "storageKey": null -}, -v13 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "email", - "storageKey": null -}, -v14 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "createdAt", - "storageKey": null -}, -v15 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "cursor", - "storageKey": null -}, -v16 = { - "alias": null, - "args": null, - "concreteType": "PageInfo", - "kind": "LinkedField", - "name": "pageInfo", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "endCursor", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasNextPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasPreviousPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "startCursor", - "storageKey": null - } - ], - "storageKey": null -}, -v17 = { - "kind": "ClientExtension", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__id", - "storageKey": null - } - ] -}, -v18 = [ - "orderBy" -]; -return { - "fragment": { - "argumentDefinitions": (v0/*: any*/), - "kind": "Fragment", - "metadata": null, - "name": "MembersPageQuery", - "selections": [ - { - "kind": "RequiredField", - "field": { - "alias": "organization", - "args": (v1/*: any*/), - "concreteType": null, - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v2/*: any*/), - { - "kind": "InlineFragment", - "selections": [ - (v3/*: any*/), - { - "args": [ - (v4/*: any*/), - { - "kind": "Literal", - "name": "order", - "value": (v5/*: any*/) - } - ], - "kind": "FragmentSpread", - "name": "MemberListFragment" - }, - { - "kind": "RequiredField", - "field": { - "alias": null, - "args": (v6/*: any*/), - "concreteType": "MembershipConnection", - "kind": "LinkedField", - "name": "members", - "plural": false, - "selections": [ - (v7/*: any*/) - ], - "storageKey": "members(first:20,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})" - }, - "action": "THROW" - }, - { - "args": [ - (v4/*: any*/), - { - "kind": "Literal", - "name": "order", - "value": (v8/*: any*/) - } - ], - "kind": "FragmentSpread", - "name": "InvitationListFragment" - }, - { - "kind": "RequiredField", - "field": { - "alias": null, - "args": (v9/*: any*/), - "concreteType": "InvitationConnection", - "kind": "LinkedField", - "name": "invitations", - "plural": false, - "selections": [ - (v7/*: any*/), - { - "args": null, - "kind": "FragmentSpread", - "name": "MembersPage_invitationsTotalCountFragment" - } - ], - "storageKey": "invitations(first:20,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" - }, - "action": "THROW" - } - ], - "type": "Organization", - "abstractKey": null - } - ], - "storageKey": null - }, - "action": "THROW" - } - ], - "type": "Query", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": (v0/*: any*/), - "kind": "Operation", - "name": "MembersPageQuery", - "selections": [ - { - "alias": "organization", - "args": (v1/*: any*/), - "concreteType": null, - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v2/*: any*/), - (v10/*: any*/), - { - "kind": "InlineFragment", - "selections": [ - (v3/*: any*/), - { - "alias": null, - "args": (v6/*: any*/), - "concreteType": "MembershipConnection", - "kind": "LinkedField", - "name": "members", - "plural": false, - "selections": [ - (v7/*: any*/), - { - "alias": null, - "args": null, - "concreteType": "MembershipEdge", - "kind": "LinkedField", - "name": "edges", - "plural": true, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "Membership", - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v10/*: any*/), - (v11/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "source", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "state", - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "MembershipProfile", - "kind": "LinkedField", - "name": "profile", - "plural": false, - "selections": [ - (v10/*: any*/), - (v12/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "kind", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "position", - "storageKey": null - } - ], - "storageKey": null - }, - { - "alias": null, - "args": null, - "concreteType": "Identity", - "kind": "LinkedField", - "name": "identity", - "plural": false, - "selections": [ - (v13/*: any*/), - (v10/*: any*/) - ], - "storageKey": null - }, - (v14/*: any*/), - { - "alias": "canUpdate", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:update" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:update\")" - }, - { - "alias": "canDelete", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:membership:delete" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:membership:delete\")" - }, - (v2/*: any*/) - ], - "storageKey": null - }, - (v15/*: any*/) - ], - "storageKey": null - }, - (v16/*: any*/), - (v17/*: any*/) - ], - "storageKey": "members(first:20,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})" - }, - { - "alias": null, - "args": (v6/*: any*/), - "filters": (v18/*: any*/), - "handle": "connection", - "key": "MemberListFragment_members", - "kind": "LinkedHandle", - "name": "members" - }, - { - "alias": null, - "args": (v9/*: any*/), - "concreteType": "InvitationConnection", - "kind": "LinkedField", - "name": "invitations", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "InvitationEdge", - "kind": "LinkedField", - "name": "edges", - "plural": true, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "Invitation", - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - (v10/*: any*/), - (v12/*: any*/), - (v13/*: any*/), - (v11/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "status", - "storageKey": null - }, - (v14/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "expiresAt", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "acceptedAt", - "storageKey": null - }, - { - "alias": "canDelete", - "args": [ - { - "kind": "Literal", - "name": "action", - "value": "iam:invitation:delete" - } - ], - "kind": "ScalarField", - "name": "permission", - "storageKey": "permission(action:\"iam:invitation:delete\")" - }, - (v2/*: any*/) - ], - "storageKey": null - }, - (v15/*: any*/) - ], - "storageKey": null - }, - (v16/*: any*/), - (v17/*: any*/), - (v7/*: any*/), - (v2/*: any*/) - ], - "storageKey": "invitations(first:20,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" - }, - { - "alias": null, - "args": (v9/*: any*/), - "filters": (v18/*: any*/), - "handle": "connection", - "key": "InvitationListFragment_invitations", - "kind": "LinkedHandle", - "name": "invitations" - } - ], - "type": "Organization", - "abstractKey": null - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "761152b197433a0f5f9e0734f98723d8", - "id": null, - "metadata": {}, - "name": "MembersPageQuery", - "operationKind": "query", - "text": "query MembersPageQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n canInviteUser: permission(action: \"iam:invitation:create\")\n ...MemberListFragment_8lnpd\n members(first: 20, orderBy: {direction: ASC, field: FULL_NAME}) {\n totalCount\n }\n ...InvitationListFragment_1PypFi\n invitations(first: 20, orderBy: {direction: DESC, field: CREATED_AT}) {\n totalCount\n __typename\n }\n }\n id\n }\n}\n\nfragment InvitationListFragment_1PypFi on Organization {\n invitations(first: 20, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment InvitationListItemFragment on Invitation {\n id\n fullName\n email\n role\n status\n createdAt\n expiresAt\n acceptedAt\n canDelete: permission(action: \"iam:invitation:delete\")\n}\n\nfragment MemberListFragment_8lnpd on Organization {\n members(first: 20, orderBy: {direction: ASC, field: FULL_NAME}) {\n totalCount\n edges {\n node {\n id\n ...MemberListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment MemberListItemFragment on Membership {\n id\n role\n source\n state\n profile {\n id\n fullName\n kind\n position\n }\n identity {\n email\n id\n }\n createdAt\n canUpdate: permission(action: \"iam:membership:update\")\n canDelete: permission(action: \"iam:membership:delete\")\n}\n" - } -}; -})(); - -(node as any).hash = "0e24cf08536ed857c6ab8f8ded76947e"; - -export default node; diff --git a/apps/console/src/__generated__/iam/PeopleListFragment.graphql.ts b/apps/console/src/__generated__/iam/PeopleListFragment.graphql.ts index c2c83f9db..5926df39a 100644 --- a/apps/console/src/__generated__/iam/PeopleListFragment.graphql.ts +++ b/apps/console/src/__generated__/iam/PeopleListFragment.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<1eea7fe2bc0c652d4b8aa50f263a0abe>> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -239,6 +239,6 @@ return { }; })(); -(node as any).hash = "b081725658cd706a0b108eb1d058de32"; +(node as any).hash = "c62c77bc2ef0e36b7eaf4553cc721e0c"; export default node; diff --git a/apps/console/src/__generated__/iam/PeopleListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/PeopleListFragment_RefetchQuery.graphql.ts index ca33e0bcd..6f630eab8 100644 --- a/apps/console/src/__generated__/iam/PeopleListFragment_RefetchQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/PeopleListFragment_RefetchQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<2fcd3cca1f1b02c835d906b3b2ebdcea>> * @lightSyntaxTransform * @nogrep */ @@ -427,6 +427,6 @@ return { }; })(); -(node as any).hash = "b081725658cd706a0b108eb1d058de32"; +(node as any).hash = "c62c77bc2ef0e36b7eaf4553cc721e0c"; export default node; diff --git a/apps/console/src/__generated__/iam/PeoplePageQuery.graphql.ts b/apps/console/src/__generated__/iam/PeoplePageQuery.graphql.ts index cddc0db3e..df8deb745 100644 --- a/apps/console/src/__generated__/iam/PeoplePageQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/PeoplePageQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<06a60a60cf7ca339c25395a94906774a>> * @lightSyntaxTransform * @nogrep */ @@ -15,8 +15,20 @@ export type PeoplePageQuery$variables = { }; export type PeoplePageQuery$data = { readonly organization: { - readonly __typename: string; - readonly " $fragmentSpreads": FragmentRefs<"PeopleListFragment">; + readonly __typename: "Organization"; + readonly canInviteUser: boolean; + readonly invitations: { + readonly $updatableFragmentSpreads: FragmentRefs<"PeoplePage_invitationsTotalCountFragment">; + readonly totalCount: number | null | undefined; + }; + readonly members: { + readonly totalCount: number | null | undefined; + }; + readonly " $fragmentSpreads": FragmentRefs<"InvitationListFragment" | "PeopleListFragment">; + } | { + // This will never be '%other', but we need some + // value in case none of the concrete values match. + readonly __typename: "%other"; }; }; export type PeoplePageQuery = { @@ -47,28 +59,149 @@ v2 = { "storageKey": null }, v3 = { + "alias": "canInviteUser", + "args": [ + { + "kind": "Literal", + "name": "action", + "value": "iam:invitation:create" + } + ], + "kind": "ScalarField", + "name": "permission", + "storageKey": "permission(action:\"iam:invitation:create\")" +}, +v4 = { "kind": "Literal", "name": "first", "value": 20 }, -v4 = { +v5 = { "direction": "ASC", "field": "FULL_NAME" }, -v5 = { +v6 = [ + (v4/*: any*/), + { + "kind": "Literal", + "name": "orderBy", + "value": (v5/*: any*/) + } +], +v7 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "totalCount", + "storageKey": null +}, +v8 = { + "direction": "DESC", + "field": "CREATED_AT" +}, +v9 = [ + (v4/*: any*/), + { + "kind": "Literal", + "name": "orderBy", + "value": (v8/*: any*/) + } +], +v10 = { "alias": null, "args": null, "kind": "ScalarField", "name": "id", "storageKey": null }, -v6 = [ - (v3/*: any*/), - { - "kind": "Literal", - "name": "orderBy", - "value": (v4/*: any*/) - } +v11 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "role", + "storageKey": null +}, +v12 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "fullName", + "storageKey": null +}, +v13 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "email", + "storageKey": null +}, +v14 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "createdAt", + "storageKey": null +}, +v15 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "cursor", + "storageKey": null +}, +v16 = { + "alias": null, + "args": null, + "concreteType": "PageInfo", + "kind": "LinkedField", + "name": "pageInfo", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endCursor", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "hasNextPage", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "hasPreviousPage", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "startCursor", + "storageKey": null + } + ], + "storageKey": null +}, +v17 = { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__id", + "storageKey": null + } + ] +}, +v18 = [ + "orderBy" ]; return { "fragment": { @@ -89,16 +222,73 @@ return { "selections": [ (v2/*: any*/), { - "args": [ + "kind": "InlineFragment", + "selections": [ (v3/*: any*/), { - "kind": "Literal", - "name": "order", - "value": (v4/*: any*/) + "kind": "RequiredField", + "field": { + "alias": null, + "args": (v6/*: any*/), + "concreteType": "MembershipConnection", + "kind": "LinkedField", + "name": "members", + "plural": false, + "selections": [ + (v7/*: any*/) + ], + "storageKey": "members(first:20,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})" + }, + "action": "THROW" + }, + { + "args": [ + (v4/*: any*/), + { + "kind": "Literal", + "name": "order", + "value": (v5/*: any*/) + } + ], + "kind": "FragmentSpread", + "name": "PeopleListFragment" + }, + { + "kind": "RequiredField", + "field": { + "alias": null, + "args": (v9/*: any*/), + "concreteType": "InvitationConnection", + "kind": "LinkedField", + "name": "invitations", + "plural": false, + "selections": [ + (v7/*: any*/), + { + "args": null, + "kind": "FragmentSpread", + "name": "PeoplePage_invitationsTotalCountFragment" + } + ], + "storageKey": "invitations(first:20,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + }, + "action": "THROW" + }, + { + "args": [ + (v4/*: any*/), + { + "kind": "Literal", + "name": "order", + "value": (v8/*: any*/) + } + ], + "kind": "FragmentSpread", + "name": "InvitationListFragment" } ], - "kind": "FragmentSpread", - "name": "PeopleListFragment" + "type": "Organization", + "abstractKey": null } ], "storageKey": null @@ -124,10 +314,11 @@ return { "plural": false, "selections": [ (v2/*: any*/), - (v5/*: any*/), + (v10/*: any*/), { "kind": "InlineFragment", "selections": [ + (v3/*: any*/), { "alias": null, "args": (v6/*: any*/), @@ -136,13 +327,7 @@ return { "name": "members", "plural": false, "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "totalCount", - "storageKey": null - }, + (v7/*: any*/), { "alias": null, "args": null, @@ -159,14 +344,8 @@ return { "name": "node", "plural": false, "selections": [ - (v5/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "role", - "storageKey": null - }, + (v10/*: any*/), + (v11/*: any*/), { "alias": null, "args": null, @@ -189,14 +368,8 @@ return { "name": "profile", "plural": false, "selections": [ - (v5/*: any*/), - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "fullName", - "storageKey": null - }, + (v10/*: any*/), + (v12/*: any*/), { "alias": null, "args": null, @@ -222,24 +395,12 @@ return { "name": "identity", "plural": false, "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "email", - "storageKey": null - }, - (v5/*: any*/) + (v13/*: any*/), + (v10/*: any*/) ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "createdAt", - "storageKey": null - }, + (v14/*: any*/), { "alias": "canUpdate", "args": [ @@ -270,80 +431,103 @@ return { ], "storageKey": null }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "cursor", - "storageKey": null - } + (v15/*: any*/) ], "storageKey": null }, - { - "alias": null, - "args": null, - "concreteType": "PageInfo", - "kind": "LinkedField", - "name": "pageInfo", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "endCursor", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasNextPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "hasPreviousPage", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "startCursor", - "storageKey": null - } - ], - "storageKey": null - }, - { - "kind": "ClientExtension", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__id", - "storageKey": null - } - ] - } + (v16/*: any*/), + (v17/*: any*/) ], "storageKey": "members(first:20,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})" }, { "alias": null, "args": (v6/*: any*/), - "filters": [ - "orderBy" - ], + "filters": (v18/*: any*/), "handle": "connection", "key": "PeopleListFragment_members", "kind": "LinkedHandle", "name": "members" + }, + { + "alias": null, + "args": (v9/*: any*/), + "concreteType": "InvitationConnection", + "kind": "LinkedField", + "name": "invitations", + "plural": false, + "selections": [ + (v7/*: any*/), + (v2/*: any*/), + { + "alias": null, + "args": null, + "concreteType": "InvitationEdge", + "kind": "LinkedField", + "name": "edges", + "plural": true, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Invitation", + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + (v10/*: any*/), + (v12/*: any*/), + (v13/*: any*/), + (v11/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "status", + "storageKey": null + }, + (v14/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "acceptedAt", + "storageKey": null + }, + { + "alias": "canDelete", + "args": [ + { + "kind": "Literal", + "name": "action", + "value": "iam:invitation:delete" + } + ], + "kind": "ScalarField", + "name": "permission", + "storageKey": "permission(action:\"iam:invitation:delete\")" + }, + (v2/*: any*/) + ], + "storageKey": null + }, + (v15/*: any*/) + ], + "storageKey": null + }, + (v16/*: any*/), + (v17/*: any*/) + ], + "storageKey": "invitations(first:20,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + }, + { + "alias": null, + "args": (v9/*: any*/), + "filters": (v18/*: any*/), + "handle": "connection", + "key": "InvitationListFragment_invitations", + "kind": "LinkedHandle", + "name": "invitations" } ], "type": "Organization", @@ -355,16 +539,16 @@ return { ] }, "params": { - "cacheID": "e053ac08939a9072b8824317b327687b", + "cacheID": "425e73a84c96979c3b380c17512c744a", "id": null, "metadata": {}, "name": "PeoplePageQuery", "operationKind": "query", - "text": "query PeoplePageQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ...PeopleListFragment_8lnpd\n id\n }\n}\n\nfragment PeopleListFragment_8lnpd on Organization {\n members(first: 20, orderBy: {direction: ASC, field: FULL_NAME}) {\n totalCount\n edges {\n node {\n id\n ...PeopleListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment PeopleListItemFragment on Membership {\n id\n role\n source\n state\n profile {\n id\n fullName\n kind\n position\n }\n identity {\n email\n id\n }\n createdAt\n canUpdate: permission(action: \"iam:membership:update\")\n canDelete: permission(action: \"iam:membership:delete\")\n}\n" + "text": "query PeoplePageQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n canInviteUser: permission(action: \"iam:invitation:create\")\n members(first: 20, orderBy: {direction: ASC, field: FULL_NAME}) {\n totalCount\n }\n ...PeopleListFragment_8lnpd\n invitations(first: 20, orderBy: {direction: DESC, field: CREATED_AT}) {\n totalCount\n __typename\n }\n ...InvitationListFragment_1PypFi\n }\n id\n }\n}\n\nfragment InvitationListFragment_1PypFi on Organization {\n invitations(first: 20, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment InvitationListItemFragment on Invitation {\n id\n fullName\n email\n role\n status\n createdAt\n acceptedAt\n canDelete: permission(action: \"iam:invitation:delete\")\n}\n\nfragment PeopleListFragment_8lnpd on Organization {\n members(first: 20, orderBy: {direction: ASC, field: FULL_NAME}) {\n totalCount\n edges {\n node {\n id\n ...PeopleListItemFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment PeopleListItemFragment on Membership {\n id\n role\n source\n state\n profile {\n id\n fullName\n kind\n position\n }\n identity {\n email\n id\n }\n createdAt\n canUpdate: permission(action: \"iam:membership:update\")\n canDelete: permission(action: \"iam:membership:delete\")\n}\n" } }; })(); -(node as any).hash = "cf98b65e0392a5c2d48254d89b114c04"; +(node as any).hash = "9ab9d1a720b23dd78bdb82530a30b6f3"; export default node; diff --git a/apps/console/src/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql.ts b/apps/console/src/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql.ts similarity index 52% rename from apps/console/src/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql.ts rename to apps/console/src/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql.ts index 739f17247..adbd01279 100644 --- a/apps/console/src/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql.ts +++ b/apps/console/src/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<8e60217d0397fc8690fc79915bdfdc6c>> * @lightSyntaxTransform * @nogrep */ @@ -10,20 +10,20 @@ import { ReaderFragment } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; -export type MembersPage_invitationsTotalCountFragment$data = { +export type PeoplePage_invitationsTotalCountFragment$data = { totalCount: number | null | undefined; - readonly " $fragmentType": "MembersPage_invitationsTotalCountFragment"; + readonly " $fragmentType": "PeoplePage_invitationsTotalCountFragment"; }; -export type MembersPage_invitationsTotalCountFragment$key = { - readonly " $data"?: MembersPage_invitationsTotalCountFragment$data; - readonly $updatableFragmentSpreads: FragmentRefs<"MembersPage_invitationsTotalCountFragment">; +export type PeoplePage_invitationsTotalCountFragment$key = { + readonly " $data"?: PeoplePage_invitationsTotalCountFragment$data; + readonly $updatableFragmentSpreads: FragmentRefs<"PeoplePage_invitationsTotalCountFragment">; }; const node: ReaderFragment = { "argumentDefinitions": [], "kind": "Fragment", "metadata": null, - "name": "MembersPage_invitationsTotalCountFragment", + "name": "PeoplePage_invitationsTotalCountFragment", "selections": [ { "alias": null, @@ -37,6 +37,6 @@ const node: ReaderFragment = { "abstractKey": null }; -(node as any).hash = "af477ef9a8b791eee11ab26caee3d304"; +(node as any).hash = "8881fd3459c738d64d70370fd317fe5d"; export default node; diff --git a/apps/console/src/pages/iam/organizations/people/PeoplePage.tsx b/apps/console/src/pages/iam/organizations/people/PeoplePage.tsx index 9a166329a..50ec100a3 100644 --- a/apps/console/src/pages/iam/organizations/people/PeoplePage.tsx +++ b/apps/console/src/pages/iam/organizations/people/PeoplePage.tsx @@ -1,29 +1,59 @@ import { useTranslate } from "@probo/i18n"; -import { PageHeader } from "@probo/ui"; +import { Button, PageHeader, TabBadge, TabItem, Tabs } from "@probo/ui"; +import { useState } from "react"; import { type PreloadedQuery, usePreloadedQuery } from "react-relay"; -import { graphql } from "relay-runtime"; +import { ConnectionHandler, graphql } from "relay-runtime"; import type { PeoplePageQuery } from "#/__generated__/iam/PeoplePageQuery.graphql"; +import { useOrganizationId } from "#/hooks/useOrganizationId"; +import { InvitationList } from "./_components/InvitationList"; +import { InviteUserDialog } from "./_components/InviteUserDialog"; import { PeopleList } from "./_components/PeopleList"; export const peoplePageQuery = graphql` query PeoplePageQuery($organizationId: ID!) { organization: node(id: $organizationId) @required(action: THROW) { __typename - ...PeopleListFragment - @arguments(first: 20, order: { direction: ASC, field: FULL_NAME }) + ... on Organization { + canInviteUser: permission(action: "iam:invitation:create") + members(first: 20, orderBy: { direction: ASC, field: FULL_NAME }) + @required(action: THROW) { + totalCount + } + ...PeopleListFragment + @arguments(first: 20, order: { direction: ASC, field: FULL_NAME }) + invitations(first: 20, orderBy: { direction: DESC, field: CREATED_AT }) + @required(action: THROW) { + totalCount + ...PeoplePage_invitationsTotalCountFragment + } + ...InvitationListFragment + @arguments(first: 20, order: { direction: DESC, field: CREATED_AT }) + } } } `; +export const invitationCountFragment = graphql` + fragment PeoplePage_invitationsTotalCountFragment on InvitationConnection + @updatable { + totalCount + } +`; + export function PeoplePage(props: { queryRef: PreloadedQuery; }) { const { queryRef } = props; + const organizationId = useOrganizationId(); const { __ } = useTranslate(); + const [activeTab, setActiveTab] = useState<"memberships" | "invitations">( + "memberships", + ); + const { organization } = usePreloadedQuery( peoplePageQuery, queryRef, @@ -32,12 +62,59 @@ export function PeoplePage(props: { throw new Error("node is of invalid type"); } + const [invitationListConnectionId, setInvitationListConnectionId] = useState( + ConnectionHandler.getConnectionID( + organizationId, + "InvitationListFragment_invitations", + { orderBy: { direction: "ASC", field: "CREATED_AT" } }, + ), + ); + return (
- + + {organization.canInviteUser && ( + + + + )} + + + + setActiveTab("memberships")} + > + {__("Members")} + {(organization.members.totalCount ?? 0) > 0 && ( + {organization.members.totalCount} + )} + + setActiveTab("invitations")} + > + {__("Invitations")} + {(organization.invitations.totalCount ?? 0) > 0 && ( + {organization.invitations.totalCount} + )} + +
- + {activeTab === "memberships" && } + + {activeTab === "invitations" && ( + + )}
); diff --git a/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx b/apps/console/src/pages/iam/organizations/people/_components/InvitationList.tsx similarity index 95% rename from apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx rename to apps/console/src/pages/iam/organizations/people/_components/InvitationList.tsx index 926c64fd3..123d344fc 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx +++ b/apps/console/src/pages/iam/organizations/people/_components/InvitationList.tsx @@ -5,7 +5,7 @@ import { ConnectionHandler, graphql, usePaginationFragment } from "react-relay"; import type { InvitationListFragment$key } from "#/__generated__/iam/InvitationListFragment.graphql"; import type { InvitationListFragment_RefetchQuery } from "#/__generated__/iam/InvitationListFragment_RefetchQuery.graphql"; -import type { MembersPage_invitationsTotalCountFragment$key } from "#/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql"; +import type { PeoplePage_invitationsTotalCountFragment$key } from "#/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql"; import { type Order, SortableTable, @@ -55,7 +55,7 @@ export function InvitationList(props: { fKey: InvitationListFragment$key; onConnectionIdChange: (connectionId: string) => void; totalCount: number; - totalCountFKey: MembersPage_invitationsTotalCountFragment$key; + totalCountFKey: PeoplePage_invitationsTotalCountFragment$key; }) { const { fKey, onConnectionIdChange, totalCount, totalCountFKey } = props; diff --git a/apps/console/src/pages/iam/organizations/settings/_components/InvitationListItem.tsx b/apps/console/src/pages/iam/organizations/people/_components/InvitationListItem.tsx similarity index 91% rename from apps/console/src/pages/iam/organizations/settings/_components/InvitationListItem.tsx rename to apps/console/src/pages/iam/organizations/people/_components/InvitationListItem.tsx index f661f6bff..311eae9f6 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/InvitationListItem.tsx +++ b/apps/console/src/pages/iam/organizations/people/_components/InvitationListItem.tsx @@ -14,11 +14,11 @@ import { useFragment } from "react-relay"; import { graphql } from "relay-runtime"; import type { InvitationListItemFragment$key } from "#/__generated__/iam/InvitationListItemFragment.graphql"; -import type { MembersPage_invitationsTotalCountFragment$key } from "#/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql"; +import type { PeoplePage_invitationsTotalCountFragment$key } from "#/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql"; import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; import { useOrganizationId } from "#/hooks/useOrganizationId"; -import { invitationCountFragment } from "../MembersPage"; +import { invitationCountFragment } from "../PeoplePage"; const fragment = graphql` fragment InvitationListItemFragment on Invitation { @@ -28,7 +28,6 @@ const fragment = graphql` role status createdAt - expiresAt acceptedAt canDelete: permission(action: "iam:invitation:delete") } @@ -48,7 +47,7 @@ const deleteInvitationMutation = graphql` export function InvitationListItem(props: { connectionId: string; fKey: InvitationListItemFragment$key; - totalCountFKey: MembersPage_invitationsTotalCountFragment$key; + totalCountFKey: PeoplePage_invitationsTotalCountFragment$key; onRefetch: () => void; }) { const { connectionId, fKey, totalCountFKey } = props; @@ -83,7 +82,7 @@ export function InvitationListItem(props: { }, updater: (store) => { const { updatableData } - = store.readUpdatableFragment( + = store.readUpdatableFragment( invitationCountFragment, totalCountFKey, ); diff --git a/apps/console/src/pages/iam/organizations/settings/_components/InviteUserDialog.tsx b/apps/console/src/pages/iam/organizations/people/_components/InviteUserDialog.tsx similarity index 94% rename from apps/console/src/pages/iam/organizations/settings/_components/InviteUserDialog.tsx rename to apps/console/src/pages/iam/organizations/people/_components/InviteUserDialog.tsx index 3886b593a..80621a8e3 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/InviteUserDialog.tsx +++ b/apps/console/src/pages/iam/organizations/people/_components/InviteUserDialog.tsx @@ -16,13 +16,13 @@ import { graphql } from "relay-runtime"; import { z } from "zod"; import type { InviteUserDialogMutation } from "#/__generated__/iam/InviteUserDialogMutation.graphql"; -import type { MembersPage_invitationsTotalCountFragment$key } from "#/__generated__/iam/MembersPage_invitationsTotalCountFragment.graphql"; +import type { PeoplePage_invitationsTotalCountFragment$key } from "#/__generated__/iam/PeoplePage_invitationsTotalCountFragment.graphql"; import { useFormWithSchema } from "#/hooks/useFormWithSchema"; import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; import { useOrganizationId } from "#/hooks/useOrganizationId"; import { CurrentUser } from "#/providers/CurrentUser"; -import { invitationCountFragment } from "../MembersPage"; +import { invitationCountFragment } from "../PeoplePage"; const inviteMutation = graphql` mutation InviteUserDialogMutation( @@ -63,7 +63,7 @@ const schema = z.object({ type InviteUserDialogProps = PropsWithChildren<{ connectionId: string; - fKey: MembersPage_invitationsTotalCountFragment$key; + fKey: PeoplePage_invitationsTotalCountFragment$key; }>; export function InviteUserDialog(props: InviteUserDialogProps) { @@ -104,7 +104,7 @@ export function InviteUserDialog(props: InviteUserDialogProps) { }, updater: (store) => { const { updatableData } - = store.readUpdatableFragment( + = store.readUpdatableFragment( invitationCountFragment, fKey, ); diff --git a/apps/console/src/pages/iam/organizations/people/_components/PeopleList.tsx b/apps/console/src/pages/iam/organizations/people/_components/PeopleList.tsx index 269002ff0..8586748ac 100644 --- a/apps/console/src/pages/iam/organizations/people/_components/PeopleList.tsx +++ b/apps/console/src/pages/iam/organizations/people/_components/PeopleList.tsx @@ -28,7 +28,7 @@ const fragment = graphql` last: $last before: $before orderBy: $order - ) @connection(key: "PeopleListFragment_members", filter: ["orderBy"]) @required(action: THROW) { + ) @connection(key: "PeopleListFragment_members", filters: ["orderBy"]) @required(action: THROW) { __id totalCount edges @required(action: THROW) { diff --git a/apps/console/src/pages/iam/organizations/people/_components/PeopleListItem.tsx b/apps/console/src/pages/iam/organizations/people/_components/PeopleListItem.tsx index 2cde9a4cd..b9b37524e 100644 --- a/apps/console/src/pages/iam/organizations/people/_components/PeopleListItem.tsx +++ b/apps/console/src/pages/iam/organizations/people/_components/PeopleListItem.tsx @@ -13,7 +13,7 @@ import { import { clsx } from "clsx"; import { useState } from "react"; import { useFragment } from "react-relay"; -import { graphql } from "relay-runtime"; +import { type DataID, graphql } from "relay-runtime"; import type { PeopleListItemFragment$key } from "#/__generated__/iam/PeopleListItemFragment.graphql"; import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; @@ -54,7 +54,7 @@ const removeMemberMutation = graphql` `; export function MemberListItem(props: { - connectionId: string; + connectionId: DataID; fKey: PeopleListItemFragment$key; onRefetch: () => void; }) { diff --git a/apps/console/src/pages/iam/organizations/settings/MembersPage.tsx b/apps/console/src/pages/iam/organizations/settings/MembersPage.tsx deleted file mode 100644 index 9d37c453f..000000000 --- a/apps/console/src/pages/iam/organizations/settings/MembersPage.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { useTranslate } from "@probo/i18n"; -import { Button, TabBadge, TabItem, Tabs } from "@probo/ui"; -import { useState } from "react"; -import { type PreloadedQuery, usePreloadedQuery } from "react-relay"; -import { ConnectionHandler, graphql } from "relay-runtime"; - -import type { MembersPageQuery } from "#/__generated__/iam/MembersPageQuery.graphql"; -import { useOrganizationId } from "#/hooks/useOrganizationId"; - -import { InvitationList } from "./_components/InvitationList"; -import { InviteUserDialog } from "./_components/InviteUserDialog"; -import { MemberList } from "./_components/MemberList"; - -export const membersPageQuery = graphql` - query MembersPageQuery($organizationId: ID!) { - organization: node(id: $organizationId) @required(action: THROW) { - __typename - ... on Organization { - canInviteUser: permission(action: "iam:invitation:create") - ...MemberListFragment - @arguments(first: 20, order: { direction: ASC, field: FULL_NAME }) - members(first: 20, orderBy: { direction: ASC, field: FULL_NAME }) - @required(action: THROW) { - totalCount - } - ...InvitationListFragment - @arguments(first: 20, order: { direction: DESC, field: CREATED_AT }) - invitations(first: 20, orderBy: { direction: DESC, field: CREATED_AT }) - @required(action: THROW) { - totalCount - ...MembersPage_invitationsTotalCountFragment - } - } - } - } -`; - -export const invitationCountFragment = graphql` - fragment MembersPage_invitationsTotalCountFragment on InvitationConnection - @updatable { - totalCount - } -`; - -export function MembersPage(props: { - queryRef: PreloadedQuery; -}) { - const { queryRef } = props; - - const organizationId = useOrganizationId(); - const { __ } = useTranslate(); - - const [activeTab, setActiveTab] = useState<"memberships" | "invitations">( - "memberships", - ); - - const { organization } = usePreloadedQuery( - membersPageQuery, - queryRef, - ); - if (organization.__typename !== "Organization") { - throw new Error("node is of invalid type"); - } - - const [invitationListConnectionId, setInvitationListConnectionId] = useState( - ConnectionHandler.getConnectionID( - organizationId, - "InvitationListFragment_invitations", - { orderBy: { direction: "ASC", field: "CREATED_AT" } }, - ), - ); - - return ( -
-
-

{__("Members")}

- {organization.canInviteUser && ( - - - - )} -
- - - setActiveTab("memberships")} - > - {__("Members")} - {(organization.members.totalCount ?? 0) > 0 && ( - {organization.members.totalCount} - )} - - setActiveTab("invitations")} - > - {__("Invitations")} - {(organization.invitations.totalCount ?? 0) > 0 && ( - {organization.invitations.totalCount} - )} - - - -
- {activeTab === "memberships" && } - - {activeTab === "invitations" && ( - - )} -
-
- ); -} diff --git a/apps/console/src/pages/iam/organizations/settings/MembersPageLoader.tsx b/apps/console/src/pages/iam/organizations/settings/MembersPageLoader.tsx deleted file mode 100644 index 96cfaf109..000000000 --- a/apps/console/src/pages/iam/organizations/settings/MembersPageLoader.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { useEffect } from "react"; -import { useQueryLoader } from "react-relay"; - -import type { MembersPageQuery } from "#/__generated__/iam/MembersPageQuery.graphql"; -import { useOrganizationId } from "#/hooks/useOrganizationId"; -import { IAMRelayProvider } from "#/providers/IAMRelayProvider"; - -import { MembersPage, membersPageQuery } from "./MembersPage"; - -function MembersPageQueryLoader() { - const organizationId = useOrganizationId(); - const [queryRef, loadQuery] - = useQueryLoader(membersPageQuery); - - useEffect(() => { - loadQuery({ - organizationId, - }); - }, [loadQuery, organizationId]); - - if (!queryRef) { - return null; - } - - return ; -} - -export default function MembersPageLoader() { - return ( - - - - ); -} diff --git a/apps/console/src/pages/iam/organizations/settings/SettingsLayout.tsx b/apps/console/src/pages/iam/organizations/settings/SettingsLayout.tsx index 6baa46b08..dd3be590a 100644 --- a/apps/console/src/pages/iam/organizations/settings/SettingsLayout.tsx +++ b/apps/console/src/pages/iam/organizations/settings/SettingsLayout.tsx @@ -2,7 +2,6 @@ import { useTranslate } from "@probo/i18n"; import { IconKey, IconLock, - IconPeopleAdd, IconSettingsGear2, PageHeader, TabLink, @@ -25,10 +24,6 @@ export default function SettingsLayout() { {__("General")} - - - {__("Members")} - {__("SAML SSO")} diff --git a/apps/console/src/pages/iam/organizations/settings/_components/EditMemberDialog.tsx b/apps/console/src/pages/iam/organizations/settings/_components/EditMemberDialog.tsx index bf9fb0ef1..c5d76d0b8 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/EditMemberDialog.tsx +++ b/apps/console/src/pages/iam/organizations/settings/_components/EditMemberDialog.tsx @@ -13,7 +13,6 @@ import { import { use, useState } from "react"; import { graphql } from "relay-runtime"; -import type { MemberListItemFragment$data } from "#/__generated__/iam/MemberListItemFragment.graphql"; import type { PeopleListItemFragment$data } from "#/__generated__/iam/PeopleListItemFragment.graphql"; import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; import { useOrganizationId } from "#/hooks/useOrganizationId"; @@ -31,7 +30,7 @@ const updateMembershipMutation = graphql` `; export function EditMemberDialog(props: { - membership: MemberListItemFragment$data | PeopleListItemFragment$data; + membership: PeopleListItemFragment$data; onClose: () => void; }) { const { membership, onClose } = props; diff --git a/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx b/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx deleted file mode 100644 index 8605bbcf4..000000000 --- a/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { useTranslate } from "@probo/i18n"; -import { Tbody, Td, Th, Thead, Tr } from "@probo/ui"; -import type { ComponentProps } from "react"; -import { graphql, usePaginationFragment } from "react-relay"; - -import type { MemberListFragment$key } from "#/__generated__/iam/MemberListFragment.graphql"; -import type { MemberListFragment_RefetchQuery } from "#/__generated__/iam/MemberListFragment_RefetchQuery.graphql"; -import { SortableTable, SortableTh } from "#/components/SortableTable"; - -import { MemberListItem } from "./MemberListItem"; - -const fragment = graphql` - fragment MemberListFragment on Organization - @refetchable(queryName: "MemberListFragment_RefetchQuery") - @argumentDefinitions( - first: { type: "Int", defaultValue: 20 } - order: { - type: "MembershipOrder" - defaultValue: { direction: ASC, field: FULL_NAME } - } - after: { type: "CursorKey", defaultValue: null } - before: { type: "CursorKey", defaultValue: null } - last: { type: "Int", defaultValue: null } - ) { - members( - first: $first - after: $after - last: $last - before: $before - orderBy: $order - ) @connection(key: "MemberListFragment_members") @required(action: THROW) { - __id - totalCount - edges @required(action: THROW) { - node { - id - ...MemberListItemFragment - } - } - } - } -`; - -export function MemberList(props: { fKey: MemberListFragment$key }) { - const { fKey } = props; - - const { __ } = useTranslate(); - - const membersPagination = usePaginationFragment< - MemberListFragment_RefetchQuery, - MemberListFragment$key - >(fragment, fKey); - - const refetchMemberships = () => { - membersPagination.refetch({}, { fetchPolicy: "network-only" }); - }; - - return ( - ["refetch"] - } - pageSize={20} - > - - - {__("Name")} - {__("Email")} - {__("Type")} - {__("Role")} - {__("Joined")} - {__("Position")} - - - - - {membersPagination.data.members.totalCount === 0 - ? ( - - - {__("No members")} - - - ) - : ( - membersPagination.data.members.edges.map(({ node: membership }) => ( - - )) - )} - - - ); -} diff --git a/apps/console/src/pages/iam/organizations/settings/_components/MemberListItem.tsx b/apps/console/src/pages/iam/organizations/settings/_components/MemberListItem.tsx deleted file mode 100644 index d548caa54..000000000 --- a/apps/console/src/pages/iam/organizations/settings/_components/MemberListItem.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { sprintf } from "@probo/helpers"; -import { useTranslate } from "@probo/i18n"; -import { - Badge, - Button, - IconPencil, - IconTrashCan, - Spinner, - Td, - Tr, - useConfirm, -} from "@probo/ui"; -import { clsx } from "clsx"; -import { useState } from "react"; -import { useFragment } from "react-relay"; -import { graphql } from "relay-runtime"; - -import type { MemberListItemFragment$key } from "#/__generated__/iam/MemberListItemFragment.graphql"; -import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; -import { useOrganizationId } from "#/hooks/useOrganizationId"; - -import { EditMemberDialog } from "./EditMemberDialog"; - -const fragment = graphql` - fragment MemberListItemFragment on Membership { - id - role - source - state - profile @required(action: THROW) { - id - fullName - kind - position - } - identity @required(action: THROW) { - email - } - createdAt - canUpdate: permission(action: "iam:membership:update") - canDelete: permission(action: "iam:membership:delete") - } -`; - -const removeMemberMutation = graphql` - mutation MemberListItem_removeMutation( - $input: RemoveMemberInput! - $connections: [ID!]! - ) { - removeMember(input: $input) { - deletedMembershipId @deleteEdge(connections: $connections) - } - } -`; - -export function MemberListItem(props: { - connectionId: string; - fKey: MemberListItemFragment$key; - onRefetch: () => void; -}) { - const { fKey, connectionId } = props; - - const organizationId = useOrganizationId(); - const { __ } = useTranslate(); - const confirm = useConfirm(); - const [dialogOpen, setDialogOpen] = useState(false); - - const membership = useFragment(fragment, fKey); - - const isInactive = membership.state === "INACTIVE"; - - const [removeMembership, isRemoving] = useMutationWithToasts( - removeMemberMutation, - { - successMessage: __("Member removed successfully"), - errorMessage: __("Failed to remove member"), - }, - ); - - const handleRemove = () => { - confirm( - () => { - return removeMembership({ - variables: { - input: { - membershipId: membership.id, - organizationId: organizationId, - }, - connections: [connectionId], - }, - }); - }, - { - message: sprintf( - __("Are you sure you want to remove %s?"), - membership.profile.fullName, - ), - }, - ); - }; - - return ( - <> - - -
- {membership.profile.fullName} - {isInactive && {__("Inactive")}} -
- - -
- {membership.identity.email} - {membership.source} -
- - {membership.profile.kind} - - {membership.role} - - {new Date(membership.createdAt).toLocaleDateString()} - {membership.profile.position} - - {!isInactive && ( -
e.stopPropagation()} - > - {membership.canUpdate && ( -
- )} - - - - {dialogOpen && ( - setDialogOpen(false)} - membership={membership} - /> - )} - - ); -} diff --git a/apps/console/src/routes.tsx b/apps/console/src/routes.tsx index 5495a54fb..cce4319e2 100644 --- a/apps/console/src/routes.tsx +++ b/apps/console/src/routes.tsx @@ -191,13 +191,6 @@ const routes = [ import("./pages/iam/organizations/settings/GeneralSettingsPageLoader"), ), }, - { - path: "members", - Component: lazy( - () => - import("./pages/iam/organizations/settings/MembersPageLoader"), - ), - }, { path: "saml-sso", Component: lazy(