Support old relation filter value format (#9590)

Fix production bug caused by old relation filter value.

**Draft, not tested yet at all, working on it right now.**

---------

Co-authored-by: ad-elias <elias@autodiligence.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
eliasylonen
2025-01-13 21:45:39 +01:00
committed by GitHub
parent e893c4dcce
commit 21e2295ade
7 changed files with 37 additions and 12 deletions

View File

@ -12,7 +12,8 @@ import { onFilterSelectComponentState } from '@/object-record/object-filter-drop
import { useGetCurrentView } from '@/views/hooks/useGetCurrentView';
import { useUpsertCombinedViewFilters } from '@/views/hooks/useUpsertCombinedViewFilters';
import { availableFilterDefinitionsComponentState } from '@/views/states/availableFilterDefinitionsComponentState';
import { relationFilterValueSchema } from '@/views/view-filter-value/validation-schemas/relationFilterValueSchema';
import { jsonRelationFilterValueSchema } from '@/views/view-filter-value/validation-schemas/jsonRelationFilterValueSchema';
import { simpleRelationFilterValueSchema } from '@/views/view-filter-value/validation-schemas/simpleRelationFilterValueSchema';
import { isDefined } from '~/utils/isDefined';
type ViewBarFilterEffectProps = {
@ -82,10 +83,12 @@ export const ViewBarFilterEffect = ({
filterDefinitionUsedInDropdown?.fieldMetadataId,
);
const { selectedRecordIds } = relationFilterValueSchema
const { selectedRecordIds } = jsonRelationFilterValueSchema
.catch({
isCurrentWorkspaceMemberSelected: false,
selectedRecordIds: [],
selectedRecordIds: simpleRelationFilterValueSchema.parse(
viewFilterUsedInDropdown?.value,
),
})
.parse(viewFilterUsedInDropdown?.value);

View File

@ -16,7 +16,7 @@ import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { generateFindManyRecordsQuery } from '@/object-record/utils/generateFindManyRecordsQuery';
import { ViewFilter } from '@/views/types/ViewFilter';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { relationFilterValueSchemaObject } from '@/views/view-filter-value/validation-schemas/relationFilterValueSchema';
import { relationFilterValueSchemaObject } from '@/views/view-filter-value/validation-schemas/jsonRelationFilterValueSchema';
import { isDefined } from '~/utils/isDefined';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';

View File

@ -1,4 +1,4 @@
import { relationFilterValueSchema } from '@/views/view-filter-value/validation-schemas/relationFilterValueSchema';
import { jsonRelationFilterValueSchema } from '@/views/view-filter-value/validation-schemas/jsonRelationFilterValueSchema';
import { z } from 'zod';
export type RelationFilterValue = z.infer<typeof relationFilterValueSchema>;
export type RelationFilterValue = z.infer<typeof jsonRelationFilterValueSchema>;

View File

@ -5,7 +5,7 @@ export const relationFilterValueSchemaObject = z.object({
selectedRecordIds: z.array(z.string()),
});
export const relationFilterValueSchema = z
export const jsonRelationFilterValueSchema = z
.string()
.transform((value, ctx) => {
try {

View File

@ -0,0 +1,11 @@
import { z } from 'zod';
export const simpleRelationFilterValueSchema = z
.preprocess((value) => {
try {
return typeof value === 'string' ? JSON.parse(value) : [];
} catch {
return [];
}
}, z.array(z.string().uuid()))
.catch([]);