Skip to content

Commit f18a89a

Browse files
committed
Unsubscribe count, bug fixes
1 parent 23fc069 commit f18a89a

7 files changed

Lines changed: 24 additions & 13 deletions

File tree

RELEASE_NOTES.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
### ✨ Features
22

3-
- Placeholder text added for login/register forms.
3+
- Unsubscribe count per campaign
4+
- Vite start URL goes to dashboard
45
- New features and improvements.
56

67
### 🐛 Bug Fixes
78

8-
- PWA start url fixed.
9+
- Template preview bug fixes
910
- Various bug fixes and optimizations.
1011

1112
### 📚 Docs
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AlterTable
2+
ALTER TABLE "Campaign" ADD COLUMN "unsubscribedCount" INTEGER NOT NULL DEFAULT 0;

apps/backend/prisma/schema.prisma

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,11 @@ model Campaign {
110110
content String?
111111
completedAt DateTime?
112112
113-
status CampaignStatus @default(DRAFT)
114-
scheduledAt DateTime?
115-
htmlOnly Boolean @default(false)
116-
openTracking Boolean @default(true)
113+
status CampaignStatus @default(DRAFT)
114+
scheduledAt DateTime?
115+
htmlOnly Boolean @default(false)
116+
openTracking Boolean @default(true)
117+
unsubscribedCount Int @default(0)
117118
118119
organizationId String
119120
Organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)

apps/backend/src/subscriber/mutation.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,9 @@ export const publicUnsubscribe = publicProcedure
398398
})
399399

400400
if (!listSubscribers.length) {
401-
throw new TRPCError({
402-
code: "NOT_FOUND",
403-
message: "Subscriber not found",
404-
})
401+
return {
402+
success: true,
403+
}
405404
}
406405

407406
await prisma.listSubscriber.updateMany({
@@ -415,6 +414,13 @@ export const publicUnsubscribe = publicProcedure
415414
},
416415
})
417416

417+
await prisma.campaign
418+
.update({
419+
where: { id: input.cid },
420+
data: { unsubscribedCount: { increment: 1 } },
421+
})
422+
.catch(() => {})
423+
418424
return {
419425
success: true,
420426
}

apps/web/src/pages/dashboard/campaigns/[id]/campaign-actions.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ export const CampaignActions = () => {
8787
const content = form.watch("content") || ""
8888

8989
const finalContent = useMemo(() => {
90-
const template = campaignQuery.data?.campaign.Template?.content || ""
90+
const template =
91+
campaignQuery.data?.campaign.Template?.content || "{{content}}"
9192
const final = template.replace(/{{content}}/g, content)
9293
return final
9394
}, [campaignQuery.data?.campaign.Template?.content, content])

apps/web/vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default defineConfig({
1515
short_name: "LetterSpace",
1616
description: "Open source newsletter app",
1717
theme_color: "#ffffff",
18-
start_url: "/",
18+
start_url: "/dashboard",
1919
icons: [
2020
{
2121
src: "pwa-64x64.png",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.4.6",
2+
"version": "0.4.7",
33
"name": "letterspace",
44
"private": true,
55
"scripts": {

0 commit comments

Comments
 (0)