2023-04-25 16:20:20 +00:00
|
|
|
import { Box, Text } from "@saleor/macaw-ui/next";
|
|
|
|
import { AppSection } from "../../components/AppSection";
|
|
|
|
import { AlgoliaConfigurationForm } from "../../components/AlgoliaConfigurationForm";
|
|
|
|
import { ImportProductsToAlgolia } from "../../components/ImportProductsToAlgolia";
|
2023-04-26 10:20:08 +00:00
|
|
|
import { actions, useAppBridge } from "@saleor/app-sdk/app-bridge";
|
|
|
|
|
|
|
|
const SALEOR_EVENTS_DOCS_URL =
|
|
|
|
"https://docs.saleor.io/docs/3.x/developer/extending/apps/asynchronous-webhooks#available-webhook-events";
|
|
|
|
|
|
|
|
const ALGOLIA_DASHBOARD_TOKENS_URL = "https://www.algolia.com/account/api-keys/all";
|
2023-04-25 16:20:20 +00:00
|
|
|
|
|
|
|
export const ConfigurationView = () => {
|
2023-04-26 10:20:08 +00:00
|
|
|
const { appBridge } = useAppBridge();
|
|
|
|
|
2023-04-25 16:20:20 +00:00
|
|
|
return (
|
|
|
|
<Box>
|
|
|
|
<Text variant={"hero"} size={"medium"} as={"h1"}>
|
|
|
|
Configuration
|
|
|
|
</Text>
|
2023-04-26 10:20:08 +00:00
|
|
|
<Box marginTop={4} __marginBottom={"100px"}>
|
|
|
|
<Text as="p" marginBottom={4}>
|
|
|
|
To configure the App, fill in your Algolia settings to enable products indexing.
|
|
|
|
</Text>
|
|
|
|
<Text as="p" marginBottom={4}>
|
|
|
|
Once the App is configured, you will be able to perform initial index of your existing
|
|
|
|
Saleor database.
|
|
|
|
</Text>
|
|
|
|
<Text as="p">
|
|
|
|
The app supports following{" "}
|
|
|
|
<a
|
|
|
|
onClick={(e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* TODO extract shared handler
|
|
|
|
*/
|
|
|
|
appBridge?.dispatch(
|
|
|
|
actions.Redirect({
|
|
|
|
to: SALEOR_EVENTS_DOCS_URL,
|
|
|
|
newContext: true,
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
href={SALEOR_EVENTS_DOCS_URL}
|
|
|
|
>
|
|
|
|
events
|
|
|
|
</a>{" "}
|
|
|
|
that will synchronize Algolia in the background:
|
|
|
|
</Text>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_CREATED</code>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_UPDATED</code>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_DELETED</code>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_VARIANT_CREATED</code>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_VARIANT_UPDATED</code>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<code>- PRODUCT_VARIANT_DELETED</code>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</Box>
|
|
|
|
|
2023-04-25 16:20:20 +00:00
|
|
|
<AppSection
|
|
|
|
heading="Algolia settings"
|
|
|
|
mainContent={<AlgoliaConfigurationForm />}
|
2023-04-26 10:20:08 +00:00
|
|
|
sideContent={
|
|
|
|
<Box>
|
|
|
|
<Text as="p" marginBottom={4}>
|
|
|
|
Provide Algolia settings.{" "}
|
|
|
|
</Text>
|
|
|
|
<Text>
|
|
|
|
You can find your tokens in Algolia Dashboard{" "}
|
|
|
|
<a
|
|
|
|
href={ALGOLIA_DASHBOARD_TOKENS_URL}
|
|
|
|
onClick={(e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
appBridge?.dispatch(
|
|
|
|
actions.Redirect({
|
|
|
|
to: ALGOLIA_DASHBOARD_TOKENS_URL,
|
|
|
|
newContext: true,
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
here
|
|
|
|
</a>
|
|
|
|
</Text>
|
|
|
|
</Box>
|
|
|
|
}
|
2023-04-25 16:20:20 +00:00
|
|
|
/>
|
|
|
|
<AppSection
|
|
|
|
includePadding
|
|
|
|
marginTop={13}
|
|
|
|
heading="Index products"
|
|
|
|
mainContent={<ImportProductsToAlgolia />}
|
|
|
|
sideContent={
|
|
|
|
<Box>
|
|
|
|
<Text>Perform initial index of all products in your Saleor database</Text>
|
|
|
|
</Box>
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
</Box>
|
|
|
|
);
|
|
|
|
};
|