From df3ff3b353910fbae01bd4f79bd731a52fda1f84 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 28 May 2025 15:54:06 +0200 Subject: [PATCH] update contribution link, add page and anchor, refactor, show message in email, update tests --- .../sendEmailVariants.test.ts.snap | 18 +-- backend/src/emails/sendEmailVariants.test.ts | 26 ++-- backend/src/emails/sendEmailVariants.ts | 135 ++++++------------ .../addedContributionMessage/html.pug | 4 +- .../includes/contributionDetailsCTA.pug | 4 +- .../ContributionMessageResolver.test.ts | 2 + .../resolver/ContributionMessageResolver.ts | 6 + .../resolver/ContributionResolver.test.ts | 3 + .../graphql/resolver/ContributionResolver.ts | 22 ++- backend/src/graphql/resolver/const/const.ts | 2 + .../graphql/resolver/util/contributions.ts | 21 ++- backend/src/locales/de.json | 2 +- backend/src/locales/en.json | 2 +- 13 files changed, 127 insertions(+), 120 deletions(-) diff --git a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap index 37263e937..60e08b1b8 100644 --- a/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap +++ b/backend/src/emails/__snapshots__/sendEmailVariants.test.ts.snap @@ -496,7 +496,7 @@ exports[`sendEmailVariants sendAddedContributionMessageEmail result has the corr

Read and reply to message

-
To view and reply to the message, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account +
„My message.“ To reply to the message, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account
Please do not reply to this email.
@@ -667,8 +667,8 @@ exports[`sendEmailVariants sendContributionChangedByModeratorEmail result has th

Contribution details

-
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account -
Or copy the link into your browser window.
http://localhost/community/contributions +
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account +
Or copy the link into your browser window.
https://gradido.net/contributions/own-contributions/1#contributionListItem-1
Please do not reply to this email.
@@ -839,8 +839,8 @@ exports[`sendEmailVariants sendContributionConfirmedEmail result has the correct

Contribution details

-
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account -
Or copy the link into your browser window.
http://localhost/community/contributions +
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account +
Or copy the link into your browser window.
https://gradido.net/contributions/own-contributions/1#contributionListItem-1
Please do not reply to this email.
@@ -1011,8 +1011,8 @@ exports[`sendEmailVariants sendContributionDeletedEmail result has the correct h

Contribution details

-
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account -
Or copy the link into your browser window.
http://localhost/community/contributions +
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account +
Or copy the link into your browser window.
https://gradido.net/contributions/own-contributions/1#contributionListItem-1
Please do not reply to this email.
@@ -1183,8 +1183,8 @@ exports[`sendEmailVariants sendContributionDeniedEmail result has the correct ht

Contribution details

-
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account -
Or copy the link into your browser window.
http://localhost/community/contributions +
To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab.
To account +
Or copy the link into your browser window.
https://gradido.net/contributions/own-contributions/1#contributionListItem-1
Please do not reply to this email.
diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts index 1afa49eeb..07a26e3f7 100644 --- a/backend/src/emails/sendEmailVariants.test.ts +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -65,6 +65,8 @@ const sendEmailTranslatedSpy = jest.spyOn(sendEmailTranslatedApi, 'sendEmailTran describe('sendEmailVariants', () => { let result: any + const contributionFrontendLink = + 'https://gradido.net/contributions/own-contributions/1#contributionListItem-1' describe('sendAddedContributionMessageEmail', () => { beforeAll(async () => { @@ -76,6 +78,8 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', + contributionFrontendLink, + message: 'My message.', }) }) @@ -93,9 +97,9 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, + contributionFrontendLink, + message: 'My message.', supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) }) @@ -234,6 +238,7 @@ describe('sendEmailVariants', () => { senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', contributionAmount: new Decimal(23.54), + contributionFrontendLink, }) }) @@ -252,9 +257,8 @@ describe('sendEmailVariants', () => { senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', contributionAmount: '23.54', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, + contributionFrontendLink, }, }) }) @@ -291,6 +295,7 @@ describe('sendEmailVariants', () => { senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', contributionMemoUpdated: 'This is a better contribution memo.', + contributionFrontendLink, }) }) @@ -309,9 +314,8 @@ describe('sendEmailVariants', () => { senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', contributionMemoUpdated: 'This is a better contribution memo.', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, + contributionFrontendLink, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) }) @@ -347,6 +351,7 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', + contributionFrontendLink, }) }) @@ -364,9 +369,8 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, + contributionFrontendLink, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) }) @@ -402,6 +406,7 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', + contributionFrontendLink, }) }) @@ -419,9 +424,8 @@ describe('sendEmailVariants', () => { senderFirstName: 'Bibi', senderLastName: 'Bloxberg', contributionMemo: 'My contribution.', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, + contributionFrontendLink, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) }) @@ -531,7 +535,6 @@ describe('sendEmailVariants', () => { senderEmail: 'bibi@bloxberg.de', transactionMemo: 'You deserve it! 🙏🏼', transactionAmount: '17.65', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, communityURL: CONFIG.COMMUNITY_URL, }, @@ -590,7 +593,6 @@ describe('sendEmailVariants', () => { senderLastName: 'Bloxberg', senderEmail: 'bibi@bloxberg.de', transactionAmount: '37.40', - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, communityURL: CONFIG.COMMUNITY_URL, }, diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index 3373f17ad..642f87387 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -5,7 +5,7 @@ import { decimalSeparatorByLanguage } from '@/util/utilities' import { sendEmailTranslated } from './sendEmailTranslated' -export const sendAddedContributionMessageEmail = (data: { +export interface ContributionEmailCommonData { firstName: string lastName: string email: string @@ -13,22 +13,35 @@ export const sendAddedContributionMessageEmail = (data: { senderFirstName: string senderLastName: string contributionMemo: string -}): Promise | boolean | null> => { + contributionFrontendLink: string +} + +function toContributionEmailLocales(data: ContributionEmailCommonData): Record { + return { + firstName: data.firstName, + lastName: data.lastName, + locale: data.language, + senderFirstName: data.senderFirstName, + senderLastName: data.senderLastName, + contributionMemo: data.contributionMemo, + contributionFrontendLink: data.contributionFrontendLink, + supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, + } +} + +export const sendAddedContributionMessageEmail = ( + data: ContributionEmailCommonData & { + message: string + }, +): Promise | boolean | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>`, }, template: 'addedContributionMessage', locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - senderFirstName: data.senderFirstName, - senderLastName: data.senderLastName, - contributionMemo: data.contributionMemo, - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, - supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, + ...toContributionEmailLocales(data), + message: data.message, }, }) } @@ -79,111 +92,53 @@ export const sendAccountMultiRegistrationEmail = (data: { }) } -export const sendContributionConfirmedEmail = (data: { - firstName: string - lastName: string - email: string - language: string - senderFirstName: string - senderLastName: string - contributionMemo: string - contributionAmount: Decimal -}): Promise | boolean | null> => { +export const sendContributionConfirmedEmail = ( + data: ContributionEmailCommonData & { + contributionAmount: Decimal + }, +): Promise | boolean | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, template: 'contributionConfirmed', locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - senderFirstName: data.senderFirstName, - senderLastName: data.senderLastName, - contributionMemo: data.contributionMemo, + ...toContributionEmailLocales(data), contributionAmount: decimalSeparatorByLanguage(data.contributionAmount, data.language), - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, - supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) } -export const sendContributionChangedByModeratorEmail = (data: { - firstName: string - lastName: string - email: string - language: string - senderFirstName: string - senderLastName: string - contributionMemo: string - contributionMemoUpdated: string -}): Promise | boolean | null> => { +export const sendContributionChangedByModeratorEmail = ( + data: ContributionEmailCommonData & { + contributionMemoUpdated: string + }, +): Promise | boolean | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, template: 'contributionChangedByModerator', locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - senderFirstName: data.senderFirstName, - senderLastName: data.senderLastName, - contributionMemo: data.contributionMemo, + ...toContributionEmailLocales(data), contributionMemoUpdated: data.contributionMemoUpdated, - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, - supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, }, }) } -export const sendContributionDeletedEmail = (data: { - firstName: string - lastName: string - email: string - language: string - senderFirstName: string - senderLastName: string - contributionMemo: string -}): Promise | boolean | null> => { +export const sendContributionDeletedEmail = ( + data: ContributionEmailCommonData, +): Promise | boolean | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, template: 'contributionDeleted', - locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - senderFirstName: data.senderFirstName, - senderLastName: data.senderLastName, - contributionMemo: data.contributionMemo, - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, - supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, - }, + locals: toContributionEmailLocales(data), }) } -export const sendContributionDeniedEmail = (data: { - firstName: string - lastName: string - email: string - language: string - senderFirstName: string - senderLastName: string - contributionMemo: string -}): Promise | boolean | null> => { +export const sendContributionDeniedEmail = ( + data: ContributionEmailCommonData, +): Promise | boolean | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, template: 'contributionDenied', - locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - senderFirstName: data.senderFirstName, - senderLastName: data.senderLastName, - contributionMemo: data.contributionMemo, - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, - supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, - communityURL: CONFIG.COMMUNITY_URL, - }, + locals: toContributionEmailLocales(data), }) } @@ -234,7 +189,6 @@ export const sendTransactionLinkRedeemedEmail = (data: { senderEmail: data.senderEmail, transactionMemo: data.transactionMemo, transactionAmount: decimalSeparatorByLanguage(data.transactionAmount, data.language), - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, communityURL: CONFIG.COMMUNITY_URL, }, @@ -264,7 +218,6 @@ export const sendTransactionReceivedEmail = (data: { senderLastName: data.senderLastName, senderEmail: data.senderEmail, transactionAmount: decimalSeparatorByLanguage(data.transactionAmount, data.language), - overviewURL: CONFIG.EMAIL_LINK_OVERVIEW, supportEmail: CONFIG.COMMUNITY_SUPPORT_MAIL, communityURL: CONFIG.COMMUNITY_URL, }, diff --git a/backend/src/emails/templates/addedContributionMessage/html.pug b/backend/src/emails/templates/addedContributionMessage/html.pug index ff7c89c30..5d2fd8da1 100644 --- a/backend/src/emails/templates/addedContributionMessage/html.pug +++ b/backend/src/emails/templates/addedContributionMessage/html.pug @@ -7,8 +7,8 @@ block content p= t('emails.addedContributionMessage.commonGoodContributionMessage', { senderFirstName, senderLastName, contributionMemo }) .content h2= t('emails.addedContributionMessage.readMessage') - div(class="p_content")= t('emails.addedContributionMessage.toSeeAndAnswerMessage') + div(class="p_content")= t('emails.addedContributionMessage.toSeeAndAnswerMessage', { message }) - a.button-3(href=`${communityURL}/community/contributions`) #{t('emails.general.toAccount')} + a.button-3(href=`${contributionFrontendLink}`) #{t('emails.general.toAccount')} include ../includes/doNotReply.pug diff --git a/backend/src/emails/templates/includes/contributionDetailsCTA.pug b/backend/src/emails/templates/includes/contributionDetailsCTA.pug index 0a3bd395d..ae3b77e6a 100644 --- a/backend/src/emails/templates/includes/contributionDetailsCTA.pug +++ b/backend/src/emails/templates/includes/contributionDetailsCTA.pug @@ -1,7 +1,7 @@ //- h2= t('emails.general.contributionDetails') div(class="p_content")= t('emails.contribution.toSeeContributionsAndMessages') -a.button-3(href=`${communityURL}/community/contributions`) #{t('emails.general.toAccount')} +a.button-3(href=`${contributionFrontendLink}`) #{t('emails.general.toAccount')} div(class="p_content")= t('emails.general.orCopyLink') -a.clink(href=`${communityURL}/community/contributions`) #{`${communityURL}/community/contributions`} \ No newline at end of file +a.clink(href=`${contributionFrontendLink}`) #{`${contributionFrontendLink}`} \ No newline at end of file diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts index f43639101..492df6a08 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts @@ -244,9 +244,11 @@ describe('ContributionMessageResolver', () => { lastName: 'Bloxberg', email: 'bibi@bloxberg.de', language: 'de', + message: 'Admin Test', senderFirstName: 'Peter', senderLastName: 'Lustig', contributionMemo: 'Test env contribution', + contributionFrontendLink: `http://localhost/contributions/own-contributions/1#contributionListItem-${result.data.createContribution.id}`, }) }) diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index a1701f048..47252d743 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -23,6 +23,7 @@ import { LogError } from '@/server/LogError' import { Context, getUser } from '@/server/context' import { backendLogger as logger } from '@/server/logger' +import { contributionFrontendLink } from './util/contributions' import { findContributionMessages } from './util/findContributionMessages' @Resolver() @@ -179,6 +180,11 @@ export class ContributionMessageResolver { senderFirstName: moderator.firstName, senderLastName: moderator.lastName, contributionMemo: finalContribution.memo, + contributionFrontendLink: await contributionFrontendLink( + finalContribution.id, + finalContribution.createdAt, + ), + message: finalContributionMessage.message, }) } diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index b9dd50560..d795ab9f8 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -877,6 +877,7 @@ describe('ContributionResolver', () => { senderFirstName: 'Peter', senderLastName: 'Lustig', contributionMemo: 'Test contribution to deny', + contributionFrontendLink: `http://localhost/contributions/own-contributions/1#contributionListItem-${contributionToDeny.data.createContribution.id}`, }) }) }) @@ -1954,6 +1955,7 @@ describe('ContributionResolver', () => { senderFirstName: 'Peter', senderLastName: 'Lustig', contributionMemo: 'Das war leider zu Viel!', + contributionFrontendLink: `http://localhost/contributions/own-contributions/1#contributionListItem-${creation?.id}`, }) }) }) @@ -2120,6 +2122,7 @@ describe('ContributionResolver', () => { senderLastName: 'Lustig', contributionMemo: 'Herzlich Willkommen bei Gradido liebe Bibi!', contributionAmount: expect.decimalEqual(450), + contributionFrontendLink: `http://localhost/contributions/own-contributions/1#contributionListItem-${creation?.id}`, }) }) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 319678157..a34c8ffd4 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -50,7 +50,11 @@ import { fullName } from '@/util/utilities' import { start } from 'repl' import { ContributionMessageType } from '../enum/ContributionMessageType' -import { loadAllContributions, loadUserContributions } from './util/contributions' +import { + contributionFrontendLink, + loadAllContributions, + loadUserContributions, +} from './util/contributions' import { getOpenCreations, getUserCreation, validateContribution } from './util/creations' import { extractGraphQLFields } from './util/extractGraphQLFields' import { findContributions } from './util/findContributions' @@ -317,6 +321,10 @@ export class ContributionResolver { senderLastName: moderator.lastName, contributionMemo: updateUnconfirmedContributionContext.getOldMemo(), contributionMemoUpdated: contribution.memo, + contributionFrontendLink: await contributionFrontendLink( + contribution.id, + contribution.createdAt, + ), }) } @@ -403,6 +411,10 @@ export class ContributionResolver { senderFirstName: moderator.firstName, senderLastName: moderator.lastName, contributionMemo: contribution.memo, + contributionFrontendLink: await contributionFrontendLink( + contribution.id, + contribution.createdAt, + ), }) return !!res @@ -510,6 +522,10 @@ export class ContributionResolver { senderLastName: moderatorUser.lastName, contributionMemo: contribution.memo, contributionAmount: contribution.amount, + contributionFrontendLink: await contributionFrontendLink( + contribution.id, + contribution.createdAt, + ), }) } catch (e) { await queryRunner.rollbackTransaction() @@ -593,6 +609,10 @@ export class ContributionResolver { senderFirstName: moderator.firstName, senderLastName: moderator.lastName, contributionMemo: contributionToUpdate.memo, + contributionFrontendLink: await contributionFrontendLink( + contributionToUpdate.id, + contributionToUpdate.createdAt, + ), }) return !!res diff --git a/backend/src/graphql/resolver/const/const.ts b/backend/src/graphql/resolver/const/const.ts index b97694221..2d4532cf5 100644 --- a/backend/src/graphql/resolver/const/const.ts +++ b/backend/src/graphql/resolver/const/const.ts @@ -10,3 +10,5 @@ export const CONTRIBUTIONLINK_NAME_MAX_CHARS = 100 export const CONTRIBUTIONLINK_NAME_MIN_CHARS = 5 export const MEMO_MAX_CHARS = 255 export const MEMO_MIN_CHARS = 5 +export const DEFAULT_PAGINATION_PAGE_SIZE = 25 +export const FRONTEND_CONTRIBUTIONS_ITEM_ANCHOR_PREFIX = 'contributionListItem-' diff --git a/backend/src/graphql/resolver/util/contributions.ts b/backend/src/graphql/resolver/util/contributions.ts index 58e0914ba..6c68d81ac 100644 --- a/backend/src/graphql/resolver/util/contributions.ts +++ b/backend/src/graphql/resolver/util/contributions.ts @@ -1,7 +1,12 @@ +import { CONFIG } from '@/config' import { Order } from '@/graphql/enum/Order' +import { + DEFAULT_PAGINATION_PAGE_SIZE, + FRONTEND_CONTRIBUTIONS_ITEM_ANCHOR_PREFIX, +} from '@/graphql/resolver/const/const' import { Paginated } from '@arg/Paginated' import { Contribution as DbContribution } from 'database' -import { FindManyOptions, In } from 'typeorm' +import { FindManyOptions, In, MoreThan } from 'typeorm' // TODO: combine with Pagination class for all queries to use function buildPaginationOptions(paginated: Paginated): FindManyOptions { @@ -91,3 +96,17 @@ export const loadAllContributions = async ( }) */ } + +export const contributionFrontendLink = async ( + contributionId: number, + createdAt: Date, +): Promise => { + // simplified, don't account for order by id, so when the nearly impossible case occur that createdAt is the same for two contributions, + // maybe it is the wrong page + const countBefore = await DbContribution.count({ + where: { createdAt: MoreThan(createdAt) }, + }) + const page = Math.floor(countBefore / DEFAULT_PAGINATION_PAGE_SIZE) + 1 + const anchor = `${FRONTEND_CONTRIBUTIONS_ITEM_ANCHOR_PREFIX}${contributionId}` + return `${CONFIG.COMMUNITY_URL}/contributions/own-contributions/${page}#${anchor}` +} diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index 8c0c8ff0c..bd46df77e 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -21,7 +21,7 @@ "readMessage": "Nachricht lesen und beantworten", "subject": "Nachricht zu deinem Gemeinwohl-Beitrag", "title": "Nachricht zu deinem Gemeinwohl-Beitrag", - "toSeeAndAnswerMessage": "Um die Nachricht zu sehen und darauf zu antworten, gehe in deinem Gradido-Konto ins Menü „Schöpfen“ auf den Tab „Meine Beiträge“." + "toSeeAndAnswerMessage": "„{message}“ Um auf die Nachricht zu antworten, gehe in deinem Gradido-Konto ins Menü „Schöpfen“ auf den Tab „Meine Beiträge“." }, "contribution": { "toSeeContributionsAndMessages": "Um deine Gemeinwohl-Beiträge und dazugehörige Nachrichten zu sehen, gehe in deinem Gradido-Konto ins Menü „Schöpfen“ auf den Tab „Meine Beiträge“." diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index 9b6b2a4cf..1c9f0f3ce 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -21,7 +21,7 @@ "readMessage": "Read and reply to message", "subject": "Message about your common good contribution", "title": "Message about your common good contribution", - "toSeeAndAnswerMessage": "To view and reply to the message, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab." + "toSeeAndAnswerMessage": "„{message}“ To reply to the message, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab." }, "contribution": { "toSeeContributionsAndMessages": "To see your common good contributions and related messages, go to the “Creation” menu in your Gradido account and click on the “My contributions” tab."