UNPKG

@rokmohar/medusa-plugin-meilisearch

Version:
62 lines (61 loc) 1.78 kB
"use strict"; const jsxRuntime = require("react/jsx-runtime"); const ui = require("@medusajs/ui"); const reactQuery = require("@tanstack/react-query"); const adminSdk = require("@medusajs/admin-sdk"); const SyncPage = () => { const { mutate, isPending } = reactQuery.useMutation({ mutationFn: () => fetch("/admin/meilisearch/sync", { method: "POST" }), onSuccess: () => { ui.toast.success("Successfully triggered data sync to Meilisearch"); }, onError: (err) => { console.error(err); ui.toast.error("Failed to sync data to Meilisearch"); } }); const handleSync = () => { mutate(); }; return /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-4", children: [ /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h1", children: "Meilisearch Sync" }), /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-500", children: "Manually trigger synchronization with Meilisearch." }), /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { onClick: handleSync, isLoading: isPending, variant: "primary", children: "Sync Now" }) ] }) }); }; const config = adminSdk.defineRouteConfig({ label: "Meilisearch" }); const widgetModule = { widgets: [] }; const routeModule = { routes: [ { Component: SyncPage, path: "/settings/meilisearch" } ] }; const menuItemModule = { menuItems: [ { label: config.label, icon: void 0, path: "/settings/meilisearch", nested: void 0 } ] }; const formModule = { customFields: {} }; const displayModule = { displays: {} }; const plugin = { widgetModule, routeModule, menuItemModule, formModule, displayModule }; module.exports = plugin;