Put back sorting columns on invitation and members

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-01-05 12:35:14 +01:00
committed by Bryan Frimin
parent 07f2885371
commit f13e9ba10a
8 changed files with 57 additions and 39 deletions

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<26a05edf635e281469d5498e24879e00>>
* @generated SignedSource<<e8e0e8e378c0a308255a8e2f3918b758>>
* @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;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<d9ec1da794fdbe09fbffc7ed32d22707>>
* @generated SignedSource<<e01416ecd129c81e31f5da90bf797ff7>>
* @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;

View File

@@ -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 (
<SortableTable
{...invitationsPagination}
refetch={({ order }: { order: { direction: string; field: string } }) => {
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}
>
<Thead>

View File

@@ -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 (
<SortableTable
{...membersPagination}
refetch={({ order }: { order: { direction: string; field: string } }) => {
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}
>
<Thead>

2
go.mod
View File

@@ -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

View File

@@ -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

View File

@@ -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",
}
)

View File

@@ -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 {