diff --git a/apps/console/src/__generated__/iam/MembershipCardFragment.graphql.ts b/apps/console/src/__generated__/iam/MembershipCardFragment.graphql.ts index a0c171e97..7f6748f07 100644 --- a/apps/console/src/__generated__/iam/MembershipCardFragment.graphql.ts +++ b/apps/console/src/__generated__/iam/MembershipCardFragment.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<<889efcfe178bb170887494345d05c48b>> * @lightSyntaxTransform * @nogrep */ @@ -9,12 +9,16 @@ // @ts-nocheck import { ReaderFragment } from 'relay-runtime'; +export type ProfileState = "ACTIVE" | "INACTIVE"; import { FragmentRefs } from "relay-runtime"; export type MembershipCardFragment$data = { - readonly lastSession: { - readonly expiresAt: string; - readonly id: string; - } | null | undefined; + readonly membership: { + readonly lastSession: { + readonly expiresAt: string; + readonly id: string; + } | null | undefined; + }; + readonly state: ProfileState; readonly " $fragmentType": "MembershipCardFragment"; }; export type MembershipCardFragment$key = { @@ -31,33 +35,55 @@ const node: ReaderFragment = { { "alias": null, "args": null, - "concreteType": "Session", - "kind": "LinkedField", - "name": "lastSession", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "expiresAt", - "storageKey": null - } - ], + "kind": "ScalarField", + "name": "state", "storageKey": null + }, + { + "kind": "RequiredField", + "field": { + "alias": null, + "args": null, + "concreteType": "Membership", + "kind": "LinkedField", + "name": "membership", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Session", + "kind": "LinkedField", + "name": "lastSession", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "expiresAt", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + "action": "THROW" } ], - "type": "Membership", + "type": "Profile", "abstractKey": null }; -(node as any).hash = "3da5f340850d352daaa553ca7b78aa37"; +(node as any).hash = "2e4f6ddee75ca32542f959c44de58e25"; export default node; diff --git a/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts b/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts index e49b6b6ac..24ddc3ff6 100644 --- a/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<68acd1fa60fc1efe40e3983441ae01da>> + * @generated SignedSource<<0e09a0566214f0c5c5ee2919d75bb85a>> * @lightSyntaxTransform * @nogrep */ @@ -17,13 +17,11 @@ export type MembershipsPageQuery$data = { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string; - readonly membership: { - readonly " $fragmentSpreads": FragmentRefs<"MembershipCardFragment">; - }; readonly organization: { readonly name: string; readonly " $fragmentSpreads": FragmentRefs<"MembershipCard_organizationFragment">; }; + readonly " $fragmentSpreads": FragmentRefs<"MembershipCardFragment">; }; }>; }; @@ -153,24 +151,9 @@ return { "selections": [ (v1/*: any*/), { - "kind": "RequiredField", - "field": { - "alias": null, - "args": null, - "concreteType": "Membership", - "kind": "LinkedField", - "name": "membership", - "plural": false, - "selections": [ - { - "args": null, - "kind": "FragmentSpread", - "name": "MembershipCardFragment" - } - ], - "storageKey": null - }, - "action": "THROW" + "args": null, + "kind": "FragmentSpread", + "name": "MembershipCardFragment" }, { "kind": "RequiredField", @@ -257,6 +240,13 @@ return { "plural": false, "selections": [ (v1/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "state", + "storageKey": null + }, { "alias": null, "args": null, @@ -338,7 +328,7 @@ return { ] }, "params": { - "cacheID": "d3ee4e9e305c7a2f57179cf540f4cd6c", + "cacheID": "d10df01cc523419b3f998a26d3ecbf7b", "id": null, "metadata": { "connection": [ @@ -355,11 +345,11 @@ return { }, "name": "MembershipsPageQuery", "operationKind": "query", - "text": "query MembershipsPageQuery {\n viewer {\n profiles(first: 1000, orderBy: {direction: ASC, field: ORGANIZATION_NAME}) {\n edges {\n node {\n id\n membership {\n ...MembershipCardFragment\n id\n }\n organization {\n name\n ...MembershipCard_organizationFragment\n id\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n }\n}\n\nfragment MembershipCardFragment on Membership {\n lastSession {\n id\n expiresAt\n }\n}\n\nfragment MembershipCard_organizationFragment on Organization {\n id\n name\n logoUrl\n}\n" + "text": "query MembershipsPageQuery {\n viewer {\n profiles(first: 1000, orderBy: {direction: ASC, field: ORGANIZATION_NAME}) {\n edges {\n node {\n id\n ...MembershipCardFragment\n organization {\n name\n ...MembershipCard_organizationFragment\n id\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n }\n}\n\nfragment MembershipCardFragment on Profile {\n state\n membership {\n lastSession {\n id\n expiresAt\n }\n id\n }\n}\n\nfragment MembershipCard_organizationFragment on Organization {\n id\n name\n logoUrl\n}\n" } }; })(); -(node as any).hash = "c87fe091011b4d5e5bffe0309eb4211f"; +(node as any).hash = "578d6a9573ba32c7b017ec0bae079651"; export default node; diff --git a/apps/console/src/pages/iam/memberships/MembershipsPage.tsx b/apps/console/src/pages/iam/memberships/MembershipsPage.tsx index a9c9ec420..fdd1dee21 100644 --- a/apps/console/src/pages/iam/memberships/MembershipsPage.tsx +++ b/apps/console/src/pages/iam/memberships/MembershipsPage.tsx @@ -26,9 +26,7 @@ export const membershipsPageQuery = graphql` edges @required(action: THROW) { node { id - membership @required(action: THROW) { ...MembershipCardFragment - } organization @required(action: THROW) { name ...MembershipCard_organizationFragment @@ -94,7 +92,7 @@ export function MembershipsPage(props: { profiles.map(({ node }) => ( )) diff --git a/apps/console/src/pages/iam/memberships/_components/MembershipCard.tsx b/apps/console/src/pages/iam/memberships/_components/MembershipCard.tsx index ed0e5834e..5e983b741 100644 --- a/apps/console/src/pages/iam/memberships/_components/MembershipCard.tsx +++ b/apps/console/src/pages/iam/memberships/_components/MembershipCard.tsx @@ -17,10 +17,13 @@ import type { MembershipCard_organizationFragment$key } from "#/__generated__/ia import type { MembershipCardFragment$key } from "#/__generated__/iam/MembershipCardFragment.graphql"; const fragment = graphql` - fragment MembershipCardFragment on Membership { - lastSession { - id - expiresAt + fragment MembershipCardFragment on Profile { + state + membership @required(action: THROW) { + lastSession { + id + expiresAt + } } } `; @@ -42,7 +45,7 @@ export function MembershipCard(props: MembershipCardProps) { const { fKey, organizationFragmentRef } = props; const { __ } = useTranslate(); - const { lastSession } = useFragment( + const { membership, ...user } = useFragment( fragment, fKey, ); @@ -51,8 +54,8 @@ export function MembershipCard(props: MembershipCardProps) { organizationFragmentRef, ); const isExpired - = lastSession && parseDate(lastSession.expiresAt) < new Date(); - const isAssuming = !!lastSession && !isExpired; + = membership.lastSession && parseDate(membership.lastSession.expiresAt) < new Date(); + const isAssuming = !!membership.lastSession && !isExpired; const getAuthBadge = () => { if (isAssuming) { @@ -94,11 +97,17 @@ export function MembershipCard(props: MembershipCardProps) {
- - {isAssuming - ? - : } - + {user.state === "ACTIVE" + ? ( + + {isAssuming + ? + : } + + ) + : ( + + )}