medusa-plugin-content 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +137 -137
- package/.medusa/server/src/admin/index.mjs +138 -138
- package/.medusa/server/src/api/content/[slug]/items/[itemSlug]/route.js +9 -4
- package/.medusa/server/src/api/content/[slug]/items/route.js +9 -4
- package/.medusa/server/src/api/content/[slug]/route.js +9 -4
- package/.medusa/server/src/api/content/route.js +9 -4
- package/package.json +1 -1
|
@@ -5929,6 +5929,136 @@ const ContentCollectionsPage = () => {
|
|
|
5929
5929
|
/* @__PURE__ */ jsxRuntime.jsx(CreateContentCollectionModal, { open: createOpen, onOpenChange: setCreateOpen })
|
|
5930
5930
|
] });
|
|
5931
5931
|
};
|
|
5932
|
+
const config = adminSdk.defineRouteConfig({
|
|
5933
|
+
label: "Image Gallery",
|
|
5934
|
+
icon: icons.ImageSparkle,
|
|
5935
|
+
rank: 7
|
|
5936
|
+
});
|
|
5937
|
+
const handle$3 = { breadcrumb: () => "Image Gallery" };
|
|
5938
|
+
const STATUS_COLORS$2 = {
|
|
5939
|
+
published: "green",
|
|
5940
|
+
draft: "orange",
|
|
5941
|
+
archived: "grey"
|
|
5942
|
+
};
|
|
5943
|
+
const PAGE_SIZE = 48;
|
|
5944
|
+
const ImageGalleryPage = () => {
|
|
5945
|
+
const navigate = reactRouterDom.useNavigate();
|
|
5946
|
+
const [selectedCollectionId, setSelectedCollectionId] = React.useState();
|
|
5947
|
+
const [search, setSearch] = React.useState("");
|
|
5948
|
+
const [pageIndex, setPageIndex] = React.useState(0);
|
|
5949
|
+
const { data: collectionsData } = useContentCollections({ limit: 100 });
|
|
5950
|
+
const imgCollections = ((collectionsData == null ? void 0 : collectionsData.content_collections) ?? []).filter((t2) => t2.format === "img");
|
|
5951
|
+
React.useEffect(() => {
|
|
5952
|
+
if (imgCollections.length > 0 && !selectedCollectionId) {
|
|
5953
|
+
setSelectedCollectionId(imgCollections[0].id);
|
|
5954
|
+
}
|
|
5955
|
+
}, [imgCollections.length]);
|
|
5956
|
+
React.useEffect(() => {
|
|
5957
|
+
setPageIndex(0);
|
|
5958
|
+
}, [selectedCollectionId, search]);
|
|
5959
|
+
const offset = React.useMemo(() => pageIndex * PAGE_SIZE, [pageIndex]);
|
|
5960
|
+
const { data: itemsData, isLoading } = useContentItems(
|
|
5961
|
+
selectedCollectionId,
|
|
5962
|
+
selectedCollectionId ? { limit: PAGE_SIZE, offset, q: search || void 0 } : {}
|
|
5963
|
+
);
|
|
5964
|
+
const items = (itemsData == null ? void 0 : itemsData.content_items) ?? [];
|
|
5965
|
+
const total = (itemsData == null ? void 0 : itemsData.count) ?? 0;
|
|
5966
|
+
const pageCount = Math.ceil(total / PAGE_SIZE);
|
|
5967
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "divide-y p-0", children: [
|
|
5968
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start justify-between gap-2 px-6 py-4 md:flex-row md:items-center", children: [
|
|
5969
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Image Gallery" }),
|
|
5970
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5971
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5972
|
+
ui.Input,
|
|
5973
|
+
{
|
|
5974
|
+
type: "search",
|
|
5975
|
+
placeholder: "Search images...",
|
|
5976
|
+
value: search,
|
|
5977
|
+
onChange: (e2) => setSearch(e2.target.value),
|
|
5978
|
+
className: "w-48 md:w-64"
|
|
5979
|
+
}
|
|
5980
|
+
),
|
|
5981
|
+
imgCollections.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5982
|
+
ui.Select,
|
|
5983
|
+
{
|
|
5984
|
+
value: selectedCollectionId ?? "",
|
|
5985
|
+
onValueChange: setSelectedCollectionId,
|
|
5986
|
+
children: [
|
|
5987
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { className: "w-48", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, { placeholder: "Select library..." }) }),
|
|
5988
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Content, { children: imgCollections.map((t2) => /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: t2.id, children: t2.label }, t2.id)) })
|
|
5989
|
+
]
|
|
5990
|
+
}
|
|
5991
|
+
)
|
|
5992
|
+
] })
|
|
5993
|
+
] }),
|
|
5994
|
+
imgCollections.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: "No image content collections found." }) : isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-4 text-ui-fg-muted", children: "Loading..." }) : items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: search ? "No images match your search." : "No images in this library." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-4 p-6", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5995
|
+
"div",
|
|
5996
|
+
{
|
|
5997
|
+
className: "group flex-none flex flex-col cursor-pointer overflow-hidden rounded-lg border border-ui-border-base bg-ui-bg-subtle",
|
|
5998
|
+
onClick: () => navigate(`/content/${selectedCollectionId}/items/${item.id}`),
|
|
5999
|
+
children: [
|
|
6000
|
+
item.body ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6001
|
+
"img",
|
|
6002
|
+
{
|
|
6003
|
+
src: item.body,
|
|
6004
|
+
alt: item.title,
|
|
6005
|
+
className: "block h-40 w-auto object-contain bg-ui-bg-component transition-transform group-hover:scale-105"
|
|
6006
|
+
}
|
|
6007
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-40 w-32 items-center justify-center bg-ui-bg-component", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-sm text-ui-fg-muted", children: "No image" }) }),
|
|
6008
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-0 min-w-full overflow-hidden p-2", children: [
|
|
6009
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", weight: "plus", className: "truncate", children: item.title }),
|
|
6010
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6011
|
+
ui.Badge,
|
|
6012
|
+
{
|
|
6013
|
+
size: "xsmall",
|
|
6014
|
+
color: STATUS_COLORS$2[item.status] ?? "grey",
|
|
6015
|
+
className: "mt-1",
|
|
6016
|
+
children: item.status
|
|
6017
|
+
}
|
|
6018
|
+
)
|
|
6019
|
+
] })
|
|
6020
|
+
]
|
|
6021
|
+
},
|
|
6022
|
+
item.id
|
|
6023
|
+
)) }),
|
|
6024
|
+
pageCount > 1 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [
|
|
6025
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", className: "text-ui-fg-muted", children: [
|
|
6026
|
+
offset + 1,
|
|
6027
|
+
"–",
|
|
6028
|
+
Math.min(offset + PAGE_SIZE, total),
|
|
6029
|
+
" of ",
|
|
6030
|
+
total
|
|
6031
|
+
] }),
|
|
6032
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6033
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6034
|
+
ui.Button,
|
|
6035
|
+
{
|
|
6036
|
+
size: "small",
|
|
6037
|
+
variant: "transparent",
|
|
6038
|
+
disabled: pageIndex === 0,
|
|
6039
|
+
onClick: () => setPageIndex((p) => p - 1),
|
|
6040
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronLeft, {})
|
|
6041
|
+
}
|
|
6042
|
+
),
|
|
6043
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", className: "min-w-[4rem] text-center text-ui-fg-subtle", children: [
|
|
6044
|
+
pageIndex + 1,
|
|
6045
|
+
" / ",
|
|
6046
|
+
pageCount
|
|
6047
|
+
] }),
|
|
6048
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6049
|
+
ui.Button,
|
|
6050
|
+
{
|
|
6051
|
+
size: "small",
|
|
6052
|
+
variant: "transparent",
|
|
6053
|
+
disabled: pageIndex >= pageCount - 1,
|
|
6054
|
+
onClick: () => setPageIndex((p) => p + 1),
|
|
6055
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronRight, {})
|
|
6056
|
+
}
|
|
6057
|
+
)
|
|
6058
|
+
] })
|
|
6059
|
+
] })
|
|
6060
|
+
] });
|
|
6061
|
+
};
|
|
5932
6062
|
const ActionMenu = ({ groups }) => {
|
|
5933
6063
|
return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
|
|
5934
6064
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "small", variant: "transparent", children: /* @__PURE__ */ jsxRuntime.jsx(icons.EllipsisHorizontal, {}) }) }),
|
|
@@ -6145,7 +6275,7 @@ async function loader$1({ params }) {
|
|
|
6145
6275
|
query: { fields: "id,label" }
|
|
6146
6276
|
});
|
|
6147
6277
|
}
|
|
6148
|
-
const handle$
|
|
6278
|
+
const handle$2 = {
|
|
6149
6279
|
breadcrumb: ({ data }) => {
|
|
6150
6280
|
var _a, _b;
|
|
6151
6281
|
return ((_a = data == null ? void 0 : data.content_collection) == null ? void 0 : _a.label) || ((_b = data == null ? void 0 : data.content_collection) == null ? void 0 : _b.id) || "Collection";
|
|
@@ -6299,136 +6429,6 @@ const ContentCollectionDetailPage = () => {
|
|
|
6299
6429
|
)
|
|
6300
6430
|
] });
|
|
6301
6431
|
};
|
|
6302
|
-
const config = adminSdk.defineRouteConfig({
|
|
6303
|
-
label: "Image Gallery",
|
|
6304
|
-
icon: icons.ImageSparkle,
|
|
6305
|
-
rank: 7
|
|
6306
|
-
});
|
|
6307
|
-
const handle$2 = { breadcrumb: () => "Image Gallery" };
|
|
6308
|
-
const STATUS_COLORS$2 = {
|
|
6309
|
-
published: "green",
|
|
6310
|
-
draft: "orange",
|
|
6311
|
-
archived: "grey"
|
|
6312
|
-
};
|
|
6313
|
-
const PAGE_SIZE = 48;
|
|
6314
|
-
const ImageGalleryPage = () => {
|
|
6315
|
-
const navigate = reactRouterDom.useNavigate();
|
|
6316
|
-
const [selectedCollectionId, setSelectedCollectionId] = React.useState();
|
|
6317
|
-
const [search, setSearch] = React.useState("");
|
|
6318
|
-
const [pageIndex, setPageIndex] = React.useState(0);
|
|
6319
|
-
const { data: collectionsData } = useContentCollections({ limit: 100 });
|
|
6320
|
-
const imgCollections = ((collectionsData == null ? void 0 : collectionsData.content_collections) ?? []).filter((t2) => t2.format === "img");
|
|
6321
|
-
React.useEffect(() => {
|
|
6322
|
-
if (imgCollections.length > 0 && !selectedCollectionId) {
|
|
6323
|
-
setSelectedCollectionId(imgCollections[0].id);
|
|
6324
|
-
}
|
|
6325
|
-
}, [imgCollections.length]);
|
|
6326
|
-
React.useEffect(() => {
|
|
6327
|
-
setPageIndex(0);
|
|
6328
|
-
}, [selectedCollectionId, search]);
|
|
6329
|
-
const offset = React.useMemo(() => pageIndex * PAGE_SIZE, [pageIndex]);
|
|
6330
|
-
const { data: itemsData, isLoading } = useContentItems(
|
|
6331
|
-
selectedCollectionId,
|
|
6332
|
-
selectedCollectionId ? { limit: PAGE_SIZE, offset, q: search || void 0 } : {}
|
|
6333
|
-
);
|
|
6334
|
-
const items = (itemsData == null ? void 0 : itemsData.content_items) ?? [];
|
|
6335
|
-
const total = (itemsData == null ? void 0 : itemsData.count) ?? 0;
|
|
6336
|
-
const pageCount = Math.ceil(total / PAGE_SIZE);
|
|
6337
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "divide-y p-0", children: [
|
|
6338
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start justify-between gap-2 px-6 py-4 md:flex-row md:items-center", children: [
|
|
6339
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Image Gallery" }),
|
|
6340
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6341
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6342
|
-
ui.Input,
|
|
6343
|
-
{
|
|
6344
|
-
type: "search",
|
|
6345
|
-
placeholder: "Search images...",
|
|
6346
|
-
value: search,
|
|
6347
|
-
onChange: (e2) => setSearch(e2.target.value),
|
|
6348
|
-
className: "w-48 md:w-64"
|
|
6349
|
-
}
|
|
6350
|
-
),
|
|
6351
|
-
imgCollections.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6352
|
-
ui.Select,
|
|
6353
|
-
{
|
|
6354
|
-
value: selectedCollectionId ?? "",
|
|
6355
|
-
onValueChange: setSelectedCollectionId,
|
|
6356
|
-
children: [
|
|
6357
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { className: "w-48", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, { placeholder: "Select library..." }) }),
|
|
6358
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Content, { children: imgCollections.map((t2) => /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: t2.id, children: t2.label }, t2.id)) })
|
|
6359
|
-
]
|
|
6360
|
-
}
|
|
6361
|
-
)
|
|
6362
|
-
] })
|
|
6363
|
-
] }),
|
|
6364
|
-
imgCollections.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: "No image content collections found." }) : isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-4 text-ui-fg-muted", children: "Loading..." }) : items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: search ? "No images match your search." : "No images in this library." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-4 p-6", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6365
|
-
"div",
|
|
6366
|
-
{
|
|
6367
|
-
className: "group flex-none flex flex-col cursor-pointer overflow-hidden rounded-lg border border-ui-border-base bg-ui-bg-subtle",
|
|
6368
|
-
onClick: () => navigate(`/content/${selectedCollectionId}/items/${item.id}`),
|
|
6369
|
-
children: [
|
|
6370
|
-
item.body ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6371
|
-
"img",
|
|
6372
|
-
{
|
|
6373
|
-
src: item.body,
|
|
6374
|
-
alt: item.title,
|
|
6375
|
-
className: "block h-40 w-auto object-contain bg-ui-bg-component transition-transform group-hover:scale-105"
|
|
6376
|
-
}
|
|
6377
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-40 w-32 items-center justify-center bg-ui-bg-component", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-sm text-ui-fg-muted", children: "No image" }) }),
|
|
6378
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-0 min-w-full overflow-hidden p-2", children: [
|
|
6379
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", weight: "plus", className: "truncate", children: item.title }),
|
|
6380
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6381
|
-
ui.Badge,
|
|
6382
|
-
{
|
|
6383
|
-
size: "xsmall",
|
|
6384
|
-
color: STATUS_COLORS$2[item.status] ?? "grey",
|
|
6385
|
-
className: "mt-1",
|
|
6386
|
-
children: item.status
|
|
6387
|
-
}
|
|
6388
|
-
)
|
|
6389
|
-
] })
|
|
6390
|
-
]
|
|
6391
|
-
},
|
|
6392
|
-
item.id
|
|
6393
|
-
)) }),
|
|
6394
|
-
pageCount > 1 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [
|
|
6395
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", className: "text-ui-fg-muted", children: [
|
|
6396
|
-
offset + 1,
|
|
6397
|
-
"–",
|
|
6398
|
-
Math.min(offset + PAGE_SIZE, total),
|
|
6399
|
-
" of ",
|
|
6400
|
-
total
|
|
6401
|
-
] }),
|
|
6402
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6403
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6404
|
-
ui.Button,
|
|
6405
|
-
{
|
|
6406
|
-
size: "small",
|
|
6407
|
-
variant: "transparent",
|
|
6408
|
-
disabled: pageIndex === 0,
|
|
6409
|
-
onClick: () => setPageIndex((p) => p - 1),
|
|
6410
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronLeft, {})
|
|
6411
|
-
}
|
|
6412
|
-
),
|
|
6413
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", className: "min-w-[4rem] text-center text-ui-fg-subtle", children: [
|
|
6414
|
-
pageIndex + 1,
|
|
6415
|
-
" / ",
|
|
6416
|
-
pageCount
|
|
6417
|
-
] }),
|
|
6418
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6419
|
-
ui.Button,
|
|
6420
|
-
{
|
|
6421
|
-
size: "small",
|
|
6422
|
-
variant: "transparent",
|
|
6423
|
-
disabled: pageIndex >= pageCount - 1,
|
|
6424
|
-
onClick: () => setPageIndex((p) => p + 1),
|
|
6425
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronRight, {})
|
|
6426
|
-
}
|
|
6427
|
-
)
|
|
6428
|
-
] })
|
|
6429
|
-
] })
|
|
6430
|
-
] });
|
|
6431
|
-
};
|
|
6432
6432
|
function getSelectOptions(field) {
|
|
6433
6433
|
const opts = field.options;
|
|
6434
6434
|
return Array.isArray(opts == null ? void 0 : opts.values) ? opts.values : null;
|
|
@@ -7457,17 +7457,17 @@ const routeModule = {
|
|
|
7457
7457
|
path: "/content",
|
|
7458
7458
|
handle: handle$4
|
|
7459
7459
|
},
|
|
7460
|
+
{
|
|
7461
|
+
Component: ImageGalleryPage,
|
|
7462
|
+
path: "/images",
|
|
7463
|
+
handle: handle$3
|
|
7464
|
+
},
|
|
7460
7465
|
{
|
|
7461
7466
|
Component: ContentCollectionDetailPage,
|
|
7462
7467
|
path: "/content/:collectionId",
|
|
7463
|
-
handle: handle$
|
|
7468
|
+
handle: handle$2,
|
|
7464
7469
|
loader: loader$1
|
|
7465
7470
|
},
|
|
7466
|
-
{
|
|
7467
|
-
Component: ImageGalleryPage,
|
|
7468
|
-
path: "/images",
|
|
7469
|
-
handle: handle$2
|
|
7470
|
-
},
|
|
7471
7471
|
{
|
|
7472
7472
|
Component: ContentItemsPage,
|
|
7473
7473
|
path: "/content/:collectionId/items",
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import React, { useState, useEffect, useRef, useMemo, useCallback } from "react";
|
|
3
3
|
import { defineWidgetConfig, defineRouteConfig } from "@medusajs/admin-sdk";
|
|
4
4
|
import { FocusModal, Heading, Text, Select, Input, toast, Container, Button, Switch, Label, createDataTableColumnHelper, createDataTableCommandHelper, usePrompt, Badge, useDataTable, DataTable, DropdownMenu, IconButton, clx, Drawer, Textarea, DatePicker, Tooltip } from "@medusajs/ui";
|
|
5
|
-
import { ImageSparkle, Trash, Plus, PencilSquare,
|
|
5
|
+
import { ImageSparkle, Trash, Plus, PencilSquare, ChevronLeft, ChevronRight, EllipsisHorizontal, ArrowUpRightOnBox, ArchiveBox, PaperPlane } from "@medusajs/icons";
|
|
6
6
|
import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query";
|
|
7
7
|
import Medusa from "@medusajs/js-sdk";
|
|
8
8
|
import { useNavigate, Link, useParams, useBlocker } from "react-router-dom";
|
|
@@ -5925,6 +5925,136 @@ const ContentCollectionsPage = () => {
|
|
|
5925
5925
|
/* @__PURE__ */ jsx(CreateContentCollectionModal, { open: createOpen, onOpenChange: setCreateOpen })
|
|
5926
5926
|
] });
|
|
5927
5927
|
};
|
|
5928
|
+
const config = defineRouteConfig({
|
|
5929
|
+
label: "Image Gallery",
|
|
5930
|
+
icon: ImageSparkle,
|
|
5931
|
+
rank: 7
|
|
5932
|
+
});
|
|
5933
|
+
const handle$3 = { breadcrumb: () => "Image Gallery" };
|
|
5934
|
+
const STATUS_COLORS$2 = {
|
|
5935
|
+
published: "green",
|
|
5936
|
+
draft: "orange",
|
|
5937
|
+
archived: "grey"
|
|
5938
|
+
};
|
|
5939
|
+
const PAGE_SIZE = 48;
|
|
5940
|
+
const ImageGalleryPage = () => {
|
|
5941
|
+
const navigate = useNavigate();
|
|
5942
|
+
const [selectedCollectionId, setSelectedCollectionId] = useState();
|
|
5943
|
+
const [search, setSearch] = useState("");
|
|
5944
|
+
const [pageIndex, setPageIndex] = useState(0);
|
|
5945
|
+
const { data: collectionsData } = useContentCollections({ limit: 100 });
|
|
5946
|
+
const imgCollections = ((collectionsData == null ? void 0 : collectionsData.content_collections) ?? []).filter((t2) => t2.format === "img");
|
|
5947
|
+
useEffect(() => {
|
|
5948
|
+
if (imgCollections.length > 0 && !selectedCollectionId) {
|
|
5949
|
+
setSelectedCollectionId(imgCollections[0].id);
|
|
5950
|
+
}
|
|
5951
|
+
}, [imgCollections.length]);
|
|
5952
|
+
useEffect(() => {
|
|
5953
|
+
setPageIndex(0);
|
|
5954
|
+
}, [selectedCollectionId, search]);
|
|
5955
|
+
const offset = useMemo(() => pageIndex * PAGE_SIZE, [pageIndex]);
|
|
5956
|
+
const { data: itemsData, isLoading } = useContentItems(
|
|
5957
|
+
selectedCollectionId,
|
|
5958
|
+
selectedCollectionId ? { limit: PAGE_SIZE, offset, q: search || void 0 } : {}
|
|
5959
|
+
);
|
|
5960
|
+
const items = (itemsData == null ? void 0 : itemsData.content_items) ?? [];
|
|
5961
|
+
const total = (itemsData == null ? void 0 : itemsData.count) ?? 0;
|
|
5962
|
+
const pageCount = Math.ceil(total / PAGE_SIZE);
|
|
5963
|
+
return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0", children: [
|
|
5964
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start justify-between gap-2 px-6 py-4 md:flex-row md:items-center", children: [
|
|
5965
|
+
/* @__PURE__ */ jsx(Heading, { children: "Image Gallery" }),
|
|
5966
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5967
|
+
/* @__PURE__ */ jsx(
|
|
5968
|
+
Input,
|
|
5969
|
+
{
|
|
5970
|
+
type: "search",
|
|
5971
|
+
placeholder: "Search images...",
|
|
5972
|
+
value: search,
|
|
5973
|
+
onChange: (e2) => setSearch(e2.target.value),
|
|
5974
|
+
className: "w-48 md:w-64"
|
|
5975
|
+
}
|
|
5976
|
+
),
|
|
5977
|
+
imgCollections.length > 1 && /* @__PURE__ */ jsxs(
|
|
5978
|
+
Select,
|
|
5979
|
+
{
|
|
5980
|
+
value: selectedCollectionId ?? "",
|
|
5981
|
+
onValueChange: setSelectedCollectionId,
|
|
5982
|
+
children: [
|
|
5983
|
+
/* @__PURE__ */ jsx(Select.Trigger, { className: "w-48", children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Select library..." }) }),
|
|
5984
|
+
/* @__PURE__ */ jsx(Select.Content, { children: imgCollections.map((t2) => /* @__PURE__ */ jsx(Select.Item, { value: t2.id, children: t2.label }, t2.id)) })
|
|
5985
|
+
]
|
|
5986
|
+
}
|
|
5987
|
+
)
|
|
5988
|
+
] })
|
|
5989
|
+
] }),
|
|
5990
|
+
imgCollections.length === 0 ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: "No image content collections found." }) : isLoading ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-4 text-ui-fg-muted", children: "Loading..." }) : items.length === 0 ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: search ? "No images match your search." : "No images in this library." }) : /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-4 p-6", children: items.map((item) => /* @__PURE__ */ jsxs(
|
|
5991
|
+
"div",
|
|
5992
|
+
{
|
|
5993
|
+
className: "group flex-none flex flex-col cursor-pointer overflow-hidden rounded-lg border border-ui-border-base bg-ui-bg-subtle",
|
|
5994
|
+
onClick: () => navigate(`/content/${selectedCollectionId}/items/${item.id}`),
|
|
5995
|
+
children: [
|
|
5996
|
+
item.body ? /* @__PURE__ */ jsx(
|
|
5997
|
+
"img",
|
|
5998
|
+
{
|
|
5999
|
+
src: item.body,
|
|
6000
|
+
alt: item.title,
|
|
6001
|
+
className: "block h-40 w-auto object-contain bg-ui-bg-component transition-transform group-hover:scale-105"
|
|
6002
|
+
}
|
|
6003
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex h-40 w-32 items-center justify-center bg-ui-bg-component", children: /* @__PURE__ */ jsx(Text, { className: "text-sm text-ui-fg-muted", children: "No image" }) }),
|
|
6004
|
+
/* @__PURE__ */ jsxs("div", { className: "w-0 min-w-full overflow-hidden p-2", children: [
|
|
6005
|
+
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", className: "truncate", children: item.title }),
|
|
6006
|
+
/* @__PURE__ */ jsx(
|
|
6007
|
+
Badge,
|
|
6008
|
+
{
|
|
6009
|
+
size: "xsmall",
|
|
6010
|
+
color: STATUS_COLORS$2[item.status] ?? "grey",
|
|
6011
|
+
className: "mt-1",
|
|
6012
|
+
children: item.status
|
|
6013
|
+
}
|
|
6014
|
+
)
|
|
6015
|
+
] })
|
|
6016
|
+
]
|
|
6017
|
+
},
|
|
6018
|
+
item.id
|
|
6019
|
+
)) }),
|
|
6020
|
+
pageCount > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [
|
|
6021
|
+
/* @__PURE__ */ jsxs(Text, { size: "small", className: "text-ui-fg-muted", children: [
|
|
6022
|
+
offset + 1,
|
|
6023
|
+
"–",
|
|
6024
|
+
Math.min(offset + PAGE_SIZE, total),
|
|
6025
|
+
" of ",
|
|
6026
|
+
total
|
|
6027
|
+
] }),
|
|
6028
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6029
|
+
/* @__PURE__ */ jsx(
|
|
6030
|
+
Button,
|
|
6031
|
+
{
|
|
6032
|
+
size: "small",
|
|
6033
|
+
variant: "transparent",
|
|
6034
|
+
disabled: pageIndex === 0,
|
|
6035
|
+
onClick: () => setPageIndex((p) => p - 1),
|
|
6036
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, {})
|
|
6037
|
+
}
|
|
6038
|
+
),
|
|
6039
|
+
/* @__PURE__ */ jsxs(Text, { size: "small", className: "min-w-[4rem] text-center text-ui-fg-subtle", children: [
|
|
6040
|
+
pageIndex + 1,
|
|
6041
|
+
" / ",
|
|
6042
|
+
pageCount
|
|
6043
|
+
] }),
|
|
6044
|
+
/* @__PURE__ */ jsx(
|
|
6045
|
+
Button,
|
|
6046
|
+
{
|
|
6047
|
+
size: "small",
|
|
6048
|
+
variant: "transparent",
|
|
6049
|
+
disabled: pageIndex >= pageCount - 1,
|
|
6050
|
+
onClick: () => setPageIndex((p) => p + 1),
|
|
6051
|
+
children: /* @__PURE__ */ jsx(ChevronRight, {})
|
|
6052
|
+
}
|
|
6053
|
+
)
|
|
6054
|
+
] })
|
|
6055
|
+
] })
|
|
6056
|
+
] });
|
|
6057
|
+
};
|
|
5928
6058
|
const ActionMenu = ({ groups }) => {
|
|
5929
6059
|
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
5930
6060
|
/* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(IconButton, { size: "small", variant: "transparent", children: /* @__PURE__ */ jsx(EllipsisHorizontal, {}) }) }),
|
|
@@ -6141,7 +6271,7 @@ async function loader$1({ params }) {
|
|
|
6141
6271
|
query: { fields: "id,label" }
|
|
6142
6272
|
});
|
|
6143
6273
|
}
|
|
6144
|
-
const handle$
|
|
6274
|
+
const handle$2 = {
|
|
6145
6275
|
breadcrumb: ({ data }) => {
|
|
6146
6276
|
var _a, _b;
|
|
6147
6277
|
return ((_a = data == null ? void 0 : data.content_collection) == null ? void 0 : _a.label) || ((_b = data == null ? void 0 : data.content_collection) == null ? void 0 : _b.id) || "Collection";
|
|
@@ -6295,136 +6425,6 @@ const ContentCollectionDetailPage = () => {
|
|
|
6295
6425
|
)
|
|
6296
6426
|
] });
|
|
6297
6427
|
};
|
|
6298
|
-
const config = defineRouteConfig({
|
|
6299
|
-
label: "Image Gallery",
|
|
6300
|
-
icon: ImageSparkle,
|
|
6301
|
-
rank: 7
|
|
6302
|
-
});
|
|
6303
|
-
const handle$2 = { breadcrumb: () => "Image Gallery" };
|
|
6304
|
-
const STATUS_COLORS$2 = {
|
|
6305
|
-
published: "green",
|
|
6306
|
-
draft: "orange",
|
|
6307
|
-
archived: "grey"
|
|
6308
|
-
};
|
|
6309
|
-
const PAGE_SIZE = 48;
|
|
6310
|
-
const ImageGalleryPage = () => {
|
|
6311
|
-
const navigate = useNavigate();
|
|
6312
|
-
const [selectedCollectionId, setSelectedCollectionId] = useState();
|
|
6313
|
-
const [search, setSearch] = useState("");
|
|
6314
|
-
const [pageIndex, setPageIndex] = useState(0);
|
|
6315
|
-
const { data: collectionsData } = useContentCollections({ limit: 100 });
|
|
6316
|
-
const imgCollections = ((collectionsData == null ? void 0 : collectionsData.content_collections) ?? []).filter((t2) => t2.format === "img");
|
|
6317
|
-
useEffect(() => {
|
|
6318
|
-
if (imgCollections.length > 0 && !selectedCollectionId) {
|
|
6319
|
-
setSelectedCollectionId(imgCollections[0].id);
|
|
6320
|
-
}
|
|
6321
|
-
}, [imgCollections.length]);
|
|
6322
|
-
useEffect(() => {
|
|
6323
|
-
setPageIndex(0);
|
|
6324
|
-
}, [selectedCollectionId, search]);
|
|
6325
|
-
const offset = useMemo(() => pageIndex * PAGE_SIZE, [pageIndex]);
|
|
6326
|
-
const { data: itemsData, isLoading } = useContentItems(
|
|
6327
|
-
selectedCollectionId,
|
|
6328
|
-
selectedCollectionId ? { limit: PAGE_SIZE, offset, q: search || void 0 } : {}
|
|
6329
|
-
);
|
|
6330
|
-
const items = (itemsData == null ? void 0 : itemsData.content_items) ?? [];
|
|
6331
|
-
const total = (itemsData == null ? void 0 : itemsData.count) ?? 0;
|
|
6332
|
-
const pageCount = Math.ceil(total / PAGE_SIZE);
|
|
6333
|
-
return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0", children: [
|
|
6334
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start justify-between gap-2 px-6 py-4 md:flex-row md:items-center", children: [
|
|
6335
|
-
/* @__PURE__ */ jsx(Heading, { children: "Image Gallery" }),
|
|
6336
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6337
|
-
/* @__PURE__ */ jsx(
|
|
6338
|
-
Input,
|
|
6339
|
-
{
|
|
6340
|
-
type: "search",
|
|
6341
|
-
placeholder: "Search images...",
|
|
6342
|
-
value: search,
|
|
6343
|
-
onChange: (e2) => setSearch(e2.target.value),
|
|
6344
|
-
className: "w-48 md:w-64"
|
|
6345
|
-
}
|
|
6346
|
-
),
|
|
6347
|
-
imgCollections.length > 1 && /* @__PURE__ */ jsxs(
|
|
6348
|
-
Select,
|
|
6349
|
-
{
|
|
6350
|
-
value: selectedCollectionId ?? "",
|
|
6351
|
-
onValueChange: setSelectedCollectionId,
|
|
6352
|
-
children: [
|
|
6353
|
-
/* @__PURE__ */ jsx(Select.Trigger, { className: "w-48", children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Select library..." }) }),
|
|
6354
|
-
/* @__PURE__ */ jsx(Select.Content, { children: imgCollections.map((t2) => /* @__PURE__ */ jsx(Select.Item, { value: t2.id, children: t2.label }, t2.id)) })
|
|
6355
|
-
]
|
|
6356
|
-
}
|
|
6357
|
-
)
|
|
6358
|
-
] })
|
|
6359
|
-
] }),
|
|
6360
|
-
imgCollections.length === 0 ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: "No image content collections found." }) : isLoading ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-4 text-ui-fg-muted", children: "Loading..." }) : items.length === 0 ? /* @__PURE__ */ jsx(Text, { className: "px-6 py-8 text-center text-ui-fg-muted", children: search ? "No images match your search." : "No images in this library." }) : /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-4 p-6", children: items.map((item) => /* @__PURE__ */ jsxs(
|
|
6361
|
-
"div",
|
|
6362
|
-
{
|
|
6363
|
-
className: "group flex-none flex flex-col cursor-pointer overflow-hidden rounded-lg border border-ui-border-base bg-ui-bg-subtle",
|
|
6364
|
-
onClick: () => navigate(`/content/${selectedCollectionId}/items/${item.id}`),
|
|
6365
|
-
children: [
|
|
6366
|
-
item.body ? /* @__PURE__ */ jsx(
|
|
6367
|
-
"img",
|
|
6368
|
-
{
|
|
6369
|
-
src: item.body,
|
|
6370
|
-
alt: item.title,
|
|
6371
|
-
className: "block h-40 w-auto object-contain bg-ui-bg-component transition-transform group-hover:scale-105"
|
|
6372
|
-
}
|
|
6373
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-40 w-32 items-center justify-center bg-ui-bg-component", children: /* @__PURE__ */ jsx(Text, { className: "text-sm text-ui-fg-muted", children: "No image" }) }),
|
|
6374
|
-
/* @__PURE__ */ jsxs("div", { className: "w-0 min-w-full overflow-hidden p-2", children: [
|
|
6375
|
-
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", className: "truncate", children: item.title }),
|
|
6376
|
-
/* @__PURE__ */ jsx(
|
|
6377
|
-
Badge,
|
|
6378
|
-
{
|
|
6379
|
-
size: "xsmall",
|
|
6380
|
-
color: STATUS_COLORS$2[item.status] ?? "grey",
|
|
6381
|
-
className: "mt-1",
|
|
6382
|
-
children: item.status
|
|
6383
|
-
}
|
|
6384
|
-
)
|
|
6385
|
-
] })
|
|
6386
|
-
]
|
|
6387
|
-
},
|
|
6388
|
-
item.id
|
|
6389
|
-
)) }),
|
|
6390
|
-
pageCount > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [
|
|
6391
|
-
/* @__PURE__ */ jsxs(Text, { size: "small", className: "text-ui-fg-muted", children: [
|
|
6392
|
-
offset + 1,
|
|
6393
|
-
"–",
|
|
6394
|
-
Math.min(offset + PAGE_SIZE, total),
|
|
6395
|
-
" of ",
|
|
6396
|
-
total
|
|
6397
|
-
] }),
|
|
6398
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
6399
|
-
/* @__PURE__ */ jsx(
|
|
6400
|
-
Button,
|
|
6401
|
-
{
|
|
6402
|
-
size: "small",
|
|
6403
|
-
variant: "transparent",
|
|
6404
|
-
disabled: pageIndex === 0,
|
|
6405
|
-
onClick: () => setPageIndex((p) => p - 1),
|
|
6406
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, {})
|
|
6407
|
-
}
|
|
6408
|
-
),
|
|
6409
|
-
/* @__PURE__ */ jsxs(Text, { size: "small", className: "min-w-[4rem] text-center text-ui-fg-subtle", children: [
|
|
6410
|
-
pageIndex + 1,
|
|
6411
|
-
" / ",
|
|
6412
|
-
pageCount
|
|
6413
|
-
] }),
|
|
6414
|
-
/* @__PURE__ */ jsx(
|
|
6415
|
-
Button,
|
|
6416
|
-
{
|
|
6417
|
-
size: "small",
|
|
6418
|
-
variant: "transparent",
|
|
6419
|
-
disabled: pageIndex >= pageCount - 1,
|
|
6420
|
-
onClick: () => setPageIndex((p) => p + 1),
|
|
6421
|
-
children: /* @__PURE__ */ jsx(ChevronRight, {})
|
|
6422
|
-
}
|
|
6423
|
-
)
|
|
6424
|
-
] })
|
|
6425
|
-
] })
|
|
6426
|
-
] });
|
|
6427
|
-
};
|
|
6428
6428
|
function getSelectOptions(field) {
|
|
6429
6429
|
const opts = field.options;
|
|
6430
6430
|
return Array.isArray(opts == null ? void 0 : opts.values) ? opts.values : null;
|
|
@@ -7453,17 +7453,17 @@ const routeModule = {
|
|
|
7453
7453
|
path: "/content",
|
|
7454
7454
|
handle: handle$4
|
|
7455
7455
|
},
|
|
7456
|
+
{
|
|
7457
|
+
Component: ImageGalleryPage,
|
|
7458
|
+
path: "/images",
|
|
7459
|
+
handle: handle$3
|
|
7460
|
+
},
|
|
7456
7461
|
{
|
|
7457
7462
|
Component: ContentCollectionDetailPage,
|
|
7458
7463
|
path: "/content/:collectionId",
|
|
7459
|
-
handle: handle$
|
|
7464
|
+
handle: handle$2,
|
|
7460
7465
|
loader: loader$1
|
|
7461
7466
|
},
|
|
7462
|
-
{
|
|
7463
|
-
Component: ImageGalleryPage,
|
|
7464
|
-
path: "/images",
|
|
7465
|
-
handle: handle$2
|
|
7466
|
-
},
|
|
7467
7467
|
{
|
|
7468
7468
|
Component: ContentItemsPage,
|
|
7469
7469
|
path: "/content/:collectionId/items",
|
|
@@ -5,10 +5,14 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const content_item_1 = require("../../../../../modules/content/models/content-item");
|
|
6
6
|
const TTL = 300; // 5 minutes
|
|
7
7
|
const GET = async (req, res) => {
|
|
8
|
-
|
|
8
|
+
let caching = null;
|
|
9
|
+
try {
|
|
10
|
+
caching = req.scope.resolve(utils_1.Modules.CACHING) ?? null;
|
|
11
|
+
}
|
|
12
|
+
catch { /* noop */ }
|
|
9
13
|
const { itemSlug } = req.params;
|
|
10
14
|
const cacheKey = `store:content-item:${itemSlug}`;
|
|
11
|
-
const cached = await caching.get({ key: cacheKey });
|
|
15
|
+
const cached = caching ? await caching.get({ key: cacheKey }) : null;
|
|
12
16
|
if (cached) {
|
|
13
17
|
res.json(cached);
|
|
14
18
|
return;
|
|
@@ -23,8 +27,9 @@ const GET = async (req, res) => {
|
|
|
23
27
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Content item "${itemSlug}" not found`);
|
|
24
28
|
}
|
|
25
29
|
const body = { content_item };
|
|
26
|
-
|
|
30
|
+
if (caching)
|
|
31
|
+
await caching.set({ key: cacheKey, data: body, ttl: TTL });
|
|
27
32
|
res.json(body);
|
|
28
33
|
};
|
|
29
34
|
exports.GET = GET;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2NvbnRlbnQvW3NsdWddL2l0ZW1zL1tpdGVtU2x1Z10vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQTJGO0FBRTNGLHFGQUFrRjtBQUdsRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUEsQ0FBQyxZQUFZO0FBRXJCLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdkIsR0FBMkMsRUFDM0MsR0FBbUIsRUFDbEIsRUFBRTtJQUNILElBQUksT0FBTyxHQUFpQyxJQUFJLENBQUE7SUFDaEQsSUFBSSxDQUFDO1FBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUE7SUFBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakYsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFL0IsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLFFBQVEsRUFBRSxDQUFBO0lBQ2pELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQixPQUFNO0lBQ1AsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNsRCxNQUFNLEVBQUUsY0FBYztRQUN0QixHQUFHLEdBQUcsQ0FBQyxXQUFXO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLDRCQUFhLENBQUMsU0FBUyxFQUFFO0tBQzVELENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLFFBQVEsYUFBYSxDQUFDLENBQUE7SUFDM0YsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDN0IsSUFBSSxPQUFPO1FBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBeUIsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1RixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBN0JZLFFBQUEsR0FBRyxPQTZCZiJ9
|
|
@@ -5,11 +5,15 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
5
5
|
const content_item_1 = require("../../../../modules/content/models/content-item");
|
|
6
6
|
const TTL = 300; // 5 minutes
|
|
7
7
|
const GET = async (req, res) => {
|
|
8
|
-
|
|
8
|
+
let caching = null;
|
|
9
|
+
try {
|
|
10
|
+
caching = req.scope.resolve(utils_1.Modules.CACHING) ?? null;
|
|
11
|
+
}
|
|
12
|
+
catch { /* noop */ }
|
|
9
13
|
const { slug } = req.params;
|
|
10
14
|
const { tag, q, limit, offset } = req.validatedQuery;
|
|
11
15
|
const cacheKey = `store:content-items:${slug}:${tag ?? ''}:${q ?? ''}:${limit}:${offset}`;
|
|
12
|
-
const cached = await caching.get({ key: cacheKey });
|
|
16
|
+
const cached = caching ? await caching.get({ key: cacheKey }) : null;
|
|
13
17
|
if (cached) {
|
|
14
18
|
res.json(cached);
|
|
15
19
|
return;
|
|
@@ -31,8 +35,9 @@ const GET = async (req, res) => {
|
|
|
31
35
|
limit: metadata?.take,
|
|
32
36
|
offset: metadata?.skip
|
|
33
37
|
};
|
|
34
|
-
|
|
38
|
+
if (caching)
|
|
39
|
+
await caching.set({ key: cacheKey, data: body, ttl: TTL });
|
|
35
40
|
res.json(body);
|
|
36
41
|
};
|
|
37
42
|
exports.GET = GET;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2NvbnRlbnQvW3NsdWddL2l0ZW1zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RTtBQUU5RSxrRkFBK0U7QUFHL0UsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFBLENBQUMsWUFBWTtBQUVyQixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3ZCLEdBQTRDLEVBQzVDLEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxJQUFJLE9BQU8sR0FBaUMsSUFBSSxDQUFBO0lBQ2hELElBQUksQ0FBQztRQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBQzNCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFBO0lBRXBELE1BQU0sUUFBUSxHQUFHLHVCQUF1QixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQTtJQUN6RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEIsT0FBTTtJQUNQLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxFQUFFLGNBQWM7UUFDdEIsR0FBRyxHQUFHLENBQUMsV0FBVztRQUNsQixPQUFPLEVBQUU7WUFDUixNQUFNLEVBQUUsNEJBQWEsQ0FBQyxTQUFTO1lBQy9CLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFO1lBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzdDO0tBQ0QsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFJLEdBQUc7UUFDWixhQUFhO1FBQ2IsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO1FBQ3RCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUk7S0FDdEIsQ0FBQTtJQUVELElBQUksT0FBTztRQUFFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQXlCLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQXJDWSxRQUFBLEdBQUcsT0FxQ2YifQ==
|
|
@@ -4,10 +4,14 @@ exports.GET = void 0;
|
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const TTL = 300; // 5 minutes
|
|
6
6
|
const GET = async (req, res) => {
|
|
7
|
-
|
|
7
|
+
let caching = null;
|
|
8
|
+
try {
|
|
9
|
+
caching = req.scope.resolve(utils_1.Modules.CACHING) ?? null;
|
|
10
|
+
}
|
|
11
|
+
catch { /* noop */ }
|
|
8
12
|
const { slug } = req.params;
|
|
9
13
|
const cacheKey = `store:content-collection:${slug}`;
|
|
10
|
-
const cached = await caching.get({ key: cacheKey });
|
|
14
|
+
const cached = caching ? await caching.get({ key: cacheKey }) : null;
|
|
11
15
|
if (cached) {
|
|
12
16
|
res.json(cached);
|
|
13
17
|
return;
|
|
@@ -22,8 +26,9 @@ const GET = async (req, res) => {
|
|
|
22
26
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Content collection "${slug}" not found`);
|
|
23
27
|
}
|
|
24
28
|
const body = { content_collection };
|
|
25
|
-
|
|
29
|
+
if (caching)
|
|
30
|
+
await caching.set({ key: cacheKey, data: body, ttl: TTL });
|
|
26
31
|
res.json(body);
|
|
27
32
|
};
|
|
28
33
|
exports.GET = GET;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2NvbnRlbnQvW3NsdWddL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUEyRjtBQUkzRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUEsQ0FBQyxZQUFZO0FBRXJCLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdkIsR0FBaUQsRUFDakQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILElBQUksT0FBTyxHQUFpQyxJQUFJLENBQUE7SUFDaEQsSUFBSSxDQUFDO1FBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUE7SUFBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakYsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFM0IsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLElBQUksRUFBRSxDQUFBO0lBQ25ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQixPQUFNO0lBQ1AsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hELE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsR0FBRyxHQUFHLENBQUMsV0FBVztRQUNsQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUU7S0FDakIsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHVCQUF1QixJQUFJLGFBQWEsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLGtCQUFrQixFQUFFLENBQUE7SUFDbkMsSUFBSSxPQUFPO1FBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBeUIsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1RixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBN0JZLFFBQUEsR0FBRyxPQTZCZiJ9
|
|
@@ -4,10 +4,14 @@ exports.GET = void 0;
|
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const TTL = 300; // 5 minutes
|
|
6
6
|
const GET = async (req, res) => {
|
|
7
|
-
|
|
7
|
+
let caching = null;
|
|
8
|
+
try {
|
|
9
|
+
caching = req.scope.resolve(utils_1.Modules.CACHING) ?? null;
|
|
10
|
+
}
|
|
11
|
+
catch { /* noop */ }
|
|
8
12
|
const { q } = req.validatedQuery;
|
|
9
13
|
const cacheKey = `store:content-collections:${q ?? 'all'}`;
|
|
10
|
-
const cached = await caching.get({ key: cacheKey });
|
|
14
|
+
const cached = caching ? await caching.get({ key: cacheKey }) : null;
|
|
11
15
|
if (cached) {
|
|
12
16
|
res.json(cached);
|
|
13
17
|
return;
|
|
@@ -26,8 +30,9 @@ const GET = async (req, res) => {
|
|
|
26
30
|
limit: metadata?.take,
|
|
27
31
|
offset: metadata?.skip
|
|
28
32
|
};
|
|
29
|
-
|
|
33
|
+
if (caching)
|
|
34
|
+
await caching.set({ key: cacheKey, data: body, ttl: TTL });
|
|
30
35
|
res.json(body);
|
|
31
36
|
};
|
|
32
37
|
exports.GET = GET;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2NvbnRlbnQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQThFO0FBSTlFLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQSxDQUFDLFlBQVk7QUFFckIsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN2QixHQUFrRCxFQUNsRCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsSUFBSSxPQUFPLEdBQWlDLElBQUksQ0FBQTtJQUNoRCxJQUFJLENBQUM7UUFBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtJQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRixNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQTtJQUVoQyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQixPQUFNO0lBQ1AsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsR0FBRyxHQUFHLENBQUMsV0FBVztRQUNsQixPQUFPLEVBQUU7WUFDUixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzdDO0tBQ0QsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFJLEdBQUc7UUFDWixtQkFBbUI7UUFDbkIsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO1FBQ3RCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUk7S0FDdEIsQ0FBQTtJQUVELElBQUksT0FBTztRQUFFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQXlCLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQWpDWSxRQUFBLEdBQUcsT0FpQ2YifQ==
|