From f13e9ba10a912bb993edbd8a1e3af585302ed965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Mon, 5 Jan 2026 12:35:14 +0100 Subject: [PATCH] Put back sorting columns on invitation and members MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- ...tationListFragment_RefetchQuery.graphql.ts | 4 +-- ...MemberListFragment_RefetchQuery.graphql.ts | 4 +-- .../settings/_components/InvitationList.tsx | 23 +++++----------- .../settings/_components/MemberList.tsx | 19 +++++--------- go.mod | 2 +- pkg/server/api/connect/v1/schema.graphql | 12 +++++++++ pkg/server/api/connect/v1/schema/schema.go | 26 ++++++++++++++++--- pkg/server/api/connect/v1/v1_resolver.go | 6 +++++ 8 files changed, 57 insertions(+), 39 deletions(-) diff --git a/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/InvitationListFragment_RefetchQuery.graphql.ts index 2a2ca9684..4d307741b 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<<26a05edf635e281469d5498e24879e00>> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -10,7 +10,7 @@ import { ConcreteRequest } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; -export type InvitationOrderField = "ACCEPTED_AT" | "CREATED_AT" | "EMAIL" | "EXPIRES_AT" | "ROLE"; +export type InvitationOrderField = "ACCEPTED_AT" | "CREATED_AT" | "EMAIL" | "EXPIRES_AT" | "FULL_NAME" | "ROLE"; export type OrderDirection = "ASC" | "DESC"; export type InvitationOrder = { direction: OrderDirection; diff --git a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts index 186d3b6e1..af86f5512 100644 --- a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -10,7 +10,7 @@ import { ConcreteRequest } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; -export type MembershipOrderField = "CREATED_AT" | "ROLE"; +export type MembershipOrderField = "CREATED_AT" | "EMAIL_ADDRESS" | "FULL_NAME" | "ROLE"; export type OrderDirection = "ASC" | "DESC"; export type MembershipOrder = { direction: OrderDirection; diff --git a/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx b/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx index b50e9c293..b0032959b 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx +++ b/apps/console/src/pages/iam/organizations/settings/_components/InvitationList.tsx @@ -5,6 +5,7 @@ import { graphql, usePaginationFragment } from "react-relay"; import { InvitationListItem } from "./InvitationListItem"; import type { InvitationListFragment$key } from "/__generated__/iam/InvitationListFragment.graphql"; import type { InvitationListFragment_RefetchQuery } from "/__generated__/iam/InvitationListFragment_RefetchQuery.graphql"; +import type { ComponentProps } from "react"; const fragment = graphql` fragment InvitationListFragment on Organization @@ -57,23 +58,11 @@ export function InvitationList(props: { fKey: InvitationListFragment$key }) { return ( { - invitationsPagination.refetch({ - order: { - direction: order.direction as "ASC" | "DESC", - field: order.field as - | "CREATED_AT" - | "EXPIRES_AT" - // FIXME: put back - // | "FULL_NAME" - | "EMAIL" - | "ROLE" - // FIXME: put back - // | "STATUS" - | "ACCEPTED_AT", - }, - }); - }} + refetch={ + invitationsPagination.refetch as ComponentProps< + typeof SortableTable + >["refetch"] + } pageSize={20} > diff --git a/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx b/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx index 488a4efce..89a264dac 100644 --- a/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx +++ b/apps/console/src/pages/iam/organizations/settings/_components/MemberList.tsx @@ -5,6 +5,7 @@ import { SortableTable, SortableTh } from "/components/SortableTable"; import type { MemberListFragment_RefetchQuery } from "/__generated__/iam/MemberListFragment_RefetchQuery.graphql"; import { MemberListItem } from "./MemberListItem"; import type { MemberListFragment$key } from "/__generated__/iam/MemberListFragment.graphql"; +import type { ComponentProps } from "react"; const fragment = graphql` fragment MemberListFragment on Organization @@ -55,19 +56,11 @@ export function MemberList(props: { fKey: MemberListFragment$key }) { return ( { - membersPagination.refetch({ - order: { - direction: order.direction as "ASC" | "DESC", - field: order.field as - | "CREATED_AT" - // FIXME: add those back - // | "FULL_NAME" - // | "EMAIL_ADDRESS" - | "ROLE", - }, - }); - }} + refetch={ + membersPagination.refetch as ComponentProps< + typeof SortableTable + >["refetch"] + } pageSize={20} > diff --git a/go.mod b/go.mod index 7a08db231..f8ca43543 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/pdfcpu/pdfcpu v0.11.1 github.com/pires/go-proxyproto v0.8.1 github.com/prometheus/client_golang v1.23.2 + github.com/scim2/filter-parser/v2 v2.2.0 github.com/stretchr/testify v1.11.1 github.com/vektah/gqlparser/v2 v2.5.31 github.com/xuri/excelize/v2 v2.10.0 @@ -98,7 +99,6 @@ require ( github.com/richardlehane/mscfb v1.0.4 // indirect github.com/richardlehane/msoleps v1.0.4 // indirect github.com/russellhaering/goxmldsig v1.5.0 // indirect - github.com/scim2/filter-parser/v2 v2.2.0 // indirect github.com/sosodev/duration v1.3.1 // indirect github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.9 // indirect diff --git a/pkg/server/api/connect/v1/schema.graphql b/pkg/server/api/connect/v1/schema.graphql index 64f2dd114..87bee9136 100644 --- a/pkg/server/api/connect/v1/schema.graphql +++ b/pkg/server/api/connect/v1/schema.graphql @@ -414,6 +414,14 @@ enum ReauthenticationReason { enum MembershipOrderField @goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipOrderField") { + FULL_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldFullName" + ) + EMAIL_ADDRESS + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldEmailAddress" + ) ROLE @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldRole") CREATED_AT @@ -446,6 +454,10 @@ type MembershipEdge { enum InvitationOrderField @goModel(model: "go.probo.inc/probo/pkg/coredata.InvitationOrderField") { + FULL_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.InvitationOrderFieldFullName" + ) EMAIL @goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationOrderFieldEmail") ROLE diff --git a/pkg/server/api/connect/v1/schema/schema.go b/pkg/server/api/connect/v1/schema/schema.go index 1052df3c3..df9810508 100644 --- a/pkg/server/api/connect/v1/schema/schema.go +++ b/pkg/server/api/connect/v1/schema/schema.go @@ -2693,6 +2693,14 @@ enum ReauthenticationReason { enum MembershipOrderField @goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipOrderField") { + FULL_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldFullName" + ) + EMAIL_ADDRESS + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldEmailAddress" + ) ROLE @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldRole") CREATED_AT @@ -2725,6 +2733,10 @@ type MembershipEdge { enum InvitationOrderField @goModel(model: "go.probo.inc/probo/pkg/coredata.InvitationOrderField") { + FULL_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.InvitationOrderFieldFullName" + ) EMAIL @goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationOrderFieldEmail") ROLE @@ -19995,6 +20007,7 @@ func (ec *executionContext) marshalNInvitationOrderField2goᚗproboᚗincᚋprob var ( unmarshalNInvitationOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐInvitationOrderField = map[string]coredata.InvitationOrderField{ + "FULL_NAME": coredata.InvitationOrderFieldFullName, "EMAIL": coredata.InvitationOrderFieldEmail, "ROLE": coredata.InvitationOrderFieldRole, "CREATED_AT": coredata.InvitationOrderFieldCreatedAt, @@ -20002,6 +20015,7 @@ var ( "ACCEPTED_AT": coredata.InvitationOrderFieldAcceptedAt, } marshalNInvitationOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐInvitationOrderField = map[coredata.InvitationOrderField]string{ + coredata.InvitationOrderFieldFullName: "FULL_NAME", coredata.InvitationOrderFieldEmail: "EMAIL", coredata.InvitationOrderFieldRole: "ROLE", coredata.InvitationOrderFieldCreatedAt: "CREATED_AT", @@ -20128,12 +20142,16 @@ func (ec *executionContext) marshalNMembershipOrderField2goᚗproboᚗincᚋprob var ( unmarshalNMembershipOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐMembershipOrderField = map[string]coredata.MembershipOrderField{ - "ROLE": coredata.MembershipOrderFieldRole, - "CREATED_AT": coredata.MembershipOrderFieldCreatedAt, + "FULL_NAME": coredata.MembershipOrderFieldFullName, + "EMAIL_ADDRESS": coredata.MembershipOrderFieldEmailAddress, + "ROLE": coredata.MembershipOrderFieldRole, + "CREATED_AT": coredata.MembershipOrderFieldCreatedAt, } marshalNMembershipOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐMembershipOrderField = map[coredata.MembershipOrderField]string{ - coredata.MembershipOrderFieldRole: "ROLE", - coredata.MembershipOrderFieldCreatedAt: "CREATED_AT", + coredata.MembershipOrderFieldFullName: "FULL_NAME", + coredata.MembershipOrderFieldEmailAddress: "EMAIL_ADDRESS", + coredata.MembershipOrderFieldRole: "ROLE", + coredata.MembershipOrderFieldCreatedAt: "CREATED_AT", } ) diff --git a/pkg/server/api/connect/v1/v1_resolver.go b/pkg/server/api/connect/v1/v1_resolver.go index 835ee8ce1..9dfdc0954 100644 --- a/pkg/server/api/connect/v1/v1_resolver.go +++ b/pkg/server/api/connect/v1/v1_resolver.go @@ -1221,6 +1221,12 @@ func (r *organizationResolver) Invitations(ctx context.Context, obj *types.Organ Field: coredata.InvitationOrderFieldCreatedAt, Direction: page.OrderDirectionDesc, } + if orderBy != nil { + pageOrderBy = page.OrderBy[coredata.InvitationOrderField]{ + Field: orderBy.Field, + Direction: orderBy.Direction, + } + } filters := coredata.NewInvitationFilter(nil) if status != nil {