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

disable pdf export when pdf converter uri is undefined

Futa Arai 1 год назад
Родитель
Сommit
4cf9ebc347

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

@@ -15,6 +15,7 @@ ELASTICSEARCH_REQUEST_TIMEOUT=15000
 ELASTICSEARCH_REJECT_UNAUTHORIZED=true
 OGP_URI="http://ogp:8088"
 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"
 # S2SMSG_PUBSUB_SERVER_TYPE=nchan
 # 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 { usePageBulkExportSelectModal } from '~/features/page-bulk-export/client/stores/modal';
 import { PageBulkExportFormat } from '~/features/page-bulk-export/interfaces/page-bulk-export';
+import { useIsPdfBulkExportEnabled } from '~/stores-universal/context';
 import { useCurrentPagePath } from '~/stores/page';
 
 const PageBulkExportSelectModal = (): JSX.Element => {
   const { t } = useTranslation();
   const { data: status, close } = usePageBulkExportSelectModal();
   const { data: currentPagePath } = useCurrentPagePath();
+  const { data: isPdfBulkExportEnabled } = useIsPdfBulkExportEnabled();
 
   const [isRestartModalOpened, setIsRestartModalOpened] = useState(false);
   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)}>
                 {t('page_export.markdown')}
               </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>
           </ModalBody>
         </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({
       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) {
       pageBulkExportJob.status = PageBulkExportJobStatus.uploading;

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

@@ -47,6 +47,7 @@ import {
   useIsLocalAccountRegistrationEnabled,
   useIsRomUserAllowedToComment,
   useIsAiEnabled,
+  useIsPdfBulkExportEnabled,
 } from '~/stores-universal/context';
 import { useEditingMarkdown } from '~/stores/editor';
 import {
@@ -181,6 +182,7 @@ type Props = CommonProps & {
   isUploadEnabled: boolean,
   isUploadAllFileAllowed: boolean,
   isBulkExportPagesEnabled: boolean,
+  isPdfBulkExportEnabled: boolean,
   isEnabledStaleNotification: boolean,
   isEnabledAttachTitleHeader: boolean,
   // isEnabledLinebreaks: boolean,
@@ -245,6 +247,7 @@ const Page: NextPageWithLayout<Props> = (props: Props) => {
   useIsUploadAllFileAllowed(props.isUploadAllFileAllowed);
   useIsUploadEnabled(props.isUploadEnabled);
   useIsBulkExportPagesEnabled(props.isBulkExportPagesEnabled);
+  useIsPdfBulkExportEnabled(props.isPdfBulkExportEnabled);
 
   useIsLocalAccountRegistrationEnabled(props.isLocalAccountRegistrationEnabled);
   useIsRomUserAllowedToComment(props.isRomUserAllowedToComment);
@@ -589,6 +592,9 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P
   props.isUploadAllFileAllowed = fileUploadService.getFileUploadEnabled();
   props.isUploadEnabled = fileUploadService.getIsUploadable();
   props.isBulkExportPagesEnabled = configManager.getConfig('app:isBulkExportPagesEnabled');
+  console.log('ここ');
+  console.log(configManager.getConfig('app:pageBulkExportPdfConverterUri'));
+  props.isPdfBulkExportEnabled = configManager.getConfig('app:pageBulkExportPdfConverterUri') != null;
 
   props.isLocalAccountRegistrationEnabled = passportService.isLocalStrategySetup
   && 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:pageBulkExportJobCleanUpCronSchedule',
   'app:pageBulkExportParallelExecLimit',
-  'app:pageBulkExportPdfConverterUrl',
+  'app:pageBulkExportPdfConverterUri',
   'app:isBulkExportPagesEnabled',
   'env:useOnlyEnvVars:app:isBulkExportPagesEnabled',
 
@@ -1315,9 +1315,9 @@ Guideline as a RAG:
     envVarName: 'BULK_EXPORT_PARALLEL_EXEC_LIMIT',
     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>({
     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);
 };
 
+export const useIsPdfBulkExportEnabled = (initialData?: boolean): SWRResponse<boolean, Error> => {
+  return useContextSWR('isPdfBulkExportEnabled', initialData);
+};
+
 export const useShowPageLimitationL = (initialData?: number): SWRResponse<number, Error> => {
   return useContextSWR('showPageLimitationL', initialData);
 };