Browse Source

switch plugins

jam411 3 years ago
parent
commit
14d9c6dd2b

+ 0 - 22
packages/app/src/client/services/switch-plugin.ts

@@ -1,22 +0,0 @@
-// import { readFileSync } from 'fs';
-// import path from 'path';
-
-// import { CustomWindow } from '~/interfaces/global';
-// import { GrowiPlugin } from '~/interfaces/plugin';
-// import { initializeGrowiFacade } from '~/utils/growi-facade';
-// import { resolveFromRoot } from '~/utils/project-dir-utils';
-
-
-// export type GrowiPluginManifestEntries = [growiPlugin: GrowiPlugin, manifest: any][];
-
-
-// export class SwitchPluginService {
-
-//   static async switchPluginIsEnabled(growiPlugins: GrowiPlugin[]): Promise<boolean> {
-//     return growiPlugins[0].isEnabled;
-//     // .forEach(async(growiPlugin) => {
-
-//     // });
-//   }
-
-// }

+ 2 - 6
packages/app/src/components/Admin/PluginsExtension/Loading.js → packages/app/src/components/Admin/PluginsExtension/Loading.tsx

@@ -1,13 +1,9 @@
-import {
-  Spinner,
-} from 'reactstrap';
+import { Spinner } from 'reactstrap';
 
 
-const Loading = () => {
+export const Loading = (): JSX.Element => {
   return (
   return (
     <Spinner className='d-flex justify-content-center aligh-items-center'>
     <Spinner className='d-flex justify-content-center aligh-items-center'>
       Loading...
       Loading...
     </Spinner>
     </Spinner>
   );
   );
 };
 };
-
-export default Loading;

+ 13 - 14
packages/app/src/components/Admin/PluginsExtension/PluginCard.tsx

@@ -8,10 +8,8 @@ import { useSWRxPlugin } from '~/stores/plugin';
 
 
 import styles from './PluginCard.module.scss';
 import styles from './PluginCard.module.scss';
 
 
-
 type Props = {
 type Props = {
   id: string,
   id: string,
-  isEnabled: boolean,
   name: string,
   name: string,
   url: string,
   url: string,
   description: string,
   description: string,
@@ -20,30 +18,31 @@ type Props = {
 export const PluginCard = (props: Props): JSX.Element => {
 export const PluginCard = (props: Props): JSX.Element => {
 
 
   const {
   const {
-    id, isEnabled, name, url, description,
+    id, name, url, description,
   } = props;
   } = props;
 
 
-  const { data } = useSWRxPlugin(id);
+  const { data, mutate } = useSWRxPlugin(id);
 
 
   if (data == null) {
   if (data == null) {
     return <></>;
     return <></>;
   }
   }
 
 
-  console.log('first', data.data.isEnabled);
   const PluginCardButton = (): JSX.Element => {
   const PluginCardButton = (): JSX.Element => {
     const [isEnabled, setState] = useState<boolean>(data.data.isEnabled);
     const [isEnabled, setState] = useState<boolean>(data.data.isEnabled);
 
 
     const onChangeHandler = async() => {
     const onChangeHandler = async() => {
-      // const { data, mutate } = useSWRxPlugin(id);
-
-      console.log('change');
       const reqUrl = '/plugins-extension/plugin';
       const reqUrl = '/plugins-extension/plugin';
-      console.log('id', id);
-      const res = await apiv3Post(reqUrl, { _id: id });
-      console.log(res.data.isEnabled);
-      setState(res.data.isEnabled);
-      // mutate();
-      // return data;
+
+      try {
+        const res = await apiv3Post(reqUrl, { _id: id });
+        setState(res.data.isEnabled);
+      }
+      catch (err) {
+        console.log('pluginIsEnabled', err);
+      }
+      finally {
+        mutate();
+      }
     };
     };
 
 
     return (
     return (

+ 1 - 3
packages/app/src/components/Admin/PluginsExtension/PluginsExtensionPageContents.tsx

@@ -2,7 +2,7 @@ import React from 'react';
 
 
 import { useSWRxPlugins } from '~/stores/plugin';
 import { useSWRxPlugins } from '~/stores/plugin';
 
 
-import Loading from './Loading';
+import { Loading } from './Loading';
 import { PluginCard } from './PluginCard';
 import { PluginCard } from './PluginCard';
 import { PluginInstallerForm } from './PluginInstallerForm';
 import { PluginInstallerForm } from './PluginInstallerForm';
 // TODO: i18n
 // TODO: i18n
@@ -54,7 +54,6 @@ export const PluginsExtensionPageContents = (): JSX.Element => {
           <div className="d-grid gap-5">
           <div className="d-grid gap-5">
             { data?.data?.plugins.map((item) => {
             { data?.data?.plugins.map((item) => {
               const pluginId = item[0]._id;
               const pluginId = item[0]._id;
-              const pluginIsEnabled = item[0].isEnabled;
               const pluginName = item[0].meta.name;
               const pluginName = item[0].meta.name;
               const pluginUrl = item[0].origin.url;
               const pluginUrl = item[0].origin.url;
               const pluginDiscription = item[0].meta.desc;
               const pluginDiscription = item[0].meta.desc;
@@ -62,7 +61,6 @@ export const PluginsExtensionPageContents = (): JSX.Element => {
                 <PluginCard
                 <PluginCard
                   key={pluginId}
                   key={pluginId}
                   id={pluginId}
                   id={pluginId}
-                  isEnabled={pluginIsEnabled}
                   name={pluginName}
                   name={pluginName}
                   url={pluginUrl}
                   url={pluginUrl}
                   description={pluginDiscription}
                   description={pluginDiscription}

+ 4 - 8
packages/app/src/server/routes/apiv3/plugins-extension.ts

@@ -38,15 +38,13 @@ module.exports = (crowi: Crowi) => {
     }
     }
   });
   });
 
 
-  router.post('/swrplugin', async(req: PluginInstallerFormRequest, res: ApiV3Response) => {
+  router.post('/swrplugin', async(req: any, res: ApiV3Response) => {
     if (pluginService == null) {
     if (pluginService == null) {
       return res.apiv3Err(400);
       return res.apiv3Err(400);
     }
     }
 
 
-    console.log('id2', req.body._id);
     try {
     try {
-      const pluginIsEnabled = await pluginService.switchPluginIsEnabled(req.body._id);
-      console.log('get', pluginIsEnabled);
+      const pluginIsEnabled = await pluginService.getPluginIsEnabled(req.body._id);
       return res.apiv3({ isEnabled: pluginIsEnabled });
       return res.apiv3({ isEnabled: pluginIsEnabled });
     }
     }
     catch (err) {
     catch (err) {
@@ -54,15 +52,13 @@ module.exports = (crowi: Crowi) => {
     }
     }
   });
   });
 
 
-  router.post('/plugin', async(req: PluginInstallerFormRequest, res: ApiV3Response) => {
+  router.post('/plugin', async(req: any, res: ApiV3Response) => {
     if (pluginService == null) {
     if (pluginService == null) {
       return res.apiv3Err(400);
       return res.apiv3Err(400);
     }
     }
 
 
-    console.log('id2', req.body._id);
     try {
     try {
-      const pluginIsEnabled = await pluginService.switchPluginIsEnabled2(req.body._id);
-      console.log('post', pluginIsEnabled);
+      const pluginIsEnabled = await pluginService.switchPluginIsEnabled(req.body._id);
       return res.apiv3({ isEnabled: pluginIsEnabled });
       return res.apiv3({ isEnabled: pluginIsEnabled });
     }
     }
     catch (err) {
     catch (err) {

+ 3 - 10
packages/app/src/server/service/plugin.ts

@@ -144,31 +144,24 @@ export class PluginService {
   }
   }
 
 
   /**
   /**
-   * Switch plugin enabled
+   * Get plugin isEnabled
    */
    */
-  async switchPluginIsEnabled(targetPluginId: string): Promise<any> {
+  async getPluginIsEnabled(targetPluginId: string): Promise<any> {
     const GrowiPlugin = await mongoose.model<GrowiPlugin>('GrowiPlugin');
     const GrowiPlugin = await mongoose.model<GrowiPlugin>('GrowiPlugin');
     const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
     const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
-    // await growiPlugins[0].update(
-    //   { isEnabled: !growiPlugins[0].isEnabled },
-    // );
-    console.log(growiPlugins);
     return growiPlugins[0].isEnabled;
     return growiPlugins[0].isEnabled;
   }
   }
 
 
   /**
   /**
    * Switch plugin enabled
    * Switch plugin enabled
    */
    */
-  async switchPluginIsEnabled2(targetPluginId: string): Promise<any> {
+  async switchPluginIsEnabled(targetPluginId: string): Promise<any> {
     const GrowiPlugin = mongoose.model<GrowiPlugin>('GrowiPlugin');
     const GrowiPlugin = mongoose.model<GrowiPlugin>('GrowiPlugin');
     const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
     const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
-    console.log('switch', growiPlugins[0].isEnabled);
     await growiPlugins[0].update(
     await growiPlugins[0].update(
       { isEnabled: !growiPlugins[0].isEnabled },
       { isEnabled: !growiPlugins[0].isEnabled },
     );
     );
-    console.log('switched', growiPlugins[0].isEnabled);
     return growiPlugins[0].isEnabled;
     return growiPlugins[0].isEnabled;
   }
   }
 
 
-
 }
 }

+ 1 - 17
packages/app/src/stores/plugin.tsx

@@ -22,32 +22,16 @@ export const useSWRxPlugins = (): SWRResponse<any | null, Error> => {
   return useSWR('/pluginsExtension', pluginsFetcher());
   return useSWR('/pluginsExtension', pluginsFetcher());
 };
 };
 
 
-
-// const repositoryFetcher = (owner: string, repo: string) => {
-//   return async () => {
-//     const reqUrl = `/api/fetch_repository?owner=${owner}&repo=${repo}`
-//     const data = await fetch(reqUrl).then(res => res.json())
-//     return data.searchResultItem
-//   }
-// }
-
-// export const useGitHubRepository = (owner: string, repo: string): SWRResponse<SearchResultItem | null, Error> => {
-//   return useSWR(`${owner}/{repo}`, repositoryFetcher(owner, repo))
-// }
-
 const pluginFetcher = (id: string) => {
 const pluginFetcher = (id: string) => {
-  console.log('featcher', id);
   return async() => {
   return async() => {
     const reqUrl = '/plugins-extension/swrplugin';
     const reqUrl = '/plugins-extension/swrplugin';
     try {
     try {
       const data = await apiv3Post(reqUrl, { _id: id });
       const data = await apiv3Post(reqUrl, { _id: id });
-      console.log('fetcher');
       return data;
       return data;
     }
     }
     catch (err) {
     catch (err) {
       // TODO: Error handling
       // TODO: Error handling
-      console.log('aa');
-      console.log('err', err);
+      console.log('pluginFetcher', err);
     }
     }
   };
   };
 };
 };