Просмотр исходного кода

Merge pull request #9684 from weseek/imprv/162328-162329-disable-pdf-export-when-converter-uri-is-undefined

Imprv/162328 162329 disable pdf export when converter uri is undefined
Yuki Takei 1 год назад
Родитель
Сommit
9364ac999c

+ 1 - 0
apps/app/.env.development

@@ -15,6 +15,7 @@ ELASTICSEARCH_REQUEST_TIMEOUT=15000
 ELASTICSEARCH_REJECT_UNAUTHORIZED=true
 ELASTICSEARCH_REJECT_UNAUTHORIZED=true
 OGP_URI="http://ogp:8088"
 OGP_URI="http://ogp:8088"
 QUESTIONNAIRE_SERVER_ORIGIN="http://host.docker.internal:3003"
 QUESTIONNAIRE_SERVER_ORIGIN="http://host.docker.internal:3003"
+BULK_EXPORT_PDF_CONVERTER_URI=http://pdf-converter:3010
 # DRAWIO_URI="http://localhost:8080/?offline=1&https=0"
 # DRAWIO_URI="http://localhost:8080/?offline=1&https=0"
 # S2SMSG_PUBSUB_SERVER_TYPE=nchan
 # S2SMSG_PUBSUB_SERVER_TYPE=nchan
 # PUBLISH_OPEN_API=true
 # PUBLISH_OPEN_API=true

+ 7 - 1
apps/app/src/features/page-bulk-export/client/components/PageBulkExportSelectModal.tsx

@@ -8,12 +8,14 @@ import { apiv3Post } from '~/client/util/apiv3-client';
 import { toastError, toastSuccess } from '~/client/util/toastr';
 import { toastError, toastSuccess } from '~/client/util/toastr';
 import { usePageBulkExportSelectModal } from '~/features/page-bulk-export/client/stores/modal';
 import { usePageBulkExportSelectModal } from '~/features/page-bulk-export/client/stores/modal';
 import { PageBulkExportFormat } from '~/features/page-bulk-export/interfaces/page-bulk-export';
 import { PageBulkExportFormat } from '~/features/page-bulk-export/interfaces/page-bulk-export';
+import { useIsPdfBulkExportEnabled } from '~/stores-universal/context';
 import { useCurrentPagePath } from '~/stores/page';
 import { useCurrentPagePath } from '~/stores/page';
 
 
 const PageBulkExportSelectModal = (): JSX.Element => {
 const PageBulkExportSelectModal = (): JSX.Element => {
   const { t } = useTranslation();
   const { t } = useTranslation();
   const { data: status, close } = usePageBulkExportSelectModal();
   const { data: status, close } = usePageBulkExportSelectModal();
   const { data: currentPagePath } = useCurrentPagePath();
   const { data: currentPagePath } = useCurrentPagePath();
+  const { data: isPdfBulkExportEnabled } = useIsPdfBulkExportEnabled();
 
 
   const [isRestartModalOpened, setIsRestartModalOpened] = useState(false);
   const [isRestartModalOpened, setIsRestartModalOpened] = useState(false);
   const [formatMemoForRestart, setFormatMemoForRestart] = useState<PageBulkExportFormat | undefined>(undefined);
   const [formatMemoForRestart, setFormatMemoForRestart] = useState<PageBulkExportFormat | undefined>(undefined);
@@ -72,7 +74,11 @@ const PageBulkExportSelectModal = (): JSX.Element => {
               <button className="btn btn-primary" type="button" onClick={() => startBulkExport(PageBulkExportFormat.md)}>
               <button className="btn btn-primary" type="button" onClick={() => startBulkExport(PageBulkExportFormat.md)}>
                 {t('page_export.markdown')}
                 {t('page_export.markdown')}
               </button>
               </button>
-              <button className="btn btn-primary ms-2" type="button" onClick={() => startBulkExport(PageBulkExportFormat.pdf)}>PDF</button>
+              {isPdfBulkExportEnabled && (
+                <button className="btn btn-primary ms-2" type="button" onClick={() => startBulkExport(PageBulkExportFormat.pdf)}>
+                  PDF
+                </button>
+              )}
             </div>
             </div>
           </ModalBody>
           </ModalBody>
         </Modal>
         </Modal>

+ 1 - 1
apps/app/src/features/page-bulk-export/server/service/page-bulk-export-job-cron/request-pdf-converter.ts

@@ -42,7 +42,7 @@ export async function requestPdfConverter(pageBulkExportJob: PageBulkExportJobDo
 
 
     const res = await pdfCtrlSyncJobStatus({
     const res = await pdfCtrlSyncJobStatus({
       jobId: pageBulkExportJob._id.toString(), expirationDate: bulkExportJobExpirationDate.toISOString(), status: pdfConvertStatus,
       jobId: pageBulkExportJob._id.toString(), expirationDate: bulkExportJobExpirationDate.toISOString(), status: pdfConvertStatus,
-    }, { baseURL: configManager.getConfig('app:pageBulkExportPdfConverterUrl') });
+    }, { baseURL: configManager.getConfig('app:pageBulkExportPdfConverterUri') });
 
 
     if (res.data.status === PdfCtrlSyncJobStatus202Status.PDF_EXPORT_DONE) {
     if (res.data.status === PdfCtrlSyncJobStatus202Status.PDF_EXPORT_DONE) {
       pageBulkExportJob.status = PageBulkExportJobStatus.uploading;
       pageBulkExportJob.status = PageBulkExportJobStatus.uploading;

+ 2 - 2
apps/app/src/features/page-bulk-export/server/service/page-bulk-export.ts

@@ -46,9 +46,9 @@ class PageBulkExportService implements IPageBulkExportService {
     }
     }
 
 
     const duplicatePageBulkExportJobInProgress: HydratedDocument<PageBulkExportJobDocument> | null = await PageBulkExportJob.findOne({
     const duplicatePageBulkExportJobInProgress: HydratedDocument<PageBulkExportJobDocument> | null = await PageBulkExportJob.findOne({
-      user: currentUser,
+      user: { $eq: currentUser },
       page: basePage,
       page: basePage,
-      format,
+      format: { $eq: format },
       $or: Object.values(PageBulkExportJobInProgressStatus).map(status => ({ status })),
       $or: Object.values(PageBulkExportJobInProgressStatus).map(status => ({ status })),
     });
     });
     if (duplicatePageBulkExportJobInProgress != null) {
     if (duplicatePageBulkExportJobInProgress != null) {

+ 4 - 0
apps/app/src/pages/[[...path]].page.tsx

@@ -47,6 +47,7 @@ import {
   useIsLocalAccountRegistrationEnabled,
   useIsLocalAccountRegistrationEnabled,
   useIsRomUserAllowedToComment,
   useIsRomUserAllowedToComment,
   useIsAiEnabled,
   useIsAiEnabled,
+  useIsPdfBulkExportEnabled,
 } from '~/stores-universal/context';
 } from '~/stores-universal/context';
 import { useEditingMarkdown } from '~/stores/editor';
 import { useEditingMarkdown } from '~/stores/editor';
 import {
 import {
@@ -181,6 +182,7 @@ type Props = CommonProps & {
   isUploadEnabled: boolean,
   isUploadEnabled: boolean,
   isUploadAllFileAllowed: boolean,
   isUploadAllFileAllowed: boolean,
   isBulkExportPagesEnabled: boolean,
   isBulkExportPagesEnabled: boolean,
+  isPdfBulkExportEnabled: boolean,
   isEnabledStaleNotification: boolean,
   isEnabledStaleNotification: boolean,
   isEnabledAttachTitleHeader: boolean,
   isEnabledAttachTitleHeader: boolean,
   // isEnabledLinebreaks: boolean,
   // isEnabledLinebreaks: boolean,
@@ -245,6 +247,7 @@ const Page: NextPageWithLayout<Props> = (props: Props) => {
   useIsUploadAllFileAllowed(props.isUploadAllFileAllowed);
   useIsUploadAllFileAllowed(props.isUploadAllFileAllowed);
   useIsUploadEnabled(props.isUploadEnabled);
   useIsUploadEnabled(props.isUploadEnabled);
   useIsBulkExportPagesEnabled(props.isBulkExportPagesEnabled);
   useIsBulkExportPagesEnabled(props.isBulkExportPagesEnabled);
+  useIsPdfBulkExportEnabled(props.isPdfBulkExportEnabled);
 
 
   useIsLocalAccountRegistrationEnabled(props.isLocalAccountRegistrationEnabled);
   useIsLocalAccountRegistrationEnabled(props.isLocalAccountRegistrationEnabled);
   useIsRomUserAllowedToComment(props.isRomUserAllowedToComment);
   useIsRomUserAllowedToComment(props.isRomUserAllowedToComment);
@@ -589,6 +592,7 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P
   props.isUploadAllFileAllowed = fileUploadService.getFileUploadEnabled();
   props.isUploadAllFileAllowed = fileUploadService.getFileUploadEnabled();
   props.isUploadEnabled = fileUploadService.getIsUploadable();
   props.isUploadEnabled = fileUploadService.getIsUploadable();
   props.isBulkExportPagesEnabled = configManager.getConfig('app:isBulkExportPagesEnabled');
   props.isBulkExportPagesEnabled = configManager.getConfig('app:isBulkExportPagesEnabled');
+  props.isPdfBulkExportEnabled = configManager.getConfig('app:pageBulkExportPdfConverterUri') != null;
 
 
   props.isLocalAccountRegistrationEnabled = passportService.isLocalStrategySetup
   props.isLocalAccountRegistrationEnabled = passportService.isLocalStrategySetup
   && configManager.getConfig('security:registrationMode') !== RegistrationMode.CLOSED;
   && configManager.getConfig('security:registrationMode') !== RegistrationMode.CLOSED;

+ 4 - 4
apps/app/src/server/service/config-manager/config-definition.ts

@@ -324,7 +324,7 @@ export const CONFIG_KEYS = [
   'app:checkPageBulkExportJobInProgressCronSchedule',
   'app:checkPageBulkExportJobInProgressCronSchedule',
   'app:pageBulkExportJobCleanUpCronSchedule',
   'app:pageBulkExportJobCleanUpCronSchedule',
   'app:pageBulkExportParallelExecLimit',
   'app:pageBulkExportParallelExecLimit',
-  'app:pageBulkExportPdfConverterUrl',
+  'app:pageBulkExportPdfConverterUri',
   'app:isBulkExportPagesEnabled',
   'app:isBulkExportPagesEnabled',
   'env:useOnlyEnvVars:app:isBulkExportPagesEnabled',
   'env:useOnlyEnvVars:app:isBulkExportPagesEnabled',
 
 
@@ -1315,9 +1315,9 @@ Guideline as a RAG:
     envVarName: 'BULK_EXPORT_PARALLEL_EXEC_LIMIT',
     envVarName: 'BULK_EXPORT_PARALLEL_EXEC_LIMIT',
     defaultValue: 5,
     defaultValue: 5,
   }),
   }),
-  'app:pageBulkExportPdfConverterUrl': defineConfig<string>({
-    envVarName: 'BULK_EXPORT_PDF_CONVERTER_URL',
-    defaultValue: 'http://pdf-converter:3010',
+  'app:pageBulkExportPdfConverterUri': defineConfig<string | undefined>({
+    envVarName: 'BULK_EXPORT_PDF_CONVERTER_URI',
+    defaultValue: undefined,
   }),
   }),
   'app:isBulkExportPagesEnabled': defineConfig<boolean>({
   'app:isBulkExportPagesEnabled': defineConfig<boolean>({
     envVarName: 'BULK_EXPORT_PAGES_ENABLED',
     envVarName: 'BULK_EXPORT_PAGES_ENABLED',

+ 4 - 0
apps/app/src/stores-universal/context.tsx

@@ -164,6 +164,10 @@ export const useIsBulkExportPagesEnabled = (initialData?: boolean): SWRResponse<
   return useContextSWR('isBulkExportPagesEnabled', initialData);
   return useContextSWR('isBulkExportPagesEnabled', initialData);
 };
 };
 
 
+export const useIsPdfBulkExportEnabled = (initialData?: boolean): SWRResponse<boolean, Error> => {
+  return useContextSWR('isPdfBulkExportEnabled', initialData);
+};
+
 export const useShowPageLimitationL = (initialData?: number): SWRResponse<number, Error> => {
 export const useShowPageLimitationL = (initialData?: number): SWRResponse<number, Error> => {
   return useContextSWR('showPageLimitationL', initialData);
   return useContextSWR('showPageLimitationL', initialData);
 };
 };