diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index b7eb947a0..2d33b8e42 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -541,8 +541,10 @@ export class UserResolver { @Authorized([RIGHTS.UPDATE_USER_INFOS]) @Mutation(() => Boolean) async updateUserInfos( - @Args() - { + @Args() updateUserInfosArgs: UpdateUserInfosArgs, + @Ctx() context: Context, + ): Promise { + const { firstName, lastName, alias, @@ -555,14 +557,11 @@ export class UserResolver { gmsPublishName, gmsLocation, gmsPublishLocation, - }: UpdateUserInfosArgs, - @Ctx() context: Context, - ): Promise { + } = updateUserInfosArgs logger.info( `updateUserInfos(${firstName}, ${lastName}, ${alias}, ${language}, ***, ***, ${hideAmountGDD}, ${hideAmountGDT}, ${gmsAllowed}, ${gmsPublishName}, ${gmsLocation}, ${gmsPublishLocation})...`, ) const user = getUser(context) - const backupOriginalUser = user // try { if (firstName) { @@ -646,7 +645,7 @@ export class UserResolver { await EVENT_USER_INFO_UPDATE(user) // validate if user settings are changed with relevance to update gms-user - if (compareGmsRelevantUserSettings(user, backupOriginalUser)) { + if (compareGmsRelevantUserSettings(user, updateUserInfosArgs)) { logger.debug(`changed user-settings relevant for gms-user update...`) const homeCom = await getHomeCommunity() if (homeCom.gmsApiKey !== null) { diff --git a/backend/src/graphql/resolver/util/compareGmsRelevantUserSettings.ts b/backend/src/graphql/resolver/util/compareGmsRelevantUserSettings.ts index 330086278..ac99aca29 100644 --- a/backend/src/graphql/resolver/util/compareGmsRelevantUserSettings.ts +++ b/backend/src/graphql/resolver/util/compareGmsRelevantUserSettings.ts @@ -1,43 +1,68 @@ import { Point } from '@dbTools/typeorm' import { User as DbUser } from '@entity/User' +import { UpdateUserInfosArgs } from '@/graphql/arg/UpdateUserInfosArgs' import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' import { Point2Location } from './Location2Point' -export function compareGmsRelevantUserSettings(orgUser: DbUser, changedUser: DbUser): boolean { - if (!orgUser && !changedUser) { +export function compareGmsRelevantUserSettings( + orgUser: DbUser, + updateUserInfosArgs: UpdateUserInfosArgs, +): boolean { + if (!orgUser) { throw new LogError('comparison without any user is impossible') } - logger.debug('compareGmsRelevantUserSettings:', orgUser, changedUser) - if (orgUser.alias !== changedUser.alias) { + logger.debug('compareGmsRelevantUserSettings:', orgUser, updateUserInfosArgs) + if (updateUserInfosArgs.alias && orgUser.alias !== updateUserInfosArgs.alias) { return true } - if (orgUser.firstName !== changedUser.firstName || orgUser.lastName !== changedUser.lastName) { + if ( + (updateUserInfosArgs.firstName && orgUser.firstName !== updateUserInfosArgs.firstName) || + (updateUserInfosArgs.lastName && orgUser.lastName !== updateUserInfosArgs.lastName) + ) { return true } - if (orgUser.gmsAllowed !== changedUser.gmsAllowed) { + if (updateUserInfosArgs.gmsAllowed && orgUser.gmsAllowed !== updateUserInfosArgs.gmsAllowed) { return true } - if (orgUser.gmsPublishLocation !== changedUser.gmsPublishLocation) { + if ( + updateUserInfosArgs.gmsPublishLocation && + orgUser.gmsPublishLocation !== updateUserInfosArgs.gmsPublishLocation + ) { return true } - if (orgUser.gmsPublishName !== changedUser.gmsPublishName) { + if ( + updateUserInfosArgs.gmsPublishName && + orgUser.gmsPublishName !== updateUserInfosArgs.gmsPublishName + ) { return true } - if (orgUser.language !== changedUser.language) { + if (updateUserInfosArgs.language && orgUser.language !== updateUserInfosArgs.language) { return true } - if (orgUser.location === null && changedUser.location !== null) { + if ( + updateUserInfosArgs.gmsLocation && + orgUser.location === null && + updateUserInfosArgs.gmsLocation !== null + ) { return true } - if (orgUser.location !== null && changedUser.location === null) { + if ( + updateUserInfosArgs.gmsLocation && + orgUser.location !== null && + updateUserInfosArgs.gmsLocation === null + ) { return true } - if (orgUser.location !== null && changedUser.location !== null) { + if ( + updateUserInfosArgs.gmsLocation && + orgUser.location !== null && + updateUserInfosArgs.gmsLocation !== null + ) { const orgLocation = Point2Location(orgUser.location as Point) - const changedLocation = Point2Location(changedUser.location as Point) + const changedLocation = updateUserInfosArgs.gmsLocation if ( orgLocation.latitude !== changedLocation.latitude || orgLocation.longitude !== changedLocation.longitude