@@ -264,22 +264,37 @@ export function useFirestoreCollectionWithAtom<
264
264
// set the atom’s value to a function that updates a doc in the collection
265
265
if ( updateDocAtom ) {
266
266
setUpdateDocAtom (
267
- ( ) => async ( path : string , update : T , deleteFields ?: string [ ] ) => {
268
- const updateToDb = { ...update } ;
267
+ ( ) =>
268
+ async (
269
+ path : string ,
270
+ update : T ,
271
+ deleteFields ?: string [ ] ,
272
+ options ?: {
273
+ useSet ?: boolean ;
274
+ }
275
+ ) => {
276
+ const updateToDb = { ...update } ;
269
277
270
- if ( Array . isArray ( deleteFields ) ) {
271
- for ( const field of deleteFields ) {
272
- set ( updateToDb as any , field , deleteField ( ) ) ;
278
+ if ( Array . isArray ( deleteFields ) ) {
279
+ for ( const field of deleteFields ) {
280
+ set ( updateToDb as any , field , deleteField ( ) ) ;
281
+ }
282
+ }
283
+
284
+ if ( options ?. useSet ) {
285
+ return await setDoc ( doc ( firebaseDb , path ) , updateToDb , {
286
+ merge : true ,
287
+ } ) ;
288
+ }
289
+
290
+ try {
291
+ return await updateDoc ( doc ( firebaseDb , path ) , updateToDb ) ;
292
+ } catch ( e ) {
293
+ return await setDoc ( doc ( firebaseDb , path ) , updateToDb , {
294
+ merge : true ,
295
+ } ) ;
273
296
}
274
297
}
275
- try {
276
- return await updateDoc ( doc ( firebaseDb , path ) , updateToDb ) ;
277
- } catch ( e ) {
278
- return await setDoc ( doc ( firebaseDb , path ) , updateToDb , {
279
- merge : true ,
280
- } ) ;
281
- }
282
- }
283
298
) ;
284
299
}
285
300
@@ -443,6 +458,7 @@ export const tableFiltersToFirestoreFilters = (filters: TableFilter[]) => {
443
458
continue ;
444
459
} else if ( filter . operator === "is-not-empty" ) {
445
460
firestoreFilters . push ( where ( filter . key , "!=" , "" ) ) ;
461
+ continue ;
446
462
} else if ( filter . operator === "array-contains" ) {
447
463
if ( ! filter . value || ! filter . value . length ) continue ;
448
464
// make the value as a singular string
0 commit comments