@alphabite/medusa-wishlist 0.5.12 → 0.6.0
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 +112 -2
- package/.medusa/server/src/admin/index.mjs +116 -6
- package/.medusa/server/src/api/admin/wishlists/settings/route.js +45 -0
- package/.medusa/server/src/api/admin/wishlists/settings/validators.js +9 -0
- package/.medusa/server/src/api/store/wishlists/[id]/add-item/route.js +7 -3
- package/.medusa/server/src/api/store/wishlists/[id]/transfer/route.js +31 -1
- package/.medusa/server/src/api/store/wishlists/import/route.js +46 -4
- package/.medusa/server/src/api/store/wishlists/route.js +17 -4
- package/.medusa/server/src/api/store/wishlists/settings/route.js +20 -0
- package/.medusa/server/src/modules/wishlist/migrations/Migration20260527120000.js +25 -0
- package/.medusa/server/src/modules/wishlist/models/wishlist-settings.js +11 -0
- package/.medusa/server/src/modules/wishlist/service.js +37 -3
- package/.medusa/server/src/modules/wishlist/types/settings.js +3 -0
- package/.medusa/types/modules/wishlist/models/wishlist-settings.d.ts +7 -0
- package/.medusa/types/modules/wishlist/service.d.ts +8 -0
- package/.medusa/types/modules/wishlist/types/settings.d.ts +5 -0
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@ const adminSdk = require("@medusajs/admin-sdk");
|
|
|
4
4
|
const ui = require("@medusajs/ui");
|
|
5
5
|
const reactQuery = require("@tanstack/react-query");
|
|
6
6
|
const Medusa = require("@medusajs/js-sdk");
|
|
7
|
+
const icons = require("@medusajs/icons");
|
|
8
|
+
const react = require("react");
|
|
7
9
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
8
10
|
const Medusa__default = /* @__PURE__ */ _interopDefault(Medusa);
|
|
9
11
|
const sdk = new Medusa__default.default({
|
|
@@ -26,6 +28,100 @@ const ProductWidget = ({ data: product }) => {
|
|
|
26
28
|
adminSdk.defineWidgetConfig({
|
|
27
29
|
zone: "product.details.before"
|
|
28
30
|
});
|
|
31
|
+
const QUERY_KEY = ["wishlist", "settings"];
|
|
32
|
+
const WishlistSettingsPage = () => {
|
|
33
|
+
const queryClient = reactQuery.useQueryClient();
|
|
34
|
+
const { data, isLoading } = reactQuery.useQuery({
|
|
35
|
+
queryKey: QUERY_KEY,
|
|
36
|
+
queryFn: () => sdk.client.fetch("/admin/wishlists/settings", {
|
|
37
|
+
method: "GET"
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
const [allowGuest, setAllowGuest] = react.useState(false);
|
|
41
|
+
const [allowMultiple, setAllowMultiple] = react.useState(false);
|
|
42
|
+
react.useEffect(() => {
|
|
43
|
+
if (data) {
|
|
44
|
+
setAllowGuest(data.allow_guest_wishlist);
|
|
45
|
+
setAllowMultiple(data.allow_multiple_wishlists);
|
|
46
|
+
}
|
|
47
|
+
}, [data]);
|
|
48
|
+
const isDirty = data !== void 0 && (allowGuest !== data.allow_guest_wishlist || allowMultiple !== data.allow_multiple_wishlists);
|
|
49
|
+
const update = reactQuery.useMutation({
|
|
50
|
+
mutationFn: (patch) => sdk.client.fetch("/admin/wishlists/settings", {
|
|
51
|
+
method: "PUT",
|
|
52
|
+
body: patch
|
|
53
|
+
}),
|
|
54
|
+
onSuccess: (next) => {
|
|
55
|
+
queryClient.setQueryData(QUERY_KEY, next);
|
|
56
|
+
ui.toast.success("Wishlist settings updated");
|
|
57
|
+
},
|
|
58
|
+
onError: (err) => {
|
|
59
|
+
const msg = err instanceof Error ? err.message : "Failed to update";
|
|
60
|
+
ui.toast.error(msg);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const onSave = () => {
|
|
64
|
+
if (!data) return;
|
|
65
|
+
const patch = {};
|
|
66
|
+
if (allowGuest !== data.allow_guest_wishlist) {
|
|
67
|
+
patch.allow_guest_wishlist = allowGuest;
|
|
68
|
+
}
|
|
69
|
+
if (allowMultiple !== data.allow_multiple_wishlists) {
|
|
70
|
+
patch.allow_multiple_wishlists = allowMultiple;
|
|
71
|
+
}
|
|
72
|
+
update.mutate(patch);
|
|
73
|
+
};
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "divide-y p-0", children: [
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
76
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Wishlists" }),
|
|
77
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-subtle", children: "Control who can use wishlists in your storefront." })
|
|
78
|
+
] }) }),
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-6 px-6 py-6", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-subtle", children: "Loading…" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "allow-guest", className: "font-medium", children: "Allow guest wishlists" }),
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Anonymous visitors can save items to a wishlist." })
|
|
84
|
+
] }),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
ui.Switch,
|
|
87
|
+
{
|
|
88
|
+
id: "allow-guest",
|
|
89
|
+
checked: allowGuest,
|
|
90
|
+
onCheckedChange: setAllowGuest
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
] }),
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
95
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
96
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "allow-multiple", className: "font-medium", children: "Allow multiple wishlists per customer" }),
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Signed-in customers can create more than one wishlist." })
|
|
98
|
+
] }),
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
+
ui.Switch,
|
|
101
|
+
{
|
|
102
|
+
id: "allow-multiple",
|
|
103
|
+
checked: allowMultiple,
|
|
104
|
+
onCheckedChange: setAllowMultiple
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
] }),
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
ui.Button,
|
|
110
|
+
{
|
|
111
|
+
variant: "primary",
|
|
112
|
+
onClick: onSave,
|
|
113
|
+
disabled: !isDirty || update.isPending,
|
|
114
|
+
isLoading: update.isPending,
|
|
115
|
+
children: "Save"
|
|
116
|
+
}
|
|
117
|
+
) })
|
|
118
|
+
] }) })
|
|
119
|
+
] });
|
|
120
|
+
};
|
|
121
|
+
const config = adminSdk.defineRouteConfig({
|
|
122
|
+
label: "Wishlists",
|
|
123
|
+
icon: icons.Heart
|
|
124
|
+
});
|
|
29
125
|
const widgetModule = { widgets: [
|
|
30
126
|
{
|
|
31
127
|
Component: ProductWidget,
|
|
@@ -33,10 +129,24 @@ const widgetModule = { widgets: [
|
|
|
33
129
|
}
|
|
34
130
|
] };
|
|
35
131
|
const routeModule = {
|
|
36
|
-
routes: [
|
|
132
|
+
routes: [
|
|
133
|
+
{
|
|
134
|
+
Component: WishlistSettingsPage,
|
|
135
|
+
path: "/settings/wishlists"
|
|
136
|
+
}
|
|
137
|
+
]
|
|
37
138
|
};
|
|
38
139
|
const menuItemModule = {
|
|
39
|
-
menuItems: [
|
|
140
|
+
menuItems: [
|
|
141
|
+
{
|
|
142
|
+
label: config.label,
|
|
143
|
+
icon: config.icon,
|
|
144
|
+
path: "/settings/wishlists",
|
|
145
|
+
nested: void 0,
|
|
146
|
+
rank: void 0,
|
|
147
|
+
translationNs: void 0
|
|
148
|
+
}
|
|
149
|
+
]
|
|
40
150
|
};
|
|
41
151
|
const formModule = { customFields: {} };
|
|
42
152
|
const displayModule = {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { defineWidgetConfig } from "@medusajs/admin-sdk";
|
|
3
|
-
import { Container, Heading, Text } from "@medusajs/ui";
|
|
4
|
-
import { useQuery } from "@tanstack/react-query";
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { defineWidgetConfig, defineRouteConfig } from "@medusajs/admin-sdk";
|
|
3
|
+
import { Container, Heading, Text, toast, Label, Switch, Button } from "@medusajs/ui";
|
|
4
|
+
import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query";
|
|
5
5
|
import Medusa from "@medusajs/js-sdk";
|
|
6
|
+
import { Heart } from "@medusajs/icons";
|
|
7
|
+
import { useState, useEffect } from "react";
|
|
6
8
|
const sdk = new Medusa({
|
|
7
9
|
baseUrl: __BACKEND_URL__ || "http://localhost:9000",
|
|
8
10
|
debug: process.env.NODE_ENV === "development",
|
|
@@ -23,6 +25,100 @@ const ProductWidget = ({ data: product }) => {
|
|
|
23
25
|
defineWidgetConfig({
|
|
24
26
|
zone: "product.details.before"
|
|
25
27
|
});
|
|
28
|
+
const QUERY_KEY = ["wishlist", "settings"];
|
|
29
|
+
const WishlistSettingsPage = () => {
|
|
30
|
+
const queryClient = useQueryClient();
|
|
31
|
+
const { data, isLoading } = useQuery({
|
|
32
|
+
queryKey: QUERY_KEY,
|
|
33
|
+
queryFn: () => sdk.client.fetch("/admin/wishlists/settings", {
|
|
34
|
+
method: "GET"
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
const [allowGuest, setAllowGuest] = useState(false);
|
|
38
|
+
const [allowMultiple, setAllowMultiple] = useState(false);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (data) {
|
|
41
|
+
setAllowGuest(data.allow_guest_wishlist);
|
|
42
|
+
setAllowMultiple(data.allow_multiple_wishlists);
|
|
43
|
+
}
|
|
44
|
+
}, [data]);
|
|
45
|
+
const isDirty = data !== void 0 && (allowGuest !== data.allow_guest_wishlist || allowMultiple !== data.allow_multiple_wishlists);
|
|
46
|
+
const update = useMutation({
|
|
47
|
+
mutationFn: (patch) => sdk.client.fetch("/admin/wishlists/settings", {
|
|
48
|
+
method: "PUT",
|
|
49
|
+
body: patch
|
|
50
|
+
}),
|
|
51
|
+
onSuccess: (next) => {
|
|
52
|
+
queryClient.setQueryData(QUERY_KEY, next);
|
|
53
|
+
toast.success("Wishlist settings updated");
|
|
54
|
+
},
|
|
55
|
+
onError: (err) => {
|
|
56
|
+
const msg = err instanceof Error ? err.message : "Failed to update";
|
|
57
|
+
toast.error(msg);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const onSave = () => {
|
|
61
|
+
if (!data) return;
|
|
62
|
+
const patch = {};
|
|
63
|
+
if (allowGuest !== data.allow_guest_wishlist) {
|
|
64
|
+
patch.allow_guest_wishlist = allowGuest;
|
|
65
|
+
}
|
|
66
|
+
if (allowMultiple !== data.allow_multiple_wishlists) {
|
|
67
|
+
patch.allow_multiple_wishlists = allowMultiple;
|
|
68
|
+
}
|
|
69
|
+
update.mutate(patch);
|
|
70
|
+
};
|
|
71
|
+
return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0", children: [
|
|
72
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
73
|
+
/* @__PURE__ */ jsx(Heading, { level: "h2", children: "Wishlists" }),
|
|
74
|
+
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "Control who can use wishlists in your storefront." })
|
|
75
|
+
] }) }),
|
|
76
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-6 px-6 py-6", children: isLoading ? /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "Loading…" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
78
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "allow-guest", className: "font-medium", children: "Allow guest wishlists" }),
|
|
80
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Anonymous visitors can save items to a wishlist." })
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
Switch,
|
|
84
|
+
{
|
|
85
|
+
id: "allow-guest",
|
|
86
|
+
checked: allowGuest,
|
|
87
|
+
onCheckedChange: setAllowGuest
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] }),
|
|
91
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
92
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
93
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "allow-multiple", className: "font-medium", children: "Allow multiple wishlists per customer" }),
|
|
94
|
+
/* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Signed-in customers can create more than one wishlist." })
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ jsx(
|
|
97
|
+
Switch,
|
|
98
|
+
{
|
|
99
|
+
id: "allow-multiple",
|
|
100
|
+
checked: allowMultiple,
|
|
101
|
+
onCheckedChange: setAllowMultiple
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] }),
|
|
105
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(
|
|
106
|
+
Button,
|
|
107
|
+
{
|
|
108
|
+
variant: "primary",
|
|
109
|
+
onClick: onSave,
|
|
110
|
+
disabled: !isDirty || update.isPending,
|
|
111
|
+
isLoading: update.isPending,
|
|
112
|
+
children: "Save"
|
|
113
|
+
}
|
|
114
|
+
) })
|
|
115
|
+
] }) })
|
|
116
|
+
] });
|
|
117
|
+
};
|
|
118
|
+
const config = defineRouteConfig({
|
|
119
|
+
label: "Wishlists",
|
|
120
|
+
icon: Heart
|
|
121
|
+
});
|
|
26
122
|
const widgetModule = { widgets: [
|
|
27
123
|
{
|
|
28
124
|
Component: ProductWidget,
|
|
@@ -30,10 +126,24 @@ const widgetModule = { widgets: [
|
|
|
30
126
|
}
|
|
31
127
|
] };
|
|
32
128
|
const routeModule = {
|
|
33
|
-
routes: [
|
|
129
|
+
routes: [
|
|
130
|
+
{
|
|
131
|
+
Component: WishlistSettingsPage,
|
|
132
|
+
path: "/settings/wishlists"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
34
135
|
};
|
|
35
136
|
const menuItemModule = {
|
|
36
|
-
menuItems: [
|
|
137
|
+
menuItems: [
|
|
138
|
+
{
|
|
139
|
+
label: config.label,
|
|
140
|
+
icon: config.icon,
|
|
141
|
+
path: "/settings/wishlists",
|
|
142
|
+
nested: void 0,
|
|
143
|
+
rank: void 0,
|
|
144
|
+
translationNs: void 0
|
|
145
|
+
}
|
|
146
|
+
]
|
|
37
147
|
};
|
|
38
148
|
const formModule = { customFields: {} };
|
|
39
149
|
const displayModule = {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.PUT = PUT;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const wishlist_1 = require("../../../../modules/wishlist");
|
|
7
|
+
const validators_1 = require("./validators");
|
|
8
|
+
async function GET(req, res) {
|
|
9
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
10
|
+
const service = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
11
|
+
try {
|
|
12
|
+
const view = await service.getSettings();
|
|
13
|
+
return res.status(200).json(view);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
logger.error("[admin/wishlists/settings] GET error:", error);
|
|
17
|
+
return res.status(500).json({
|
|
18
|
+
error: "Failed to load wishlist settings",
|
|
19
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function PUT(req, res) {
|
|
24
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
25
|
+
const service = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
26
|
+
const parsed = validators_1.UpdateWishlistSettingsSchema.safeParse(req.body);
|
|
27
|
+
if (!parsed.success) {
|
|
28
|
+
return res.status(400).json({
|
|
29
|
+
error: "Invalid wishlist settings payload",
|
|
30
|
+
issues: parsed.error.flatten(),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const view = await service.updateSettings(parsed.data);
|
|
35
|
+
return res.status(200).json(view);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger.error("[admin/wishlists/settings] PUT error:", error);
|
|
39
|
+
return res.status(500).json({
|
|
40
|
+
error: "Failed to update wishlist settings",
|
|
41
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3dpc2hsaXN0cy9zZXR0aW5ncy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGtCQWNDO0FBRUQsa0JBc0JDO0FBM0NELHFEQUFzRTtBQUN0RSwyREFBK0Q7QUFFL0QsNkNBQTREO0FBRXJELEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFDO0lBRTFFLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsS0FBSyxFQUFFLGtDQUFrQztZQUN6QyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTtTQUNsRSxDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sTUFBTSxHQUFHLHlDQUE0QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLEtBQUssRUFBRSxtQ0FBbUM7WUFDMUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsS0FBSyxFQUFFLG9DQUFvQztZQUMzQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTtTQUNsRSxDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateWishlistSettingsSchema = void 0;
|
|
4
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
5
|
+
exports.UpdateWishlistSettingsSchema = zod_1.z.object({
|
|
6
|
+
allow_guest_wishlist: zod_1.z.boolean().optional(),
|
|
7
|
+
allow_multiple_wishlists: zod_1.z.boolean().optional(),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vd2lzaGxpc3RzL3NldHRpbmdzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTRDO0FBRS9CLFFBQUEsNEJBQTRCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRCxvQkFBb0IsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLHdCQUF3QixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDakQsQ0FBQyxDQUFDIn0=
|
|
@@ -10,8 +10,9 @@ const POST = async (req, res) => {
|
|
|
10
10
|
const customer_id = req?.auth_context?.actor_id;
|
|
11
11
|
const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
12
12
|
const options = wishlistService._options;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const settings = await wishlistService.getSettings();
|
|
14
|
+
if (!settings.allow_guest_wishlist && !customer_id) {
|
|
15
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are not allowed");
|
|
15
16
|
}
|
|
16
17
|
try {
|
|
17
18
|
const query = req.scope.resolve("query");
|
|
@@ -20,6 +21,9 @@ const POST = async (req, res) => {
|
|
|
20
21
|
filters: { id },
|
|
21
22
|
fields: ["id", "customer_id"],
|
|
22
23
|
});
|
|
24
|
+
if (!settings.allow_guest_wishlist && wishlist[0]?.customer_id === null) {
|
|
25
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are not allowed");
|
|
26
|
+
}
|
|
23
27
|
if (wishlist[0]?.customer_id && !customer_id) {
|
|
24
28
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "You are not authorized to add items to this wishlist");
|
|
25
29
|
}
|
|
@@ -60,4 +64,4 @@ const POST = async (req, res) => {
|
|
|
60
64
|
}
|
|
61
65
|
};
|
|
62
66
|
exports.POST = POST;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9baWRdL2FkZC1pdGVtL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLDhEQUFrRTtBQUVsRSxxREFBd0Q7QUFFakQsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUF1RCxFQUN2RCxHQUFpQyxFQUNqQyxFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0MsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN4QyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztJQUVoRCxNQUFNLGVBQWUsR0FDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXdCLDBCQUFlLENBQUMsQ0FBQztJQUM1RCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO0lBRXpDLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXJELElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixpQ0FBaUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6QyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FB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
|
|
@@ -8,6 +8,36 @@ async function POST(req, res) {
|
|
|
8
8
|
const { id } = req.params;
|
|
9
9
|
try {
|
|
10
10
|
const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
11
|
+
const settings = await wishlistService.getSettings();
|
|
12
|
+
const query = req.scope.resolve("query");
|
|
13
|
+
// Single-list mode: if multi is disabled and the customer already has a list,
|
|
14
|
+
// merge guest items into the existing list and delete the guest list.
|
|
15
|
+
if (!settings.allow_multiple_wishlists) {
|
|
16
|
+
const existing = await wishlistService.listWishlists({ customer_id }, { take: 1 });
|
|
17
|
+
const target = existing[0];
|
|
18
|
+
if (target && target.id !== id) {
|
|
19
|
+
const { data: guest_items } = await query.graph({
|
|
20
|
+
entity: "wishlist_item",
|
|
21
|
+
filters: { wishlist_id: id },
|
|
22
|
+
fields: ["id", "product_variant_id", "product_id"],
|
|
23
|
+
});
|
|
24
|
+
const { data: target_items } = await query.graph({
|
|
25
|
+
entity: "wishlist_item",
|
|
26
|
+
filters: { wishlist_id: target.id },
|
|
27
|
+
fields: ["id", "product_variant_id"],
|
|
28
|
+
});
|
|
29
|
+
const existingVariantIds = new Set(target_items.map((i) => i.product_variant_id));
|
|
30
|
+
const itemsToCopy = guest_items.filter((i) => !existingVariantIds.has(i.product_variant_id));
|
|
31
|
+
await Promise.all(itemsToCopy.map((item) => wishlistService.createWishlistItems({
|
|
32
|
+
product_variant_id: item.product_variant_id,
|
|
33
|
+
product_id: item.product_id,
|
|
34
|
+
wishlist_id: target.id,
|
|
35
|
+
})));
|
|
36
|
+
await wishlistService.deleteWishlists(id);
|
|
37
|
+
return res.status(200).json({ id: target.id });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Default path: reassign the guest list to the customer.
|
|
11
41
|
await wishlistService.updateWishlists({ id, customer_id });
|
|
12
42
|
return res.status(200).json({ id });
|
|
13
43
|
}
|
|
@@ -16,4 +46,4 @@ async function POST(req, res) {
|
|
|
16
46
|
return res.status(500).end();
|
|
17
47
|
}
|
|
18
48
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9baWRdL3RyYW5zZmVyL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esb0JBaUVDO0FBeEVELDhEQUFrRTtBQU8zRCxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQStCLEVBQUUsR0FBMkM7SUFDckcsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0MsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDOUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFMUIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXdCLDBCQUFlLENBQUMsQ0FBQztRQUNsRixNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6Qyw4RUFBOEU7UUFDOUUsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQ2xELEVBQUUsV0FBVyxFQUFFLEVBQ2YsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ1osQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztvQkFDOUMsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7b0JBQzVCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxZQUFZLENBQUM7aUJBQ25ELENBQUMsQ0FBQztnQkFFSCxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztvQkFDL0MsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO29CQUNuQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3JDLENBQUMsQ0FBQztnQkFFSCxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUNoQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FDOUMsQ0FBQztnQkFDRixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQ3JELENBQUM7Z0JBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN2QixlQUFlLENBQUMsbUJBQW1CLENBQUM7b0JBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxFQUFFO2lCQUN2QixDQUFDLENBQ0gsQ0FDRixDQUFDO2dCQUVGLE1BQU0sZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUUzRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -10,8 +10,9 @@ const POST = async (req, res) => {
|
|
|
10
10
|
const customer_id = req?.auth_context?.actor_id;
|
|
11
11
|
const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
12
12
|
const options = wishlistService._options;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const settings = await wishlistService.getSettings();
|
|
14
|
+
if (!settings.allow_guest_wishlist && !customer_id) {
|
|
15
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are not allowed");
|
|
15
16
|
}
|
|
16
17
|
let wishlist_id;
|
|
17
18
|
try {
|
|
@@ -24,9 +25,50 @@ const POST = async (req, res) => {
|
|
|
24
25
|
if (!wishlist_id) {
|
|
25
26
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Wishlist not found for the provided share token");
|
|
26
27
|
}
|
|
28
|
+
const query = req.scope.resolve("query");
|
|
27
29
|
try {
|
|
30
|
+
// Single-list mode: if multi is disabled and the customer already has a list,
|
|
31
|
+
// replace its items with the source list's items in place.
|
|
32
|
+
if (!settings.allow_multiple_wishlists && customer_id) {
|
|
33
|
+
const existing = await wishlistService.listWishlists({ customer_id }, { take: 1 });
|
|
34
|
+
const target = existing[0];
|
|
35
|
+
if (target) {
|
|
36
|
+
// Load source items
|
|
37
|
+
const { data: source_items } = await query.graph({
|
|
38
|
+
entity: "wishlist_item",
|
|
39
|
+
filters: { wishlist_id },
|
|
40
|
+
fields: ["id", "product_variant_id", "product_id"],
|
|
41
|
+
});
|
|
42
|
+
// Load target items so we can delete them
|
|
43
|
+
const { data: target_items } = await query.graph({
|
|
44
|
+
entity: "wishlist_item",
|
|
45
|
+
filters: { wishlist_id: target.id },
|
|
46
|
+
fields: ["id"],
|
|
47
|
+
});
|
|
48
|
+
if (target_items.length > 0) {
|
|
49
|
+
await wishlistService.deleteWishlistItems(target_items.map((i) => i.id));
|
|
50
|
+
}
|
|
51
|
+
await Promise.all(source_items.map((item) => wishlistService.createWishlistItems({
|
|
52
|
+
product_variant_id: item.product_variant_id,
|
|
53
|
+
product_id: item.product_id,
|
|
54
|
+
wishlist_id: target.id,
|
|
55
|
+
})));
|
|
56
|
+
// Re-fetch the enriched items for the response
|
|
57
|
+
const { data: enriched_items } = await query.graph({
|
|
58
|
+
entity: "wishlist_item",
|
|
59
|
+
filters: { wishlist_id: target.id },
|
|
60
|
+
fields: [...utils_2.defaultItemsFields, ...(options?.wishlistItemsFields || [])],
|
|
61
|
+
});
|
|
62
|
+
return res.status(200).json({
|
|
63
|
+
...target,
|
|
64
|
+
items: enriched_items,
|
|
65
|
+
items_count: enriched_items.length,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Default path: create a new wishlist via importWishlist (used when multi is
|
|
70
|
+
// enabled, or when the customer has no existing list).
|
|
28
71
|
const created_wishlist = await wishlistService.importWishlist({ id: wishlist_id, customer_id });
|
|
29
|
-
const query = req.scope.resolve("query");
|
|
30
72
|
const { data: wishlist_items } = await query.graph({
|
|
31
73
|
entity: "wishlist_item",
|
|
32
74
|
filters: {
|
|
@@ -42,4 +84,4 @@ const POST = async (req, res) => {
|
|
|
42
84
|
}
|
|
43
85
|
};
|
|
44
86
|
exports.POST = POST;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9pbXBvcnQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXdEO0FBRXhELDJEQUErRDtBQUUvRCxtREFBNkQ7QUFFdEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQXdELEVBQUUsR0FBNkIsRUFBRSxFQUFFO0lBQ3BILE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTNDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQzFDLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO0lBRWhELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF3QiwwQkFBZSxDQUFDLENBQUM7SUFDbEYsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyRCxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsTUFBTSxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksV0FBK0IsQ0FBQztJQUVwQyxJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEUsV0FBVyxHQUFHLFlBQVksRUFBRSxXQUFXLENBQUM7SUFDMUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUks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
|
|
@@ -55,9 +55,22 @@ async function POST(req, res) {
|
|
|
55
55
|
const customer_id = req?.auth_context?.actor_id;
|
|
56
56
|
const { ...input } = req.body;
|
|
57
57
|
const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
58
|
-
const
|
|
59
|
-
if (!
|
|
60
|
-
throw new utils_2.MedusaError(utils_2.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are
|
|
58
|
+
const settings = await wishlistService.getSettings();
|
|
59
|
+
if (!settings.allow_guest_wishlist && !customer_id) {
|
|
60
|
+
throw new utils_2.MedusaError(utils_2.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are not allowed");
|
|
61
|
+
}
|
|
62
|
+
// Multi-wishlist idempotency: if multi is disabled and the customer
|
|
63
|
+
// already has a list, return that list instead of creating another.
|
|
64
|
+
if (!settings.allow_multiple_wishlists && customer_id) {
|
|
65
|
+
const existing = await wishlistService.listWishlists({ customer_id }, { take: 1 });
|
|
66
|
+
if (existing.length > 0) {
|
|
67
|
+
const list = existing[0];
|
|
68
|
+
return res.status(200).json({
|
|
69
|
+
...list,
|
|
70
|
+
items_count: 0,
|
|
71
|
+
items: [],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
61
74
|
}
|
|
62
75
|
try {
|
|
63
76
|
const wishlist = await wishlistService.createWishlists({
|
|
@@ -71,4 +84,4 @@ async function POST(req, res) {
|
|
|
71
84
|
return res.status(500).end();
|
|
72
85
|
}
|
|
73
86
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLGtCQXNEQztBQUlELG9CQTBDQztBQXhHRCx3REFBNEQ7QUFDNUQsZ0RBQXlFO0FBQ3pFLHFEQUFvRTtBQUU3RCxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUF3RCxFQUN4RCxHQUE4QztJQUU5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDekMsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFFNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLFVBQVU7WUFDbEIsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFO1lBQ3hCLEdBQUcsR0FBRyxDQUFDLFdBQVc7WUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDN0UsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQWUsT0FBTyxD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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const wishlist_1 = require("../../../../modules/wishlist");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
8
|
+
const service = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
9
|
+
try {
|
|
10
|
+
const view = await service.getSettings();
|
|
11
|
+
return res.status(200).json(view);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
logger.error("[store/wishlists/settings] GET error:", error);
|
|
15
|
+
return res.status(500).json({
|
|
16
|
+
error: "Failed to load wishlist settings",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9zZXR0aW5ncy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQWFDO0FBakJELHFEQUFzRTtBQUN0RSwyREFBK0Q7QUFHeEQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF3QiwwQkFBZSxDQUFDLENBQUM7SUFFMUUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixLQUFLLEVBQUUsa0NBQWtDO1NBQzFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260527120000 = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20260527120000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "wishlist_settings" (
|
|
8
|
+
"id" text not null,
|
|
9
|
+
"allow_guest_wishlist" boolean not null default false,
|
|
10
|
+
"allow_multiple_wishlists" boolean not null default false,
|
|
11
|
+
"created_at" timestamptz not null default now(),
|
|
12
|
+
"updated_at" timestamptz not null default now(),
|
|
13
|
+
"deleted_at" timestamptz null,
|
|
14
|
+
constraint "wishlist_settings_pkey" primary key ("id")
|
|
15
|
+
);`);
|
|
16
|
+
this.addSql(`insert into "wishlist_settings" ("id", "allow_guest_wishlist", "allow_multiple_wishlists")
|
|
17
|
+
values ('wls_singleton', false, false)
|
|
18
|
+
on conflict ("id") do nothing;`);
|
|
19
|
+
}
|
|
20
|
+
async down() {
|
|
21
|
+
this.addSql(`drop table if exists "wishlist_settings" cascade;`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Migration20260527120000 = Migration20260527120000;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA1MjcxMjAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNTI3MTIwMDAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQ3BELEtBQUssQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FDVDs7Ozs7Ozs7U0FRRyxDQUNKLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUNUOztzQ0FFZ0MsQ0FDakMsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUF4QkQsMERBd0JDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WishlistSettings = void 0;
|
|
4
|
+
// medusa-source/wishlist/src/modules/wishlist/models/wishlist-settings.ts
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
exports.WishlistSettings = utils_1.model.define("wishlist_settings", {
|
|
7
|
+
id: utils_1.model.id({ prefix: "wls" }).primaryKey(),
|
|
8
|
+
allow_guest_wishlist: utils_1.model.boolean().default(false),
|
|
9
|
+
allow_multiple_wishlists: utils_1.model.boolean().default(false),
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3Qtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC9tb2RlbHMvd2lzaGxpc3Qtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMEVBQTBFO0FBQzFFLHFEQUFrRDtBQUdyQyxRQUFBLGdCQUFnQixHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7SUFDaEUsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDNUMsb0JBQW9CLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDcEQsd0JBQXdCLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Q0FDekQsQ0FBQyxDQUFDIn0=
|
|
@@ -18,9 +18,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const utils_1 = require("@medusajs/framework/utils");
|
|
19
19
|
const wishlist_1 = require("./models/wishlist");
|
|
20
20
|
const wishlist_item_1 = require("./models/wishlist-item");
|
|
21
|
+
const wishlist_settings_1 = require("./models/wishlist-settings");
|
|
21
22
|
const utils_2 = require("@medusajs/framework/utils");
|
|
22
23
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
23
24
|
const zod_1 = require("@medusajs/framework/zod");
|
|
25
|
+
const WISHLIST_SETTINGS_SINGLETON_ID = "wls_singleton";
|
|
24
26
|
const optionsSchema = zod_1.z.object({
|
|
25
27
|
wishlistFields: zod_1.z.array(zod_1.z.string()).optional(),
|
|
26
28
|
wishlistItemsFields: zod_1.z.array(zod_1.z.string()).optional(),
|
|
@@ -32,6 +34,7 @@ const optionsSchema = zod_1.z.object({
|
|
|
32
34
|
class WishlistModuleService extends (0, utils_1.MedusaService)({
|
|
33
35
|
Wishlist: wishlist_1.Wishlist,
|
|
34
36
|
WishlistItem: wishlist_item_1.WishlistItem,
|
|
37
|
+
WishlistSettings: wishlist_settings_1.WishlistSettings,
|
|
35
38
|
}) {
|
|
36
39
|
static validateOptions(_options) {
|
|
37
40
|
const parsed = optionsSchema.safeParse(_options);
|
|
@@ -54,8 +57,8 @@ class WishlistModuleService extends (0, utils_1.MedusaService)({
|
|
|
54
57
|
const wishlist_items_count = await context.manager?.count(wishlist_item_1.WishlistItem, {
|
|
55
58
|
wishlist: {
|
|
56
59
|
...(customer_id && { customer_id }),
|
|
57
|
-
...(wishlist_id &&
|
|
58
|
-
|
|
60
|
+
...(wishlist_id && { id: wishlist_id }),
|
|
61
|
+
...(wishlist_id && !customer_id && { customer_id: null }),
|
|
59
62
|
},
|
|
60
63
|
});
|
|
61
64
|
return Number(wishlist_items_count || 0);
|
|
@@ -90,6 +93,37 @@ class WishlistModuleService extends (0, utils_1.MedusaService)({
|
|
|
90
93
|
}));
|
|
91
94
|
return { ...newWishlist, items_count: wishlist.items.length, items: [] };
|
|
92
95
|
}
|
|
96
|
+
async getSettings() {
|
|
97
|
+
const rows = await this.listWishlistSettings({ id: WISHLIST_SETTINGS_SINGLETON_ID }, { take: 1 });
|
|
98
|
+
const row = rows[0];
|
|
99
|
+
if (!row) {
|
|
100
|
+
return {
|
|
101
|
+
allow_guest_wishlist: this._options?.allowGuestWishlist ?? false,
|
|
102
|
+
allow_multiple_wishlists: false,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
allow_guest_wishlist: row.allow_guest_wishlist,
|
|
107
|
+
allow_multiple_wishlists: row.allow_multiple_wishlists,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
async updateSettings(patch) {
|
|
111
|
+
const writePatch = {};
|
|
112
|
+
if (typeof patch.allow_guest_wishlist === "boolean") {
|
|
113
|
+
writePatch.allow_guest_wishlist = patch.allow_guest_wishlist;
|
|
114
|
+
}
|
|
115
|
+
if (typeof patch.allow_multiple_wishlists === "boolean") {
|
|
116
|
+
writePatch.allow_multiple_wishlists = patch.allow_multiple_wishlists;
|
|
117
|
+
}
|
|
118
|
+
if (Object.keys(writePatch).length === 0) {
|
|
119
|
+
return this.getSettings();
|
|
120
|
+
}
|
|
121
|
+
await this.updateWishlistSettings({
|
|
122
|
+
id: WISHLIST_SETTINGS_SINGLETON_ID,
|
|
123
|
+
...writePatch,
|
|
124
|
+
});
|
|
125
|
+
return this.getSettings();
|
|
126
|
+
}
|
|
93
127
|
}
|
|
94
128
|
exports.default = WishlistModuleService;
|
|
95
129
|
__decorate([
|
|
@@ -106,4 +140,4 @@ __decorate([
|
|
|
106
140
|
__metadata("design:paramtypes", [Object, Object]),
|
|
107
141
|
__metadata("design:returntype", Promise)
|
|
108
142
|
], WishlistModuleService.prototype, "totalItemsCount", null);
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3dpc2hsaXN0L3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFJbUM7QUFDbkMsZ0RBQTZDO0FBQzdDLDBEQUFzRDtBQUN0RCxrRUFBOEQ7QUFDOUQscURBQTBEO0FBRzFELGdFQUErQjtBQUMvQixpREFBNEM7QUFPNUMsTUFBTSw4QkFBOEIsR0FBRyxlQUFlLENBQUM7QUEyQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsY0FBYyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzlDLG1CQUFtQixFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ25ELG9CQUFvQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2hELHdCQUF3QixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9DLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzlDLGdCQUFnQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Q0FDdkQsQ0FBQyxDQUFDO0FBSUgsTUFBcUIscUJBQXNCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQy9ELFFBQVEsRUFBUixtQkFBUTtJQUNSLFlBQVksRUFBWiw0QkFBWTtJQUNaLGdCQUFnQixFQUFoQixvQ0FBZ0I7Q0FDakIsQ0FBQztJQUdBLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLFFBQTRDO1FBRTVDLE1BQU0s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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC90eXBlcy9zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InferTypeOf } from "@medusajs/framework/types";
|
|
2
|
+
export declare const WishlistSettings: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
3
|
+
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
4
|
+
allow_guest_wishlist: import("@medusajs/framework/utils").BooleanProperty;
|
|
5
|
+
allow_multiple_wishlists: import("@medusajs/framework/utils").BooleanProperty;
|
|
6
|
+
}>, "wishlist_settings">;
|
|
7
|
+
export type WishlistSettingsType = InferTypeOf<typeof WishlistSettings>;
|
|
@@ -2,6 +2,7 @@ import { Context } from "@medusajs/framework/types";
|
|
|
2
2
|
import { EntityManager } from "@mikro-orm/knex";
|
|
3
3
|
import { z } from "@medusajs/framework/zod";
|
|
4
4
|
import { Wishlist as WishlistType } from "../../api/store/wishlists/types";
|
|
5
|
+
import type { WishlistSettingsView, WishlistSettingsPatch } from "./types/settings";
|
|
5
6
|
/**
|
|
6
7
|
* Options for configuring the Alphabite Wishlist Plugin
|
|
7
8
|
*/
|
|
@@ -71,6 +72,11 @@ declare const WishlistModuleService_base: import("@medusajs/framework/utils").Me
|
|
|
71
72
|
items: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "wishlist_item">>;
|
|
72
73
|
}>, "wishlist">, undefined>;
|
|
73
74
|
}>, "wishlist_item">;
|
|
75
|
+
readonly WishlistSettings: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
76
|
+
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
77
|
+
allow_guest_wishlist: import("@medusajs/framework/utils").BooleanProperty;
|
|
78
|
+
allow_multiple_wishlists: import("@medusajs/framework/utils").BooleanProperty;
|
|
79
|
+
}>, "wishlist_settings">;
|
|
74
80
|
}>>;
|
|
75
81
|
export default class WishlistModuleService extends WishlistModuleService_base {
|
|
76
82
|
_options: AlphabiteWishlistPluginOptionsType;
|
|
@@ -91,5 +97,7 @@ export default class WishlistModuleService extends WishlistModuleService_base {
|
|
|
91
97
|
id: string;
|
|
92
98
|
customer_id?: string;
|
|
93
99
|
}): Promise<WishlistType>;
|
|
100
|
+
getSettings(): Promise<WishlistSettingsView>;
|
|
101
|
+
updateSettings(patch: WishlistSettingsPatch): Promise<WishlistSettingsView>;
|
|
94
102
|
}
|
|
95
103
|
export {};
|