Move some pages under memberships namespace
Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
@@ -1,27 +1,25 @@
|
||||
import { usePreloadedQuery, type PreloadedQuery } from "react-relay";
|
||||
import { organizationLayoutQuery } from "./OrganizationLayoutQuery";
|
||||
import { membershipLayoutQuery } from "./MembershipLayoutQuery";
|
||||
import { Link, Outlet } from "react-router";
|
||||
import { Badge, Button, IconPeopleAdd, Layout, Skeleton } from "@probo/ui";
|
||||
import { Sidebar } from "./_components/Sidebar";
|
||||
import { OrganizationDropdown } from "./_components/OrganizationDropdown";
|
||||
import type { OrganizationLayoutQuery } from "./__generated__/OrganizationLayoutQuery.graphql";
|
||||
import { MembershipsDropdown } from "./MembershipsDropdown";
|
||||
import type { MembershipLayoutQuery } from "./__generated__/MembershipLayoutQuery.graphql";
|
||||
import { PermissionsProvider } from "/providers/PermissionsProvider";
|
||||
import { SessionDropdown } from "./_components/SessionDropdown";
|
||||
import { Suspense } from "react";
|
||||
import { useTranslate } from "@probo/i18n";
|
||||
import { CoreRelayProvider } from "/providers/CoreRelayProvider";
|
||||
|
||||
interface OrganizationLayoutProps {
|
||||
queryRef: PreloadedQuery<OrganizationLayoutQuery>;
|
||||
}
|
||||
|
||||
export default function OrganizationLayout(props: OrganizationLayoutProps) {
|
||||
export default function MembershipLayout(props: {
|
||||
queryRef: PreloadedQuery<MembershipLayoutQuery>;
|
||||
}) {
|
||||
const { queryRef } = props;
|
||||
|
||||
const { __ } = useTranslate();
|
||||
|
||||
const { organization, viewer } = usePreloadedQuery<OrganizationLayoutQuery>(
|
||||
organizationLayoutQuery,
|
||||
const { organization, viewer } = usePreloadedQuery<MembershipLayoutQuery>(
|
||||
membershipLayoutQuery,
|
||||
queryRef,
|
||||
);
|
||||
|
||||
@@ -31,7 +29,7 @@ export default function OrganizationLayout(props: OrganizationLayoutProps) {
|
||||
header={
|
||||
<>
|
||||
<div className="mr-auto">
|
||||
<OrganizationDropdown
|
||||
<MembershipsDropdown
|
||||
organizationFKey={organization}
|
||||
viewerFKey={viewer}
|
||||
/>
|
||||
@@ -4,19 +4,19 @@ import { graphql } from "relay-runtime";
|
||||
import { Suspense, useEffect } from "react";
|
||||
import { Skeleton } from "@probo/ui";
|
||||
import { useOrganizationId } from "/hooks/useOrganizationId";
|
||||
import type { OrganizationLayoutQuery } from "./__generated__/OrganizationLayoutQuery.graphql";
|
||||
import type { MembershipLayoutQuery } from "./__generated__/MembershipLayoutQuery.graphql";
|
||||
|
||||
const Layout = lazy(() => import("./OrganizationLayout"));
|
||||
const Layout = lazy(() => import("./MembershipLayout"));
|
||||
|
||||
export const organizationLayoutQuery = graphql`
|
||||
query OrganizationLayoutQuery($organizationId: ID!) {
|
||||
export const membershipLayoutQuery = graphql`
|
||||
query MembershipLayoutQuery($organizationId: ID!) {
|
||||
organization: node(id: $organizationId) @required(action: THROW) {
|
||||
... on Organization {
|
||||
...OrganizationDropdown_organizationFragment
|
||||
...MembershipsDropdown_organizationFragment
|
||||
}
|
||||
}
|
||||
viewer @required(action: THROW) {
|
||||
...OrganizationDropdown_viewerFragment
|
||||
...MembershipsDropdown_viewerFragment
|
||||
pendingInvitations @required(action: THROW) {
|
||||
totalCount @required(action: THROW)
|
||||
}
|
||||
@@ -25,10 +25,10 @@ export const organizationLayoutQuery = graphql`
|
||||
}
|
||||
`;
|
||||
|
||||
export function OrganizationLayoutQuery() {
|
||||
export function MembershipLayoutQuery() {
|
||||
const organizationId = useOrganizationId();
|
||||
const [queryRef, loadQuery] = useQueryLoader<OrganizationLayoutQuery>(
|
||||
organizationLayoutQuery,
|
||||
const [queryRef, loadQuery] = useQueryLoader<MembershipLayoutQuery>(
|
||||
membershipLayoutQuery,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -15,30 +15,30 @@ import {
|
||||
import { Suspense, useCallback, useState } from "react";
|
||||
import { useTranslate } from "@probo/i18n";
|
||||
import {
|
||||
OrganizationDropdownMenu,
|
||||
organizationDropdownMenuQuery,
|
||||
} from "./OrganizationDropdownMenu";
|
||||
import type { OrganizationDropdownMenuQuery } from "./__generated__/OrganizationDropdownMenuQuery.graphql";
|
||||
MembershipsDropdownMenu,
|
||||
membershipsDropdownMenuQuery,
|
||||
} from "./MembershipsDropdownMenu";
|
||||
import type { MembershipsDropdownMenuQuery } from "./__generated__/MembershipsDropdownMenuQuery.graphql";
|
||||
import { Link } from "react-router";
|
||||
import type { OrganizationDropdown_organizationFragment$key } from "./__generated__/OrganizationDropdown_organizationFragment.graphql";
|
||||
import type { OrganizationDropdown_viewerFragment$key } from "./__generated__/OrganizationDropdown_viewerFragment.graphql";
|
||||
import type { MembershipsDropdown_organizationFragment$key } from "./__generated__/MembershipsDropdown_organizationFragment.graphql";
|
||||
import type { MembershipsDropdown_viewerFragment$key } from "./__generated__/MembershipsDropdown_viewerFragment.graphql";
|
||||
|
||||
const organizationFragment = graphql`
|
||||
fragment OrganizationDropdown_organizationFragment on Organization {
|
||||
fragment MembershipsDropdown_organizationFragment on Organization {
|
||||
name
|
||||
}
|
||||
`;
|
||||
const viewerFragment = graphql`
|
||||
fragment OrganizationDropdown_viewerFragment on Identity {
|
||||
fragment MembershipsDropdown_viewerFragment on Identity {
|
||||
pendingInvitations @required(action: THROW) {
|
||||
totalCount @required(action: THROW)
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export function OrganizationDropdown(props: {
|
||||
organizationFKey: OrganizationDropdown_organizationFragment$key;
|
||||
viewerFKey: OrganizationDropdown_viewerFragment$key;
|
||||
export function MembershipsDropdown(props: {
|
||||
organizationFKey: MembershipsDropdown_organizationFragment$key;
|
||||
viewerFKey: MembershipsDropdown_viewerFragment$key;
|
||||
}) {
|
||||
const { organizationFKey, viewerFKey } = props;
|
||||
|
||||
@@ -46,18 +46,18 @@ export function OrganizationDropdown(props: {
|
||||
const [search, setSearch] = useState("");
|
||||
|
||||
const currentOrganization =
|
||||
useFragment<OrganizationDropdown_organizationFragment$key>(
|
||||
useFragment<MembershipsDropdown_organizationFragment$key>(
|
||||
organizationFragment,
|
||||
organizationFKey,
|
||||
);
|
||||
const {
|
||||
pendingInvitations: { totalCount: pendingInvitationCount },
|
||||
} = useFragment<OrganizationDropdown_viewerFragment$key>(
|
||||
} = useFragment<MembershipsDropdown_viewerFragment$key>(
|
||||
viewerFragment,
|
||||
viewerFKey,
|
||||
);
|
||||
const [queryRef, loadQuery] = useQueryLoader<OrganizationDropdownMenuQuery>(
|
||||
organizationDropdownMenuQuery,
|
||||
const [queryRef, loadQuery] = useQueryLoader<MembershipsDropdownMenuQuery>(
|
||||
membershipsDropdownMenuQuery,
|
||||
);
|
||||
|
||||
const handleOpenMenu = useCallback(
|
||||
@@ -102,7 +102,7 @@ export function OrganizationDropdown(props: {
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<OrganizationDropdownMenu search={search} queryRef={queryRef} />
|
||||
<MembershipsDropdownMenu search={search} queryRef={queryRef} />
|
||||
</Suspense>
|
||||
)}
|
||||
</div>
|
||||
@@ -1,10 +1,10 @@
|
||||
import { graphql, usePreloadedQuery, type PreloadedQuery } from "react-relay";
|
||||
import type { OrganizationDropdownMenuQuery } from "./__generated__/OrganizationDropdownMenuQuery.graphql";
|
||||
import type { MembershipsDropdownMenuQuery } from "./__generated__/MembershipsDropdownMenuQuery.graphql";
|
||||
import { useMemo } from "react";
|
||||
import { OrganizationDropdownMenuItem } from "./OrganizationDropdownMenuItem";
|
||||
import { MembershipsDropdownMenuItem } from "./MembershipsDropdownMenuItem";
|
||||
|
||||
export const organizationDropdownMenuQuery = graphql`
|
||||
query OrganizationDropdownMenuQuery {
|
||||
export const membershipsDropdownMenuQuery = graphql`
|
||||
query MembershipsDropdownMenuQuery {
|
||||
viewer @required(action: THROW) {
|
||||
memberships(first: 1000, orderBy: { direction: DESC, field: CREATED_AT })
|
||||
@required(action: THROW) {
|
||||
@@ -14,7 +14,7 @@ export const organizationDropdownMenuQuery = graphql`
|
||||
organization @required(action: THROW) {
|
||||
name
|
||||
}
|
||||
...OrganizationDropdownMenuItemFragment
|
||||
...MembershipsDropdownMenuItemFragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,20 +22,20 @@ export const organizationDropdownMenuQuery = graphql`
|
||||
}
|
||||
`;
|
||||
|
||||
interface OrganizationDropdownMenuProps {
|
||||
queryRef: PreloadedQuery<OrganizationDropdownMenuQuery>;
|
||||
interface MembershipsDropdownMenuProps {
|
||||
queryRef: PreloadedQuery<MembershipsDropdownMenuQuery>;
|
||||
search: string;
|
||||
}
|
||||
|
||||
export function OrganizationDropdownMenu(props: OrganizationDropdownMenuProps) {
|
||||
export function MembershipsDropdownMenu(props: MembershipsDropdownMenuProps) {
|
||||
const { queryRef, search } = props;
|
||||
|
||||
const {
|
||||
viewer: {
|
||||
memberships: { edges: initialMemberships },
|
||||
},
|
||||
} = usePreloadedQuery<OrganizationDropdownMenuQuery>(
|
||||
organizationDropdownMenuQuery,
|
||||
} = usePreloadedQuery<MembershipsDropdownMenuQuery>(
|
||||
membershipsDropdownMenuQuery,
|
||||
queryRef,
|
||||
);
|
||||
|
||||
@@ -52,7 +52,7 @@ export function OrganizationDropdownMenu(props: OrganizationDropdownMenuProps) {
|
||||
return (
|
||||
<>
|
||||
{memberships.map(({ node }) => (
|
||||
<OrganizationDropdownMenuItem fKey={node} key={node.id} />
|
||||
<MembershipsDropdownMenuItem fKey={node} key={node.id} />
|
||||
))}
|
||||
</>
|
||||
);
|
||||
@@ -6,15 +6,15 @@ import {
|
||||
IconLock,
|
||||
} from "@probo/ui";
|
||||
import { graphql } from "relay-runtime";
|
||||
import type { OrganizationDropdownMenuItemFragment$key } from "./__generated__/OrganizationDropdownMenuItemFragment.graphql";
|
||||
import type { MembershipsDropdownMenuItemFragment$key } from "./__generated__/MembershipsDropdownMenuItemFragment.graphql";
|
||||
import { useFragment, useMutation } from "react-relay";
|
||||
import { parseDate } from "@probo/helpers";
|
||||
import { useCallback } from "react";
|
||||
import { useNavigate } from "react-router";
|
||||
import type { OrganizationDropdownMenuItem_assumeMutation } from "./__generated__/OrganizationDropdownMenuItem_assumeMutation.graphql";
|
||||
import type { MembershipsDropdownMenuItem_assumeMutation } from "./__generated__/MembershipsDropdownMenuItem_assumeMutation.graphql";
|
||||
|
||||
const fragment = graphql`
|
||||
fragment OrganizationDropdownMenuItemFragment on Membership {
|
||||
fragment MembershipsDropdownMenuItemFragment on Membership {
|
||||
id
|
||||
lastSession {
|
||||
id
|
||||
@@ -29,7 +29,7 @@ const fragment = graphql`
|
||||
`;
|
||||
|
||||
const assumeOrganizationSessionMutation = graphql`
|
||||
mutation OrganizationDropdownMenuItem_assumeMutation(
|
||||
mutation MembershipsDropdownMenuItem_assumeMutation(
|
||||
$input: AssumeOrganizationSessionInput!
|
||||
) {
|
||||
assumeOrganizationSession(input: $input) {
|
||||
@@ -47,22 +47,22 @@ const assumeOrganizationSessionMutation = graphql`
|
||||
}
|
||||
`;
|
||||
|
||||
export function OrganizationDropdownMenuItem(props: {
|
||||
fKey: OrganizationDropdownMenuItemFragment$key;
|
||||
export function MembershipsDropdownMenuItem(props: {
|
||||
fKey: MembershipsDropdownMenuItemFragment$key;
|
||||
}) {
|
||||
const { fKey } = props;
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { id, lastSession, organization } =
|
||||
useFragment<OrganizationDropdownMenuItemFragment$key>(fragment, fKey);
|
||||
useFragment<MembershipsDropdownMenuItemFragment$key>(fragment, fKey);
|
||||
|
||||
const isAuthenticated = !!lastSession;
|
||||
const isExpired =
|
||||
lastSession && parseDate(lastSession.expiresAt) < new Date();
|
||||
|
||||
const [assumeOrganizationSession] =
|
||||
useMutation<OrganizationDropdownMenuItem_assumeMutation>(
|
||||
useMutation<MembershipsDropdownMenuItem_assumeMutation>(
|
||||
assumeOrganizationSessionMutation,
|
||||
);
|
||||
|
||||
@@ -9,15 +9,15 @@ import {
|
||||
} from "@probo/ui";
|
||||
import { useMemo, useState } from "react";
|
||||
import { InvitationCard } from "./_components/InvitationCard";
|
||||
import { organizationsPageQuery } from "./OrganizationsPageQuery";
|
||||
import { membershipsPageQuery } from "./MembershipsPageQuery";
|
||||
import { MembershipCard } from "./_components/MembershipCard";
|
||||
import type { OrganizationsPageQuery } from "./__generated__/OrganizationsPageQuery.graphql";
|
||||
import type { MembershipsPageQuery } from "./__generated__/MembershipsPageQuery.graphql";
|
||||
|
||||
interface PageProps {
|
||||
queryRef: PreloadedQuery<OrganizationsPageQuery>;
|
||||
queryRef: PreloadedQuery<MembershipsPageQuery>;
|
||||
}
|
||||
|
||||
export default function Page(props: PageProps) {
|
||||
export default function MembershipsPage(props: PageProps) {
|
||||
const { __ } = useTranslate();
|
||||
const [search, setSearch] = useState("");
|
||||
|
||||
@@ -27,10 +27,7 @@ export default function Page(props: PageProps) {
|
||||
memberships: { edges: initialMemberships },
|
||||
pendingInvitations: { edges: invitations },
|
||||
},
|
||||
} = usePreloadedQuery<OrganizationsPageQuery>(
|
||||
organizationsPageQuery,
|
||||
queryRef,
|
||||
);
|
||||
} = usePreloadedQuery<MembershipsPageQuery>(membershipsPageQuery, queryRef);
|
||||
|
||||
const memberships = useMemo(() => {
|
||||
if (!search.trim()) {
|
||||
@@ -3,12 +3,12 @@ import { useQueryLoader } from "react-relay";
|
||||
import { graphql } from "relay-runtime";
|
||||
import { Suspense, useEffect } from "react";
|
||||
import { CenteredLayoutSkeleton } from "@probo/ui";
|
||||
import type { OrganizationsPageQuery } from "./__generated__/OrganizationsPageQuery.graphql";
|
||||
import type { MembershipsPageQuery } from "./__generated__/MembershipsPageQuery.graphql";
|
||||
|
||||
const Page = lazy(() => import("./OrganizationsPage"));
|
||||
const Page = lazy(() => import("./MembershipsPage"));
|
||||
|
||||
export const organizationsPageQuery = graphql`
|
||||
query OrganizationsPageQuery {
|
||||
export const membershipsPageQuery = graphql`
|
||||
query MembershipsPageQuery {
|
||||
viewer @required(action: THROW) {
|
||||
memberships(first: 1000, orderBy: { direction: DESC, field: CREATED_AT })
|
||||
@required(action: THROW) {
|
||||
@@ -37,10 +37,9 @@ export const organizationsPageQuery = graphql`
|
||||
}
|
||||
`;
|
||||
|
||||
export function OrganizationsPageQuery() {
|
||||
const [queryRef, loadQuery] = useQueryLoader<OrganizationsPageQuery>(
|
||||
organizationsPageQuery,
|
||||
);
|
||||
export function MembershipsPageQuery() {
|
||||
const [queryRef, loadQuery] =
|
||||
useQueryLoader<MembershipsPageQuery>(membershipsPageQuery);
|
||||
|
||||
useEffect(() => {
|
||||
loadQuery({});
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<09fbc762db2d00eb944a0ef9afe3756d>>
|
||||
* @generated SignedSource<<4b0d5d271f19e23939fc2b392aa79fbc>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,23 +10,23 @@
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationLayoutQuery$variables = {
|
||||
export type MembershipLayoutQuery$variables = {
|
||||
organizationId: string;
|
||||
};
|
||||
export type OrganizationLayoutQuery$data = {
|
||||
export type MembershipLayoutQuery$data = {
|
||||
readonly organization: {
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdown_organizationFragment">;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_organizationFragment">;
|
||||
};
|
||||
readonly viewer: {
|
||||
readonly pendingInvitations: {
|
||||
readonly totalCount: number;
|
||||
};
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdown_viewerFragment" | "SessionDropdownFragment">;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment" | "SessionDropdownFragment">;
|
||||
};
|
||||
};
|
||||
export type OrganizationLayoutQuery = {
|
||||
response: OrganizationLayoutQuery$data;
|
||||
variables: OrganizationLayoutQuery$variables;
|
||||
export type MembershipLayoutQuery = {
|
||||
response: MembershipLayoutQuery$data;
|
||||
variables: MembershipLayoutQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -70,7 +70,7 @@ return {
|
||||
"argumentDefinitions": (v0/*: any*/),
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationLayoutQuery",
|
||||
"name": "MembershipLayoutQuery",
|
||||
"selections": [
|
||||
{
|
||||
"kind": "RequiredField",
|
||||
@@ -88,7 +88,7 @@ return {
|
||||
{
|
||||
"args": null,
|
||||
"kind": "FragmentSpread",
|
||||
"name": "OrganizationDropdown_organizationFragment"
|
||||
"name": "MembershipsDropdown_organizationFragment"
|
||||
}
|
||||
],
|
||||
"type": "Organization",
|
||||
@@ -112,7 +112,7 @@ return {
|
||||
{
|
||||
"args": null,
|
||||
"kind": "FragmentSpread",
|
||||
"name": "OrganizationDropdown_viewerFragment"
|
||||
"name": "MembershipsDropdown_viewerFragment"
|
||||
},
|
||||
{
|
||||
"kind": "RequiredField",
|
||||
@@ -152,7 +152,7 @@ return {
|
||||
"operation": {
|
||||
"argumentDefinitions": (v0/*: any*/),
|
||||
"kind": "Operation",
|
||||
"name": "OrganizationLayoutQuery",
|
||||
"name": "MembershipLayoutQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": "organization",
|
||||
@@ -247,16 +247,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "ca7f41668eb74024237351d0e076819e",
|
||||
"cacheID": "a849dd96b5088ddc9a3bbab50273c411",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "OrganizationLayoutQuery",
|
||||
"name": "MembershipLayoutQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query OrganizationLayoutQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...OrganizationDropdown_organizationFragment\n }\n id\n }\n viewer {\n ...OrganizationDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n ...SessionDropdownFragment_4xMPKw\n id\n }\n}\n\nfragment OrganizationDropdown_organizationFragment on Organization {\n name\n}\n\nfragment OrganizationDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SessionDropdownFragment_4xMPKw on Identity {\n email\n profileFor(organizationId: $organizationId) {\n firstName\n lastName\n id\n }\n}\n"
|
||||
"text": "query MembershipLayoutQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...MembershipsDropdown_organizationFragment\n }\n id\n }\n viewer {\n ...MembershipsDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n ...SessionDropdownFragment_4xMPKw\n id\n }\n}\n\nfragment MembershipsDropdown_organizationFragment on Organization {\n name\n}\n\nfragment MembershipsDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SessionDropdownFragment_4xMPKw on Identity {\n email\n profileFor(organizationId: $organizationId) {\n firstName\n lastName\n id\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "81b8eb0af21d649268e30c80d16226de";
|
||||
(node as any).hash = "e28f1f5e510386718b39cd547d4ce59f";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<e917cb1af13350772d46c02bd6b37da5>>
|
||||
* @generated SignedSource<<353905ded51be0954c17254a66a133d5>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
import { ReaderFragment } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationDropdownMenuItemFragment$data = {
|
||||
export type MembershipsDropdownMenuItemFragment$data = {
|
||||
readonly id: string;
|
||||
readonly lastSession: {
|
||||
readonly expiresAt: any;
|
||||
@@ -21,11 +21,11 @@ export type OrganizationDropdownMenuItemFragment$data = {
|
||||
readonly logoUrl: string | null | undefined;
|
||||
readonly name: string;
|
||||
};
|
||||
readonly " $fragmentType": "OrganizationDropdownMenuItemFragment";
|
||||
readonly " $fragmentType": "MembershipsDropdownMenuItemFragment";
|
||||
};
|
||||
export type OrganizationDropdownMenuItemFragment$key = {
|
||||
readonly " $data"?: OrganizationDropdownMenuItemFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdownMenuItemFragment">;
|
||||
export type MembershipsDropdownMenuItemFragment$key = {
|
||||
readonly " $data"?: MembershipsDropdownMenuItemFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdownMenuItemFragment">;
|
||||
};
|
||||
|
||||
const node: ReaderFragment = (function(){
|
||||
@@ -40,7 +40,7 @@ return {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationDropdownMenuItemFragment",
|
||||
"name": "MembershipsDropdownMenuItemFragment",
|
||||
"selections": [
|
||||
(v0/*: any*/),
|
||||
{
|
||||
@@ -98,6 +98,6 @@ return {
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "22fea7c8463774a5fa9ea5f56d1e876c";
|
||||
(node as any).hash = "915a6fb0071b4890010401a56f3affa6";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<469707d0eca0a0378fa589809db964bc>>
|
||||
* @generated SignedSource<<a3cc5c262b8a01f267eb2b549ab95a27>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -13,10 +13,10 @@ export type ReauthenticationReason = "POLICY_REQUIREMENT" | "SENSITIVE_ACTION" |
|
||||
export type AssumeOrganizationSessionInput = {
|
||||
organizationId: string;
|
||||
};
|
||||
export type OrganizationDropdownMenuItem_assumeMutation$variables = {
|
||||
export type MembershipsDropdownMenuItem_assumeMutation$variables = {
|
||||
input: AssumeOrganizationSessionInput;
|
||||
};
|
||||
export type OrganizationDropdownMenuItem_assumeMutation$data = {
|
||||
export type MembershipsDropdownMenuItem_assumeMutation$data = {
|
||||
readonly assumeOrganizationSession: {
|
||||
readonly result: {
|
||||
readonly __typename: "PasswordRequired";
|
||||
@@ -32,9 +32,9 @@ export type OrganizationDropdownMenuItem_assumeMutation$data = {
|
||||
};
|
||||
} | null | undefined;
|
||||
};
|
||||
export type OrganizationDropdownMenuItem_assumeMutation = {
|
||||
response: OrganizationDropdownMenuItem_assumeMutation$data;
|
||||
variables: OrganizationDropdownMenuItem_assumeMutation$variables;
|
||||
export type MembershipsDropdownMenuItem_assumeMutation = {
|
||||
response: MembershipsDropdownMenuItem_assumeMutation$data;
|
||||
variables: MembershipsDropdownMenuItem_assumeMutation$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -117,7 +117,7 @@ return {
|
||||
"argumentDefinitions": (v0/*: any*/),
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationDropdownMenuItem_assumeMutation",
|
||||
"name": "MembershipsDropdownMenuItem_assumeMutation",
|
||||
"selections": (v2/*: any*/),
|
||||
"type": "Mutation",
|
||||
"abstractKey": null
|
||||
@@ -126,20 +126,20 @@ return {
|
||||
"operation": {
|
||||
"argumentDefinitions": (v0/*: any*/),
|
||||
"kind": "Operation",
|
||||
"name": "OrganizationDropdownMenuItem_assumeMutation",
|
||||
"name": "MembershipsDropdownMenuItem_assumeMutation",
|
||||
"selections": (v2/*: any*/)
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "024d06c3bba88bb18eb1aa7e2888edd0",
|
||||
"cacheID": "21ebf9c598bd39f2abcb0ace0d9c0c4b",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "OrganizationDropdownMenuItem_assumeMutation",
|
||||
"name": "MembershipsDropdownMenuItem_assumeMutation",
|
||||
"operationKind": "mutation",
|
||||
"text": "mutation OrganizationDropdownMenuItem_assumeMutation(\n $input: AssumeOrganizationSessionInput!\n) {\n assumeOrganizationSession(input: $input) {\n result {\n __typename\n ... on PasswordRequired {\n reason\n }\n ... on SAMLAuthenticationRequired {\n reason\n redirectUrl\n }\n }\n }\n}\n"
|
||||
"text": "mutation MembershipsDropdownMenuItem_assumeMutation(\n $input: AssumeOrganizationSessionInput!\n) {\n assumeOrganizationSession(input: $input) {\n result {\n __typename\n ... on PasswordRequired {\n reason\n }\n ... on SAMLAuthenticationRequired {\n reason\n redirectUrl\n }\n }\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "bbc8443e4a756b37f8b46ee98972bdcb";
|
||||
(node as any).hash = "416f824d526d3f92797fec0eb9c2e590";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<034b9a96de4b1efda9529e8165779342>>
|
||||
* @generated SignedSource<<b51fba8f2d50c85b2eeb51c658d82e17>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationDropdownMenuQuery$variables = Record<PropertyKey, never>;
|
||||
export type OrganizationDropdownMenuQuery$data = {
|
||||
export type MembershipsDropdownMenuQuery$variables = Record<PropertyKey, never>;
|
||||
export type MembershipsDropdownMenuQuery$data = {
|
||||
readonly viewer: {
|
||||
readonly memberships: {
|
||||
readonly edges: ReadonlyArray<{
|
||||
@@ -20,15 +20,15 @@ export type OrganizationDropdownMenuQuery$data = {
|
||||
readonly organization: {
|
||||
readonly name: string;
|
||||
};
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdownMenuItemFragment">;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdownMenuItemFragment">;
|
||||
};
|
||||
}>;
|
||||
};
|
||||
};
|
||||
};
|
||||
export type OrganizationDropdownMenuQuery = {
|
||||
response: OrganizationDropdownMenuQuery$data;
|
||||
variables: OrganizationDropdownMenuQuery$variables;
|
||||
export type MembershipsDropdownMenuQuery = {
|
||||
response: MembershipsDropdownMenuQuery$data;
|
||||
variables: MembershipsDropdownMenuQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -66,7 +66,7 @@ return {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationDropdownMenuQuery",
|
||||
"name": "MembershipsDropdownMenuQuery",
|
||||
"selections": [
|
||||
{
|
||||
"kind": "RequiredField",
|
||||
@@ -128,7 +128,7 @@ return {
|
||||
{
|
||||
"args": null,
|
||||
"kind": "FragmentSpread",
|
||||
"name": "OrganizationDropdownMenuItemFragment"
|
||||
"name": "MembershipsDropdownMenuItemFragment"
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
@@ -158,7 +158,7 @@ return {
|
||||
"operation": {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Operation",
|
||||
"name": "OrganizationDropdownMenuQuery",
|
||||
"name": "MembershipsDropdownMenuQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -248,16 +248,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "b880e24e59e2bb500bbb2b9026423c20",
|
||||
"cacheID": "edb71632c35f1f8aefa1bb426c81a985",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "OrganizationDropdownMenuQuery",
|
||||
"name": "MembershipsDropdownMenuQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query OrganizationDropdownMenuQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n organization {\n name\n id\n }\n ...OrganizationDropdownMenuItemFragment\n }\n }\n }\n id\n }\n}\n\nfragment OrganizationDropdownMenuItemFragment on Membership {\n id\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n logoUrl\n name\n }\n}\n"
|
||||
"text": "query MembershipsDropdownMenuQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n organization {\n name\n id\n }\n ...MembershipsDropdownMenuItemFragment\n }\n }\n }\n id\n }\n}\n\nfragment MembershipsDropdownMenuItemFragment on Membership {\n id\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n logoUrl\n name\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "27c82735b5dcef01422d87312c127519";
|
||||
(node as any).hash = "aa787b33a7cb3046d30fd638f4850621";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<1d2465517ea2dcfa99fb3dd8757fe980>>
|
||||
* @generated SignedSource<<84862118e94833cec2ce241e7329ba04>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,20 +10,20 @@
|
||||
|
||||
import { ReaderFragment } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationDropdown_organizationFragment$data = {
|
||||
export type MembershipsDropdown_organizationFragment$data = {
|
||||
readonly name: string;
|
||||
readonly " $fragmentType": "OrganizationDropdown_organizationFragment";
|
||||
readonly " $fragmentType": "MembershipsDropdown_organizationFragment";
|
||||
};
|
||||
export type OrganizationDropdown_organizationFragment$key = {
|
||||
readonly " $data"?: OrganizationDropdown_organizationFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdown_organizationFragment">;
|
||||
export type MembershipsDropdown_organizationFragment$key = {
|
||||
readonly " $data"?: MembershipsDropdown_organizationFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_organizationFragment">;
|
||||
};
|
||||
|
||||
const node: ReaderFragment = {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationDropdown_organizationFragment",
|
||||
"name": "MembershipsDropdown_organizationFragment",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -37,6 +37,6 @@ const node: ReaderFragment = {
|
||||
"abstractKey": null
|
||||
};
|
||||
|
||||
(node as any).hash = "8e6d0c702f821670315b5bde55e2556a";
|
||||
(node as any).hash = "89ef8f037f10c51776df8e5add87cc29";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<d4b9efa7b9092ceb3f995507108a68e3>>
|
||||
* @generated SignedSource<<842fffc896db6311ff3c5901eae70176>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,22 +10,22 @@
|
||||
|
||||
import { ReaderFragment } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationDropdown_viewerFragment$data = {
|
||||
export type MembershipsDropdown_viewerFragment$data = {
|
||||
readonly pendingInvitations: {
|
||||
readonly totalCount: number;
|
||||
};
|
||||
readonly " $fragmentType": "OrganizationDropdown_viewerFragment";
|
||||
readonly " $fragmentType": "MembershipsDropdown_viewerFragment";
|
||||
};
|
||||
export type OrganizationDropdown_viewerFragment$key = {
|
||||
readonly " $data"?: OrganizationDropdown_viewerFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"OrganizationDropdown_viewerFragment">;
|
||||
export type MembershipsDropdown_viewerFragment$key = {
|
||||
readonly " $data"?: MembershipsDropdown_viewerFragment$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment">;
|
||||
};
|
||||
|
||||
const node: ReaderFragment = {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationDropdown_viewerFragment",
|
||||
"name": "MembershipsDropdown_viewerFragment",
|
||||
"selections": [
|
||||
{
|
||||
"kind": "RequiredField",
|
||||
@@ -58,6 +58,6 @@ const node: ReaderFragment = {
|
||||
"abstractKey": null
|
||||
};
|
||||
|
||||
(node as any).hash = "ce947f812c95b74e9f250b8d5821ebb0";
|
||||
(node as any).hash = "96b64fbc2481273728051e42d74bc8b5";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<6ac0b24d615666de1a5ea1c751095e6d>>
|
||||
* @generated SignedSource<<ab48c4d454e4f9fa4472a103b8144b7c>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type OrganizationsPageQuery$variables = Record<PropertyKey, never>;
|
||||
export type OrganizationsPageQuery$data = {
|
||||
export type MembershipsPageQuery$variables = Record<PropertyKey, never>;
|
||||
export type MembershipsPageQuery$data = {
|
||||
readonly viewer: {
|
||||
readonly memberships: {
|
||||
readonly edges: ReadonlyArray<{
|
||||
@@ -34,9 +34,9 @@ export type OrganizationsPageQuery$data = {
|
||||
};
|
||||
};
|
||||
};
|
||||
export type OrganizationsPageQuery = {
|
||||
response: OrganizationsPageQuery$data;
|
||||
variables: OrganizationsPageQuery$variables;
|
||||
export type MembershipsPageQuery = {
|
||||
response: MembershipsPageQuery$data;
|
||||
variables: MembershipsPageQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -74,7 +74,7 @@ return {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "OrganizationsPageQuery",
|
||||
"name": "MembershipsPageQuery",
|
||||
"selections": [
|
||||
{
|
||||
"kind": "RequiredField",
|
||||
@@ -217,7 +217,7 @@ return {
|
||||
"operation": {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Operation",
|
||||
"name": "OrganizationsPageQuery",
|
||||
"name": "MembershipsPageQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -368,16 +368,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "146deb87c5d32960212f323b4f5c792c",
|
||||
"cacheID": "70ba2b8cec46ba8154cf7a6a51e03932",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "OrganizationsPageQuery",
|
||||
"name": "MembershipsPageQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query OrganizationsPageQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...MembershipCardFragment\n organization {\n name\n id\n }\n }\n }\n }\n pendingInvitations(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationCardFragment\n }\n }\n }\n id\n }\n}\n\nfragment InvitationCardFragment on Invitation {\n id\n role\n createdAt\n organization {\n id\n name\n }\n}\n\nfragment MembershipCardFragment on Membership {\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n name\n logoUrl\n }\n}\n"
|
||||
"text": "query MembershipsPageQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...MembershipCardFragment\n organization {\n name\n id\n }\n }\n }\n }\n pendingInvitations(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationCardFragment\n }\n }\n }\n id\n }\n}\n\nfragment InvitationCardFragment on Invitation {\n id\n role\n createdAt\n organization {\n id\n name\n }\n}\n\nfragment MembershipCardFragment on Membership {\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n name\n logoUrl\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7c03287e592920408306cac9bfa7fc81";
|
||||
(node as any).hash = "4148521eb3eaba1670a2d181b6d2468f";
|
||||
|
||||
export default node;
|
||||
@@ -46,8 +46,8 @@ import {
|
||||
UnAuthenticatedError,
|
||||
UnauthorizedError,
|
||||
} from "@probo/relay";
|
||||
import { OrganizationsPageQuery } from "./pages/iam/organizations/OrganizationsPageQuery.tsx";
|
||||
import { OrganizationLayoutQuery } from "./pages/iam/organizations/OrganizationLayoutQuery.tsx";
|
||||
import { MembershipsPageQuery } from "./pages/iam/memberships/MembershipsPageQuery.tsx";
|
||||
import { MembershipLayoutQuery } from "./pages/iam/memberships/MembershipLayoutQuery.tsx";
|
||||
import { IAMRelayProvider } from "./providers/IAMRelayProvider.tsx";
|
||||
|
||||
const NewOrganizationPage = lazy(
|
||||
@@ -120,7 +120,7 @@ const routes = [
|
||||
index: true,
|
||||
Component: () => (
|
||||
<IAMRelayProvider>
|
||||
<OrganizationsPageQuery />
|
||||
<MembershipsPageQuery />
|
||||
</IAMRelayProvider>
|
||||
),
|
||||
},
|
||||
@@ -186,7 +186,7 @@ const routes = [
|
||||
path: "/organizations/:organizationId",
|
||||
Component: () => (
|
||||
<IAMRelayProvider>
|
||||
<OrganizationLayoutQuery />
|
||||
<MembershipLayoutQuery />
|
||||
</IAMRelayProvider>
|
||||
),
|
||||
ErrorBoundary: ErrorBoundary,
|
||||
|
||||
Reference in New Issue
Block a user