mirror of
https://github.com/xavidop/cardex.git
synced 2026-09-04 09:13:28 +00:00
fix: crate or update user
This commit is contained in:
@@ -18,6 +18,7 @@ import { db, auth, storage } from './firebase'; // Main Firebase config
|
||||
import type { PokemonCard, ScannedCardData, UserProfile, UserApiKeys } from '@/types';
|
||||
import { uploadCardImageToStorage, uploadVideoToStorage } from '@/utils/storageUtils';
|
||||
import { ref, deleteObject } from 'firebase/storage';
|
||||
import { filterUndefinedValues } from './utils';
|
||||
import { generateCardVideo } from '@/ai/flows/generate-card-video';
|
||||
|
||||
const CARDS_COLLECTION = 'users'; // Top-level collection for users
|
||||
@@ -322,8 +323,12 @@ export const createOrUpdateUserProfile = async (userId: string, profileData: Par
|
||||
|
||||
try {
|
||||
const userRef = doc(db, 'users', userId);
|
||||
|
||||
// Filter out undefined values to prevent Firestore errors
|
||||
const filteredProfileData = filterUndefinedValues(profileData);
|
||||
|
||||
const updateData: any = {
|
||||
...profileData,
|
||||
...filteredProfileData,
|
||||
id: userId,
|
||||
updatedAt: serverTimestamp(),
|
||||
};
|
||||
|
||||
@@ -4,3 +4,17 @@ import { twMerge } from "tailwind-merge"
|
||||
export function cn(...inputs: ClassValue[]) {
|
||||
return twMerge(clsx(inputs))
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes undefined values from an object to prevent Firestore errors
|
||||
* @param obj The object to filter
|
||||
* @returns A new object with undefined values removed
|
||||
*/
|
||||
export function filterUndefinedValues<T extends Record<string, any>>(obj: T): Partial<T> {
|
||||
return Object.entries(obj).reduce((acc, [key, value]) => {
|
||||
if (value !== undefined) {
|
||||
acc[key as keyof T] = value;
|
||||
}
|
||||
return acc;
|
||||
}, {} as Partial<T>);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user