From e5f1e9f95e10a2d756d0078ce5f95ce440cfddf3 Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Sat, 23 May 2026 16:18:32 +0100 Subject: [PATCH] fix(activity): cadence-aware suffixes on contribution log entries --- app/utils/activityText.js | 22 ++++++++++++------- server/api/helcim/subscription.post.js | 4 ++-- .../api/members/update-contribution.post.js | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/utils/activityText.js b/app/utils/activityText.js index a2d9ac1..3f368cd 100644 --- a/app/utils/activityText.js +++ b/app/utils/activityText.js @@ -27,10 +27,13 @@ const formatters = { text: `Changed circle from ${circleLabel(m.from)} to ${circleLabel(m.to)}`, icon: 'i-lucide-refresh-cw' }), - contribution_changed: (m) => ({ - text: `Changed contribution from $${m.from}/mo to $${m.to}/mo`, - icon: 'i-lucide-coins' - }), + contribution_changed: (m) => { + const suffix = m.cadence === 'annual' ? '/yr' : '/mo' + return { + text: `Changed contribution from $${m.from}${suffix} to $${m.to}${suffix}`, + icon: 'i-lucide-coins' + } + }, email_changed: (m) => ({ text: `Changed email address`, icon: 'i-lucide-mail' @@ -41,10 +44,13 @@ const formatters = { : 'Updated profile', icon: 'i-lucide-user-pen' }), - subscription_created: (m) => ({ - text: m.amount != null ? `Started $${m.amount}/mo subscription` : 'Started subscription', - icon: 'i-lucide-credit-card' - }), + subscription_created: (m) => { + const suffix = m.cadence === 'annual' ? '/yr' : '/mo' + return { + text: m.amount != null ? `Started $${m.amount}${suffix} subscription` : 'Started subscription', + icon: 'i-lucide-credit-card' + } + }, subscription_cancelled: () => ({ text: 'Cancelled subscription', icon: 'i-lucide-credit-card' diff --git a/server/api/helcim/subscription.post.js b/server/api/helcim/subscription.post.js index 63d9b6c..b669b23 100644 --- a/server/api/helcim/subscription.post.js +++ b/server/api/helcim/subscription.post.js @@ -36,7 +36,7 @@ export default defineEventHandler(async (event) => { const isFirstActivation = preMember?.status === 'pending_payment' const member = await Member.findById(preMember._id) - logActivity(member._id, 'subscription_created', { amount: body.contributionAmount }) + logActivity(member._id, 'subscription_created', { amount: body.contributionAmount, cadence: body.cadence }) await autoFlagPreExistingSlackAccess(member) try { @@ -134,7 +134,7 @@ export default defineEventHandler(async (event) => { const isFirstActivation = preMember?.status === 'pending_payment' const member = await Member.findById(preMember._id) - logActivity(member._id, 'subscription_created', { amount: body.contributionAmount }) + logActivity(member._id, 'subscription_created', { amount: body.contributionAmount, cadence: body.cadence }) try { const txs = await listHelcimCustomerTransactions(body.customerCode) diff --git a/server/api/members/update-contribution.post.js b/server/api/members/update-contribution.post.js index bc2bf4c..79f4542 100644 --- a/server/api/members/update-contribution.post.js +++ b/server/api/members/update-contribution.post.js @@ -35,7 +35,7 @@ export default defineEventHandler(async (event) => { // Log contribution change (fire-and-forget, at the top so it logs regardless of which case path executes) const logContributionChange = () => { - logActivity(member._id, 'contribution_changed', { from: oldAmount, to: newAmount }) + logActivity(member._id, 'contribution_changed', { from: oldAmount, to: newAmount, cadence: body.cadence }) } const oldRequiresPayment = requiresPayment(oldAmount);