Skip to content

Commit 5c9cbb1

Browse files
committed
Fixed migration
1 parent 33c3c4a commit 5c9cbb1

12 files changed

Lines changed: 142 additions & 35 deletions

File tree

apps/web/.migrations/02-06-25_10-21-unset-paddings-page.js

Lines changed: 110 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/**
2-
* Run the following script OR use the following MongoDB command:
3-
* db.pages.updateMany({}, { $unset: { "layout.$[].settings.horizontalPadding": "", "layout.$[].settings.verticalPadding": "", "draftLayout.$[].settings.horizontalPadding": "", "draftLayout.$[].settings.verticalPadding": "" } })
4-
*/
51
import mongoose from "mongoose";
62
import { nanoid } from "nanoid";
73

@@ -74,22 +70,50 @@ PageSchema.index(
7470

7571
const Page = mongoose.model("Page", PageSchema);
7672

77-
const unsetPaddings = async (page) => {
78-
console.log(`Unsetting paddings for domain: ${page.domain}`);
73+
const DomainSchema = new mongoose.Schema(
74+
{
75+
name: { type: String, required: true, unique: true },
76+
sharedWidgets: {
77+
type: mongoose.Schema.Types.Mixed,
78+
default: {},
79+
},
80+
draftSharedWidgets: {
81+
type: mongoose.Schema.Types.Mixed,
82+
default: {},
83+
},
84+
},
85+
{
86+
timestamps: true,
87+
},
88+
);
89+
const Domain = mongoose.model("Domain", DomainSchema);
90+
91+
const unsetPaddingsOnPage = async (page, domain) => {
92+
console.log(`Migrating ${page.pageId} of ${page.domain}`);
7993

80-
// Update layout widgets
8194
if (page.layout && page.layout.length > 0) {
8295
page.layout.forEach((widget) => {
96+
if (widget.name === "newsletter-signup") {
97+
widget.shared = false;
98+
widget.settings =
99+
domain.sharedWidgets["newsletter-signup"]?.settings;
100+
}
101+
83102
if (widget.settings) {
84103
delete widget.settings.horizontalPadding;
85104
delete widget.settings.verticalPadding;
86105
}
87106
});
88107
}
89108

90-
// Update draftLayout widgets
91109
if (page.draftLayout && page.draftLayout.length > 0) {
92110
page.draftLayout.forEach((widget) => {
111+
if (widget.name === "newsletter-signup") {
112+
widget.shared = false;
113+
widget.settings =
114+
domain.draftSharedWidgets["newsletter-signup"]?.settings;
115+
}
116+
93117
if (widget.settings) {
94118
delete widget.settings.horizontalPadding;
95119
delete widget.settings.verticalPadding;
@@ -100,22 +124,95 @@ const unsetPaddings = async (page) => {
100124
page.markModified("layout");
101125
page.markModified("draftLayout");
102126
await page.save();
103-
console.log(`Updated paddings for domain: ${page.domain}\n`);
127+
console.log(`Migrated ${page.pageId} of ${page.domain}\n`);
104128
};
105129

106-
const migratePaddings = async () => {
130+
const migratePages = async () => {
107131
const pages = await Page.find({});
108132
for (const page of pages) {
109133
try {
110-
await unsetPaddings(page);
134+
const domain = await Domain.findOne({ _id: page.domain });
135+
await unsetPaddingsOnPage(page, domain);
136+
} catch (error) {
137+
console.error(`Error migrating ${page.pageId} of ${page.domain}`);
138+
console.error(error);
139+
}
140+
}
141+
};
142+
143+
const unsetPaddingOnSharedWidgets = async (domain) => {
144+
console.log(`Migrating shared widgets for domain: ${domain.name}`);
145+
if (Object.keys(domain.sharedWidgets).length > 0) {
146+
for (const widget of Object.values(domain.sharedWidgets)) {
147+
if (widget.settings) {
148+
delete widget.settings.horizontalPadding;
149+
delete widget.settings.verticalPadding;
150+
}
151+
}
152+
}
153+
154+
if (
155+
domain.draftSharedWidgets &&
156+
Object.keys(domain.draftSharedWidgets).length > 0
157+
) {
158+
for (const widget of Object.values(domain.draftSharedWidgets)) {
159+
if (widget.settings) {
160+
delete widget.settings.horizontalPadding;
161+
delete widget.settings.verticalPadding;
162+
}
163+
}
164+
}
165+
166+
domain.markModified("sharedWidgets");
167+
domain.markModified("draftSharedWidgets");
168+
await domain.save();
169+
console.log(`Migrated shared widgets for domain: ${domain.name}\n`);
170+
};
171+
172+
const removeNewsLetterSignupFromSharedWidgets = async (domain) => {
173+
console.log(
174+
`Migrating news letter signup from shared widgets for domain: ${domain.name}`,
175+
);
176+
if (domain.sharedWidgets && Object.keys(domain.sharedWidgets).length > 0) {
177+
for (const widget of Object.values(domain.sharedWidgets)) {
178+
if (widget.name === "newsletter-signup") {
179+
delete domain.sharedWidgets[widget.name];
180+
}
181+
}
182+
}
183+
if (
184+
domain.draftSharedWidgets &&
185+
Object.keys(domain.draftSharedWidgets).length > 0
186+
) {
187+
for (const widget of Object.values(domain.draftSharedWidgets)) {
188+
if (widget.name === "newsletter-signup") {
189+
delete domain.draftSharedWidgets[widget.name];
190+
}
191+
}
192+
}
193+
domain.markModified("sharedWidgets");
194+
domain.markModified("draftSharedWidgets");
195+
await domain.save();
196+
console.log(`Migrated news letter signup for domain: ${domain.name}\n`);
197+
};
198+
199+
const migrateSharedWidgets = async () => {
200+
const domains = await Domain.find({});
201+
for (const domain of domains) {
202+
try {
203+
await unsetPaddingOnSharedWidgets(domain);
204+
await removeNewsLetterSignupFromSharedWidgets(domain);
111205
} catch (error) {
112-
console.error(`Error updating paddings for domain: ${page.domain}`);
206+
console.error(
207+
`Error updating shared widgets for domain: ${domain.name}`,
208+
);
113209
console.error(error);
114210
}
115211
}
116212
};
117213

118214
(async () => {
119-
await migratePaddings();
215+
await migratePages();
216+
await migrateSharedWidgets();
120217
mongoose.connection.close();
121218
})();

apps/web/components/community/info.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ export function CommunityInfo({
118118
className="w-full aspect-video object-cover rounded-lg"
119119
/>
120120
<div className="space-y-2">
121-
<p className="text-sm text-muted-foreground">
121+
<div className="text-sm text-muted-foreground">
122122
{description && <TextRenderer json={description} />}
123-
</p>
123+
</div>
124124
<p className="text-sm">
125125
<strong>{memberCount.toLocaleString()}</strong> members
126126
</p>

apps/web/graphql/pages/helpers.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ export async function copySharedWidgetsToDomain(
247247
domain: GQLContext["subdomain"],
248248
) {
249249
for (let widget of layout) {
250-
if (widget.shared && widget.widgetId) {
250+
if (widget.widgetId && isSharedWidget(widget)) {
251251
domain.draftSharedWidgets[widget.name] = Object.assign(
252252
{},
253253
domain.draftSharedWidgets[widget.name],
@@ -260,3 +260,7 @@ export async function copySharedWidgetsToDomain(
260260
await (domain as any).save();
261261
return layout;
262262
}
263+
264+
function isSharedWidget(widget: any) {
265+
return ["header", "footer"].includes(widget.name);
266+
}

packages/page-blocks/src/blocks/banner/widget.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,10 @@ export default function Widget({
245245
: "text-left"
246246
}`}
247247
>
248-
<Subheader1 theme={overiddenTheme}>
248+
<Subheader1
249+
theme={overiddenTheme}
250+
component="span"
251+
>
249252
<TextRenderer json={finalDescription} />
250253
</Subheader1>
251254
</div>

packages/page-blocks/src/blocks/content/widget.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export default function Widget({
167167
: "text-left"
168168
}`}
169169
>
170-
<Subheader1 theme={overiddenTheme}>
170+
<Subheader1 theme={overiddenTheme} component="span">
171171
<TextRenderer json={description} />
172172
</Subheader1>
173173
</div>

packages/page-blocks/src/blocks/faq/widget.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export default function Widget({
5656
: "text-left"
5757
}`}
5858
>
59-
<Subheader1 theme={overiddenTheme}>
59+
<Subheader1 theme={overiddenTheme} component="span">
6060
<TextRenderer json={description} />
6161
</Subheader1>
6262
</div>

packages/page-blocks/src/blocks/featured/widget.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export default function Widget({
114114
{title}
115115
</Header1>
116116
{description && (
117-
<Subheader1 theme={overiddenTheme}>
117+
<Subheader1 theme={overiddenTheme} component="span">
118118
<TextRenderer json={description} />
119119
</Subheader1>
120120
)}

packages/page-blocks/src/blocks/grid/widget/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export default function Widget({
6060
: "text-left"
6161
}`}
6262
>
63-
<Subheader1 theme={overiddenTheme}>
63+
<Subheader1 theme={overiddenTheme} component="span">
6464
<TextRenderer json={description} />
6565
</Subheader1>
6666
</div>

packages/page-blocks/src/blocks/grid/widget/item.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export default function Itemm({
7676
: "text-left"
7777
}`}
7878
>
79-
<Text1 theme={theme}>
79+
<Text1 theme={theme} component="span">
8080
<TextRenderer json={description} />
8181
</Text1>
8282
</div>

packages/page-blocks/src/blocks/hero/widget.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,10 @@ export default function Widget({
172172
: "mb-0",
173173
)}
174174
>
175-
<Subheader1 theme={overiddenTheme}>
175+
<Subheader1
176+
theme={overiddenTheme}
177+
component="span"
178+
>
176179
<TextRenderer json={description} />
177180
</Subheader1>
178181
</div>

0 commit comments

Comments
 (0)