1
- import { JSONValue , ValidatorJSON , Value } from "convex/values" ;
1
+ import { ValidatorJSON , Value , convexToJson } from "convex/values" ;
2
2
import React , { useCallback , useState } from "react" ;
3
3
import {
4
4
FilterByIndex ,
@@ -103,7 +103,7 @@ export function IndexFilterEditor({
103
103
const regularFilter : FilterByIndex = {
104
104
type : "indexEq" ,
105
105
enabled : filter . enabled ,
106
- value : newValue ,
106
+ value : convexToJson ( newValue ) ,
107
107
} ;
108
108
onChange ( regularFilter , idx ) ;
109
109
}
@@ -167,7 +167,13 @@ export function IndexFilterEditor({
167
167
if ( filter . type !== "indexEq" ) {
168
168
throw new Error ( "Called handleValueChange for non-equals filter" ) ;
169
169
}
170
- onChange ( { ...filter , value } , idx ) ;
170
+ onChange (
171
+ {
172
+ ...filter ,
173
+ value : value === undefined ? undefined : convexToJson ( value ) ,
174
+ } ,
175
+ idx ,
176
+ ) ;
171
177
} ,
172
178
[ filter , idx , onChange ] ,
173
179
) ;
@@ -238,23 +244,23 @@ export function IndexFilterEditor({
238
244
const handleLowerValueChange = useCallback (
239
245
( value ?: Value ) => {
240
246
if ( "lowerValue" in filter ) {
241
- // Convert Value to JSONValue to ensure compatibility
242
- const jsonValue : JSONValue | undefined =
243
- value === undefined
244
- ? null
245
- : typeof value === "bigint"
246
- ? Number ( value )
247
- : ( value as JSONValue ) ;
248
- onChange ( { ...filter , lowerValue : jsonValue } , idx ) ;
247
+ onChange (
248
+ {
249
+ ...filter ,
250
+ lowerValue : value === undefined ? undefined : convexToJson ( value ) ,
251
+ } ,
252
+ idx ,
253
+ ) ;
249
254
250
255
// Check if lowerValue is greater than upperValue
251
256
if (
252
257
filter . type === "indexRange" &&
253
- jsonValue !== null &&
258
+ value !== null &&
259
+ value !== undefined &&
254
260
filter . upperValue !== null &&
255
261
filter . upperValue !== undefined &&
256
- typeof jsonValue === typeof filter . upperValue &&
257
- jsonValue > filter . upperValue
262
+ typeof value === typeof filter . upperValue &&
263
+ value > filter . upperValue
258
264
) {
259
265
onError ( idx , [ RANGE_ERROR_MESSAGE ] ) ;
260
266
}
@@ -266,23 +272,23 @@ export function IndexFilterEditor({
266
272
const handleUpperValueChange = useCallback (
267
273
( value ?: Value ) => {
268
274
if ( "upperValue" in filter ) {
269
- // Convert Value to JSONValue to ensure compatibility
270
- const jsonValue : JSONValue | undefined =
271
- value === undefined
272
- ? null
273
- : typeof value === "bigint"
274
- ? Number ( value )
275
- : ( value as JSONValue ) ;
276
- onChange ( { ...filter , upperValue : jsonValue } , idx ) ;
275
+ onChange (
276
+ {
277
+ ...filter ,
278
+ upperValue : value === undefined ? undefined : convexToJson ( value ) ,
279
+ } ,
280
+ idx ,
281
+ ) ;
277
282
278
283
// Check if upperValue is less than lowerValue
279
284
if (
280
285
filter . type === "indexRange" &&
281
- jsonValue !== null &&
286
+ value !== null &&
287
+ value !== undefined &&
282
288
filter . lowerValue !== null &&
283
289
filter . lowerValue !== undefined &&
284
- typeof jsonValue === typeof filter . lowerValue &&
285
- jsonValue < filter . lowerValue
290
+ typeof value === typeof filter . lowerValue &&
291
+ value < filter . lowerValue
286
292
) {
287
293
onError ( idx , [ RANGE_ERROR_MESSAGE ] ) ;
288
294
}
0 commit comments