diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 993fe8c3b..574377dce 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -39,7 +39,8 @@ import { Decay } from '@model/Decay' import Paginated from '@arg/Paginated' import TransactionLinkFilters from '@arg/TransactionLinkFilters' import { Order } from '@enum/Order' -import { findUserByEmail, activationLink, getTimeDurationObject } from './UserResolver' +import { getTimeDurationObject } from '@/util/time' +import { findUserByEmail, activationLink } from './UserResolver' import { sendAddedContributionMessageEmail, sendAccountActivationEmail, diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index dac45c289..2be2361e9 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -3,6 +3,7 @@ import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers' import { logger, i18n as localization } from '@test/testSetup' +import { printTimeDuration } from '@/util/time' import { userFactory } from '@/seeds/factory/user' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { @@ -24,7 +25,7 @@ import { sendAccountMultiRegistrationEmail, } from '@/emails/sendEmailVariants' import { sendResetPasswordEmail } from '@/mailer/sendResetPasswordEmail' -import { printTimeDuration, activationLink } from './UserResolver' +import { activationLink } from './UserResolver' import { contributionLinkFactory } from '@/seeds/factory/contributionLink' import { transactionLinkFactory } from '@/seeds/factory/transactionLink' import { ContributionLink } from '@model/ContributionLink' diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index ddfa94eab..4ec4af166 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -9,6 +9,7 @@ import { User } from '@model/User' import { User as DbUser } from '@entity/User' import { UserContact as DbUserContact } from '@entity/UserContact' import { communityDbUser } from '@/util/communityUser' +import { getTimeDurationObject, printTimeDuration } from '@/util/time' import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' import { ContributionLink as dbContributionLink } from '@entity/ContributionLink' import { encode } from '@/auth/JWT' @@ -916,20 +917,3 @@ const canResendOptIn = (optIn: LoginEmailOptIn): boolean => { const canEmailResend = (updatedAt: Date): boolean => { return !isTimeExpired(updatedAt, CONFIG.EMAIL_CODE_REQUEST_TIME) } - -export const getTimeDurationObject = (time: number): { hours?: number; minutes: number } => { - if (time > 60) { - return { - hours: Math.floor(time / 60), - minutes: time % 60, - } - } - return { minutes: time } -} - -export const printTimeDuration = (duration: number): string => { - const time = getTimeDurationObject(duration) - const result = time.minutes > 0 ? `${time.minutes} minutes` : '' - if (time.hours) return `${time.hours} hours` + (result !== '' ? ` and ${result}` : '') - return result -} diff --git a/backend/src/util/time.ts b/backend/src/util/time.ts new file mode 100644 index 000000000..d429c8d6b --- /dev/null +++ b/backend/src/util/time.ts @@ -0,0 +1,16 @@ +export const getTimeDurationObject = (time: number): { hours?: number; minutes: number } => { + if (time > 60) { + return { + hours: Math.floor(time / 60), + minutes: time % 60, + } + } + return { minutes: time } +} + +export const printTimeDuration = (duration: number): string => { + const time = getTimeDurationObject(duration) + const result = time.minutes > 0 ? `${time.minutes} minutes` : '' + if (time.hours) return `${time.hours} hours` + (result !== '' ? ` and ${result}` : '') + return result +}