Shun Miyazawa пре 2 година
родитељ
комит
64e67cbac4

+ 2 - 1
apps/app/src/client/services/page-operation.ts

@@ -1,5 +1,6 @@
 import { useCallback } from 'react';
 
+import type { IPageHasId } from '@growi/core';
 import { SubscriptionStatusType } from '@growi/core';
 import urljoin from 'url-join';
 
@@ -160,7 +161,7 @@ export const exist = async(path: string): Promise<PageExistResponse> => {
   return res.data;
 };
 
-export const unpublish = async(pageId: string): Promise<any> => {
+export const unpublish = async(pageId: string): Promise<IPageHasId> => {
   const res = await apiv3Put(`/page/${pageId}/unpublish`);
   return res.data;
 };

+ 1 - 2
apps/app/src/components/SavePageControls.tsx

@@ -47,7 +47,6 @@ export const SavePageControls = (props: SavePageControlsProps): JSX.Element | nu
   const { trigger: mutateCurrentPage } = useSWRMUTxCurrentPage();
 
   const isWaitingSaveProcessing = _isWaitingSaveProcessing === true; // ignore undefined
-  const isWipPage = currentPage?.wip === true;
 
   const updateGrantHandler = useCallback((grantData: IPageGrantData): void => {
     mutateGrant(grantData);
@@ -132,7 +131,7 @@ export const SavePageControls = (props: SavePageControlsProps): JSX.Element | nu
           <DropdownItem onClick={saveAndOverwriteScopesOfDescendants}>
             {labelOverwriteScopes}
           </DropdownItem>
-          <DropdownItem onClick={clickUnpublishButtonHandler} disabled={isWipPage}>
+          <DropdownItem onClick={clickUnpublishButtonHandler}>
             {labelUnpublishPage}
           </DropdownItem>
         </DropdownMenu>

+ 1 - 0
apps/app/src/server/models/page.ts

@@ -1060,6 +1060,7 @@ schema.methods.publish = function() {
 
 schema.methods.unpublish = function() {
   this.wip = true;
+  this.wipExpiredAt = undefined;
 };
 
 schema.methods.makeWip = function() {

+ 2 - 2
apps/app/src/server/routes/apiv3/page/unpublish-page.ts

@@ -30,7 +30,7 @@ export const unpublishPageHandlersFactory: UnpublishPageHandlersFactory = (crowi
   const Page = mongoose.model<IPage, PageModel>('Page');
 
   const accessTokenParser = require('../../../middlewares/access-token-parser')(crowi);
-  const loginRequired = require('../../../middlewares/login-required')(crowi, true);
+  const loginRequiredStrictly = require('../../../middlewares/login-required')(crowi);
 
   // define validators for req.body
   const validator: ValidationChain[] = [
@@ -38,7 +38,7 @@ export const unpublishPageHandlersFactory: UnpublishPageHandlersFactory = (crowi
   ];
 
   return [
-    accessTokenParser, loginRequired,
+    accessTokenParser, loginRequiredStrictly,
     validator, apiV3FormValidator,
     async(req: Req, res: ApiV3Response) => {
       const { pageId } = req.params;