mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-06 12:04:00 +09:00
fix: drop marketplace legacy fallbacks (#3452)
Fixes https://github.com/webstudio-is/webstudio/issues/3450 Got rid of ws:cetegory meta and excludePageFromSearch fallbacks in marketplace. Social image is the only fallback we agreed to left.
This commit is contained in:
1 parent
fde5e8a6f1
commit
a0eee5a30f
1 file changed
+21
-51
@@ -18,7 +18,7 @@ import {
|
||||
type WebstudioData,
|
||||
} from "@webstudio-is/sdk";
|
||||
import type { MarketplaceProduct } from "@webstudio-is/project-build";
|
||||
import { computeExpression } from "~/shared/nano-states";
|
||||
import { mapGroupBy } from "~/shared/shim";
|
||||
import { CollapsibleSection } from "~/builder/shared/collapsible-section";
|
||||
import { builderUrl } from "~/shared/router-utils";
|
||||
import {
|
||||
@@ -76,59 +76,29 @@ type TemplateData = {
|
||||
rootInstanceId: string;
|
||||
};
|
||||
|
||||
const getTemplatesDataByCategory = (data?: WebstudioData) => {
|
||||
const templatesByCategory = new Map<string, Array<TemplateData>>();
|
||||
|
||||
const getTemplatesDataByCategory = (
|
||||
data?: WebstudioData
|
||||
): Map<string, Array<TemplateData>> => {
|
||||
if (data === undefined) {
|
||||
return templatesByCategory;
|
||||
return new Map();
|
||||
}
|
||||
|
||||
const pages = [data.pages.homePage, ...data.pages.pages];
|
||||
|
||||
for (const page of pages) {
|
||||
// @todo remove after all stores are migrated
|
||||
const excludePageFromSearch =
|
||||
computeExpression(
|
||||
page.meta.excludePageFromSearch || "false",
|
||||
new Map()
|
||||
) ?? true;
|
||||
const include =
|
||||
page.marketplace?.include ?? false === excludePageFromSearch ?? false;
|
||||
// We allow user to hide the page in the marketplace.
|
||||
if (false === include) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const categoryMeta = page.meta.custom?.find(
|
||||
({ property }) => property === "ws:category"
|
||||
);
|
||||
// @todo remove after all stores are migrated
|
||||
const categoryFallback = String(
|
||||
computeExpression(categoryMeta?.content ?? `""`, new Map())
|
||||
);
|
||||
const category = page.marketplace?.category ?? categoryFallback ?? "Pages";
|
||||
|
||||
let templates = templatesByCategory.get(category);
|
||||
if (templates === undefined) {
|
||||
templates = [];
|
||||
templatesByCategory.set(category, templates);
|
||||
}
|
||||
|
||||
const socialImageAsset = page.meta.socialImageAssetId
|
||||
? data.assets.get(page.meta.socialImageAssetId)
|
||||
: undefined;
|
||||
const thumbnailImageAsset = page.marketplace?.thumbnailAssetId
|
||||
? data.assets.get(page.marketplace.thumbnailAssetId)
|
||||
: undefined;
|
||||
|
||||
templates.push({
|
||||
title: page.name,
|
||||
thumbnailAsset: thumbnailImageAsset ?? socialImageAsset,
|
||||
pageId: page.id,
|
||||
rootInstanceId: page.rootInstanceId,
|
||||
const pages = [data.pages.homePage, ...data.pages.pages]
|
||||
.filter((page) => page.marketplace?.include)
|
||||
.map((page) => {
|
||||
// category can be empty string
|
||||
const category = page.marketplace?.category || "Pages";
|
||||
const thumbnailAsset =
|
||||
data.assets.get(page.marketplace?.thumbnailAssetId ?? "") ??
|
||||
data.assets.get(page.meta.socialImageAssetId ?? "");
|
||||
return {
|
||||
category,
|
||||
title: page.name,
|
||||
thumbnailAsset,
|
||||
pageId: page.id,
|
||||
rootInstanceId: page.rootInstanceId,
|
||||
};
|
||||
});
|
||||
}
|
||||
return templatesByCategory;
|
||||
return mapGroupBy(pages, (page) => page.category);
|
||||
};
|
||||
|
||||
export const Templates = ({
|
||||
|
||||
Reference in new issue
Block a user