
* Update eslint config to prevent default exports * exlucde vitest config from banned default exports * Remove default exports from Monitoring App * Replace default exports with named exports * Fix klaviyo import path * Replace default exports in CMS
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { createProtectedHandler, NextProtectedApiHandler } from "@saleor/app-sdk/handlers/next";
|
|
import { EncryptedMetadataManager } from "@saleor/app-sdk/settings-manager";
|
|
|
|
import { createClient } from "../../lib/graphql";
|
|
import { createSettingsManager } from "../../lib/metadata";
|
|
import { saleorApp } from "../../../saleor-app";
|
|
|
|
type ConfigurationKeysType =
|
|
| "PUBLIC_TOKEN"
|
|
| "CUSTOMER_CREATED_METRIC"
|
|
| "FULFILLMENT_CREATED_METRIC"
|
|
| "ORDER_CREATED_METRIC"
|
|
| "ORDER_FULLY_PAID_METRIC";
|
|
|
|
interface PostRequestBody {
|
|
data: {
|
|
key: ConfigurationKeysType;
|
|
value: string;
|
|
}[];
|
|
}
|
|
|
|
const getAppSettings = async (settingsManager: EncryptedMetadataManager) => [
|
|
{
|
|
key: "CUSTOMER_CREATED_METRIC",
|
|
value: (await settingsManager.get("CUSTOMER_CREATED_METRIC")) ?? "CUSTOMER_CREATED_METRIC",
|
|
},
|
|
{
|
|
key: "FULFILLMENT_CREATED_METRIC",
|
|
value:
|
|
(await settingsManager.get("FULFILLMENT_CREATED_METRIC")) ?? "FULFILLMENT_CREATED_METRIC",
|
|
},
|
|
{
|
|
key: "ORDER_CREATED_METRIC",
|
|
value: (await settingsManager.get("ORDER_CREATED_METRIC")) ?? "ORDER_CREATED_METRIC",
|
|
},
|
|
{
|
|
key: "ORDER_FULLY_PAID_METRIC",
|
|
value: (await settingsManager.get("ORDER_FULLY_PAID_METRIC")) ?? "ORDER_FULLY_PAID_METRIC",
|
|
},
|
|
{ key: "PUBLIC_TOKEN", value: await settingsManager.get("PUBLIC_TOKEN") },
|
|
];
|
|
|
|
const handler: NextProtectedApiHandler = async (request, res, ctx) => {
|
|
console.debug("Configuration handler called");
|
|
|
|
const {
|
|
authData: { token, saleorApiUrl, appId },
|
|
} = ctx;
|
|
const client = createClient(saleorApiUrl, async () => Promise.resolve({ token }));
|
|
|
|
const settings = createSettingsManager(client, appId);
|
|
|
|
switch (request.method!) {
|
|
case "GET":
|
|
return res.json({
|
|
success: true,
|
|
data: await getAppSettings(settings),
|
|
});
|
|
case "POST": {
|
|
await settings.set((request.body as PostRequestBody).data);
|
|
|
|
return res.json({
|
|
success: true,
|
|
data: await getAppSettings(settings),
|
|
});
|
|
}
|
|
default:
|
|
return res.status(405).end();
|
|
}
|
|
};
|
|
|
|
export default createProtectedHandler(handler, saleorApp.apl, ["MANAGE_APPS"]);
|