From b647c64c1812e2bb048dd204f40ff060c970bcc6 Mon Sep 17 00:00:00 2001 From: shahriarkh Date: Fri, 19 Jan 2024 17:02:57 +0330 Subject: [PATCH] start refactoring api --- admin/src/api/explorer-api.js | 11 --- admin/src/pages/HomePage/index.js | 84 ++++++++++++++++------- server/controllers/explorer-controller.js | 42 +++++++----- server/index.js | 22 +++--- server/routes/index.js | 5 +- strapi-admin.js | 4 +- 6 files changed, 99 insertions(+), 69 deletions(-) delete mode 100644 admin/src/api/explorer-api.js diff --git a/admin/src/api/explorer-api.js b/admin/src/api/explorer-api.js deleted file mode 100644 index bbec9d0..0000000 --- a/admin/src/api/explorer-api.js +++ /dev/null @@ -1,11 +0,0 @@ -import { request } from "@strapi/helper-plugin"; - -const explorerRequests = { - getContentTypes: async () => { - return await request("/content-type-explorer/get-content-types", { - method: "GET", - }); - }, -}; - -export default explorerRequests; diff --git a/admin/src/pages/HomePage/index.js b/admin/src/pages/HomePage/index.js index 8787f82..49f9b10 100644 --- a/admin/src/pages/HomePage/index.js +++ b/admin/src/pages/HomePage/index.js @@ -1,28 +1,39 @@ -/* - * - * HomePage - * - */ - import React, { useCallback, useEffect, useMemo, useState } from "react"; +import { useFetchClient } from "@strapi/helper-plugin"; import { HeaderLayout, Icon, LinkButton } from "@strapi/design-system"; -import explorerRequests from "../../api/explorer-api"; +// import explorerRequests from "../../api/explorer-api"; import { Question, Search, Drag } from "@strapi/icons"; import { useTheme } from "styled-components"; -import { SmartBezierEdge, SmartStepEdge, SmartStraightEdge } from "@tisoap/react-flow-smart-edge"; +import { + SmartBezierEdge, + SmartStepEdge, + SmartStraightEdge, +} from "@tisoap/react-flow-smart-edge"; import CustomNode from "../../components/CustomNode"; -import { createEdegs, createNodes, updateEdges, updateNodes } from "../../utils/dataUtils"; -import { Background, ControlButton, Controls, ReactFlow, useEdgesState, useNodesState } from "reactflow"; +import { + createEdegs, + createNodes, + updateEdges, + updateNodes, +} from "../../utils/dataUtils"; +import { + Background, + ControlButton, + Controls, + ReactFlow, + useEdgesState, + useNodesState, +} from "reactflow"; import { getBackgroundColor } from "../../utils/themeUtils"; -import "reactflow/dist/style.css"; import OptionsBar from "../../components/OptionsBar"; + +import "reactflow/dist/style.css"; import "./styles.css"; const HomePage = () => { const theme = useTheme(); - + const { get } = useFetchClient(); const [contentTypes, setContentTypes] = useState([]); - const [options, setOptions] = useState({ snapToGrid: false, showTypes: true, @@ -57,19 +68,25 @@ const HomePage = () => { const [nodes, setNodes, onNodesChange] = useNodesState([]); const [edges, setEdges, onEdgesChange] = useEdgesState([]); - const onConnect = useCallback((params) => setEdges((eds) => addEdge(params, eds)), [setEdges]); + const onConnect = useCallback( + (params) => setEdges((eds) => addEdge(params, eds)), + [setEdges] + ); // get (and filter) content-types useEffect(() => { const fetchData = async () => { - let allTypes = await explorerRequests.getContentTypes(); - if (!options.showAdminTypes) { - allTypes = allTypes.filter((x) => !x.name.startsWith("admin::")); - } - if (!options.showPluginTypes) { - allTypes = allTypes.filter((x) => !x.name.startsWith("plugin::")); - } - setContentTypes(allTypes); + const data = await get(`/strapi-content-type-explorer/get-types`); + // console.log("fetching data"); + // let allTypes = await explorerRequests.getContentTypes(); + console.log("Data is", data); + // if (!options.showAdminTypes) { + // allTypes = allTypes.filter((x) => !x.name.startsWith("admin::")); + // } + // if (!options.showPluginTypes) { + // allTypes = allTypes.filter((x) => !x.name.startsWith("plugin::")); + // } + // setContentTypes(allTypes); }; fetchData(); @@ -93,7 +110,13 @@ const HomePage = () => { useEffect(() => { let newNodes = updateNodes(nodes, options); setNodes(newNodes); - }, [setNodes, options.showTypes, options.showIcons, options.showRelationsOnly, options.showDefaultFields]); + }, [ + setNodes, + options.showTypes, + options.showIcons, + options.showRelationsOnly, + options.showDefaultFields, + ]); return ( <> @@ -110,7 +133,10 @@ const HomePage = () => { } /> - + xxxxxxx + {/* */} + nodes: are{JSON.stringify(nodes)} + content types: {JSON.stringify(contentTypes)}
{ "--button-hover": theme.colors.buttonPrimary500, }} > - toggleOption("scrollMode")} title="Toggle Mouse Wheel Behavior (Zoom/Scroll)"> - + toggleOption("scrollMode")} + title="Toggle Mouse Wheel Behavior (Zoom/Scroll)" + > + ({ +// getContentTypes(ctx) { +// const data = strapi +// .plugin("content-type-explorer") +// .service("explorerService") +// .getContentTypes(); + +// let neededData = Object.keys(data).map((key) => ({ +// name: key, +// attributes: data[key]["attributes"], +// info: data[key]["info"], +// // kind: data[key]["kind"], +// key: data[key]["uid"], +// })); + +// ctx.body = neededData; +// }, +// }); + "use strict"; -module.exports = ({ strapi }) => ({ - getContentTypes(ctx) { - const data = strapi - .plugin("content-type-explorer") - .service("explorerService") - .getContentTypes(); - - let neededData = Object.keys(data).map((key) => ({ - name: key, - attributes: data[key]["attributes"], - info: data[key]["info"], - // kind: data[key]["kind"], - key: data[key]["uid"], - })); - - ctx.body = neededData; +module.exports = { + async getTypes(ctx) { + ctx.body = "You are in the my-plugin-content-type controller!"; }, -}); +}; diff --git a/server/index.js b/server/index.js index 5b524b1..0e59be8 100644 --- a/server/index.js +++ b/server/index.js @@ -1,15 +1,15 @@ -'use strict'; +"use strict"; -const register = require('./register'); -const bootstrap = require('./bootstrap'); -const destroy = require('./destroy'); -const config = require('./config'); -const contentTypes = require('./content-types'); -const controllers = require('./controllers'); -const routes = require('./routes'); -const middlewares = require('./middlewares'); -const policies = require('./policies'); -const services = require('./services'); +const register = require("./register"); +const bootstrap = require("./bootstrap"); +const destroy = require("./destroy"); +const config = require("./config"); +const contentTypes = require("./content-types"); +const controllers = require("./controllers"); +const routes = require("./routes"); +const middlewares = require("./middlewares"); +const policies = require("./policies"); +const services = require("./services"); module.exports = { register, diff --git a/server/routes/index.js b/server/routes/index.js index 06bde7b..5041f5f 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,10 +1,11 @@ module.exports = [ { method: "GET", - path: "/get-content-types", - handler: "explorerController.getContentTypes", + path: "/get-types", + handler: "explorerController.getTypes", config: { policies: [], + auth: false, }, }, ]; diff --git a/strapi-admin.js b/strapi-admin.js index 2d1a3d9..43a5fe6 100644 --- a/strapi-admin.js +++ b/strapi-admin.js @@ -1,3 +1,3 @@ -'use strict'; +"use strict"; -module.exports = require('./admin/src').default; +module.exports = require("./admin/src").default;