strapi-supergpt
Version:
A plugin that gives you the ability to integrate ChatGPT into strapi
118 lines (105 loc) • 3.19 kB
JavaScript
import { prefixPluginTranslations } from "@strapi/helper-plugin";
import pluginPkg from "../../package.json";
import pluginId from "./pluginId";
import Initializer from "./components/Initializer";
import PluginIcon from "./components/PluginIcon";
const name = pluginPkg.strapi.name;
export default {
register(app) {
app.addMenuLink({
to: `/plugins/${pluginId}`,
icon: PluginIcon,
intlLabel: {
id: `strapi-supergpt.name`,
defaultMessage: pluginPkg.strapi.displayName,
},
Component: async () => {
const component = await import(
/* webpackChunkName: "[request]" */
"./pages/App"
);
return component;
},
permissions: [],
});
app.createSettingSection(
{
id: pluginId,
intlLabel: {
id: `${pluginId}.name`,
defaultMessage: `${pluginPkg.strapi.displayName} ${pluginPkg.strapi.kind}`,
},
},
[
{
intlLabel: {
id: `${pluginId}.configuration`,
defaultMessage: "Configuration",
},
id: "strapi-supergpt.name",
to: `/settings/${pluginId}`,
Component: async () => {
const component = await import(
/* webpackChunkName: "stripe-page" */
"./pages/Settings"
);
return component;
},
},
],
);
app.registerPlugin({
id: pluginId,
initializer: Initializer,
isReady: false,
name,
});
// Register custom fields with translations
// const customFields = [
// { name: 'super-audio', type: 'json', component: import('./components/SuperFields/SuperAudio.jsx') },
// ];
// customFields.forEach(field => {
// app.customFields.register({
// name: field.name,
// pluginId: pluginId,
// type: field.type,
// intlLabel: {
// id: `${pluginId}.customFields.${field.name}.label`,
// defaultMessage: field.name.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' '),
// },
// intlDescription: {
// id: `${pluginId}.customFields.${field.name}.description`,
// defaultMessage: `A ${field.name.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ')} field powered by chatgpt`,
// },
// icon: PluginIcon,
// components: {
// Input: async () => await field.component,
// },
// });
// });
},
bootstrap(app) {},
async registerTrads({ locales }) {
const importedTrads = await Promise.all(
locales.map((locale) => {
return import(
/* webpackChunkName: "translation-[request]" */
`./translations/${locale}.json`
)
.then(({ default: data }) => {
return {
data: prefixPluginTranslations(data, pluginId),
locale,
};
})
.catch(() => {
return {
data: {},
locale,
};
});
}),
);
return Promise.resolve(importedTrads);
},
};