jam411 3 лет назад
Родитель
Сommit
ef0588687f

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

@@ -23,7 +23,7 @@ export const PluginCard = (props: Props): JSX.Element => {
 
   const { data, mutate } = useSWRxPlugin(id);
 
-  if (data == null || data.plugin == null) {
+  if (data == null) {
     return <></>;
   }
 
@@ -32,18 +32,18 @@ export const PluginCard = (props: Props): JSX.Element => {
 
     const onChangeHandler = async() => {
       try {
-        if (!isEnabled) {
-          const reqUrl = `/plugins/${id}/activate`;
-          const res = await apiv3Put(reqUrl);
-          setState(res.data.isEnabled);
-          toastSuccess('Plugin Activated');
-        }
-        else {
+        if (isEnabled) {
           const reqUrl = `/plugins/${id}/deactivate`;
-          const res = await apiv3Put(reqUrl);
-          setState(res.data.isEnabled);
+          await apiv3Put(reqUrl);
+          setState(!isEnabled);
           toastSuccess('Plugin Deactivated');
         }
+        else {
+          const reqUrl = `/plugins/${id}/activate`;
+          await apiv3Put(reqUrl);
+          setState(!isEnabled);
+          toastSuccess('Plugin Activated');
+        }
       }
       catch (err) {
         toastError('pluginIsEnabled', err);
@@ -101,7 +101,7 @@ export const PluginCard = (props: Props): JSX.Element => {
     );
   };
 
-  // TODO: Fix commented out areas.
+  // TODO: Refactor commented out areas.
   return (
     <div className="card shadow border-0" key={name}>
       <div className="card-body px-5 py-4 mt-3">

+ 6 - 8
packages/app/src/server/models/growi-plugin.ts

@@ -15,8 +15,8 @@ export interface GrowiPluginModel extends Model<GrowiPluginDocument> {
   findEnabledPlugins(): Promise<GrowiPlugin[]>
   findEnabledPluginsIncludingAnyTypes(includingTypes: GrowiPluginResourceType[]): Promise<GrowiPlugin[]>
   getPlugin(id: Types.ObjectId): Promise<GrowiPlugin | null>
-  activateStatus(id: Types.ObjectId): Promise<GrowiPlugin | null>
-  deactivateStatus(id: Types.ObjectId): Promise<GrowiPlugin | null>
+  activateStatus(id: Types.ObjectId): Promise<void>
+  deactivateStatus(id: Types.ObjectId): Promise<void>
 }
 
 const growiThemeMetadataSchema = new Schema<GrowiThemeMetadata>({
@@ -74,14 +74,12 @@ growiPluginSchema.statics.getPlugin = async function(id: Types.ObjectId): Promis
   return growiPlugin;
 };
 
-growiPluginSchema.statics.activateStatus = async function(id: Types.ObjectId): Promise<GrowiPlugin | null> {
-  const growiPlugin = await this.findOneAndUpdate({ _id: id }, { isEnabled: true });
-  return growiPlugin;
+growiPluginSchema.statics.activateStatus = async function(id: Types.ObjectId): Promise<void> {
+  await this.findOneAndUpdate({ _id: id }, { isEnabled: true });
 };
 
-growiPluginSchema.statics.deactivateStatus = async function(id: Types.ObjectId): Promise<GrowiPlugin | null> {
-  const growiPlugin = await this.findOneAndUpdate({ _id: id }, { isEnabled: false });
-  return growiPlugin;
+growiPluginSchema.statics.deactivateStatus = async function(id: Types.ObjectId): Promise<void> {
+  await this.findOneAndUpdate({ _id: id }, { isEnabled: false });
 };
 
 export default getOrCreateModel<GrowiPluginDocument, GrowiPluginModel>('GrowiPlugin', growiPluginSchema);

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

@@ -88,11 +88,8 @@ module.exports = (crowi: Crowi): Router => {
 
     try {
       const GrowiPluginModel = mongoose.model('GrowiPlugin') as GrowiPluginModel;
-      const growiPlugin = await GrowiPluginModel.activateStatus(pluginId);
-      if (growiPlugin == null) {
-        return res.apiv3Err('GROWI Plugin is not found.', 400);
-      }
-      return res.apiv3({ isEnabled: growiPlugin.isEnabled });
+      await GrowiPluginModel.activateStatus(pluginId);
+      return res.apiv3({});
     }
     catch (err) {
       return res.apiv3Err(err);
@@ -109,11 +106,8 @@ module.exports = (crowi: Crowi): Router => {
 
     try {
       const GrowiPluginModel = mongoose.model('GrowiPlugin') as GrowiPluginModel;
-      const growiPlugin = await GrowiPluginModel.deactivateStatus(pluginId);
-      if (growiPlugin == null) {
-        return res.apiv3Err('GROWI Plugin is not found.', 400);
-      }
-      return res.apiv3({ isEnabled: growiPlugin.isEnabled });
+      await GrowiPluginModel.deactivateStatus(pluginId);
+      return res.apiv3({});
     }
     catch (err) {
       return res.apiv3Err(err);

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

@@ -180,14 +180,9 @@ export class PluginService implements IPluginService {
       }
     };
 
-    try {
-      await downloadFile(requestUrl, zipFilePath);
-      await unzip(zipFilePath, unzippedPath);
-      await renamePath(`${unzippedPath}/${ghReposName}-${ghBranch}`, `${unzippedPath}/${ghReposName}`);
-    }
-    catch (err) {
-      throw err;
-    }
+    await downloadFile(requestUrl, zipFilePath);
+    await unzip(zipFilePath, unzippedPath);
+    await renamePath(`${unzippedPath}/${ghReposName}-${ghBranch}`, `${unzippedPath}/${ghReposName}`);
 
     return;
   }