diff --git a/apps/admin/app/dashboard/subscribe/template-preview.tsx b/apps/admin/app/dashboard/subscribe/template-preview.tsx index d2f7720..4e18fde 100644 --- a/apps/admin/app/dashboard/subscribe/template-preview.tsx +++ b/apps/admin/app/dashboard/subscribe/template-preview.tsx @@ -4,8 +4,8 @@ import { previewSubscribeTemplate } from '@/services/admin/application'; import { useQuery } from '@tanstack/react-query'; import { Button } from '@workspace/ui/components/button'; import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@workspace/ui/components/sheet'; +import { MonacoEditor } from '@workspace/ui/custom-components/editor/monaco-editor'; import { Icon } from '@workspace/ui/custom-components/icon'; -import { Markdown } from '@workspace/ui/custom-components/markdown'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; @@ -27,7 +27,6 @@ export function TemplatePreview({ applicationId, output_format }: TemplatePrevie const originalContent = data?.data?.data?.template || ''; const errorMessage = (error as any)?.data?.msg || error?.message || t('failed'); - const displayContent = originalContent || (error ? errorMessage : ''); const getDecodedContent = () => { if (output_format === 'base64' && originalContent) { @@ -41,19 +40,31 @@ export function TemplatePreview({ applicationId, output_format }: TemplatePrevie }; const getDisplayContent = () => { + if (error) return errorMessage; + if (!originalContent) return ''; switch (output_format) { - case 'base64': - return `\`\`\`base64\n# ${t('base64.originalContent')}\n${displayContent}\n\n# ${t('base64.decodedContent')}\n${getDecodedContent()}\n\`\`\``; - case 'yaml': - return `\`\`\`yaml\n${displayContent}\n\`\`\``; - case 'json': - return `\`\`\`json\n${displayContent}\n\`\`\``; - case 'conf': - return `\`\`\`ini\n${displayContent}\n\`\`\``; - case 'plain': - return `\`\`\`text\n${displayContent}\n\`\`\``; + case 'base64': { + const decoded = getDecodedContent(); + return `${t('base64.originalContent')}:\n${originalContent}\n\n${t('base64.decodedContent')}:\n${decoded}`; + } default: - return displayContent; + return originalContent; + } + }; + const mapLanguage = (fmt?: string) => { + switch (fmt) { + case 'json': + return 'json'; + case 'yaml': + return 'yaml'; + case 'base64': + return 'ini'; + case 'plain': + return 'ini'; + case 'conf': + return 'ini'; + default: + return 'ini'; } }; @@ -68,19 +79,21 @@ export function TemplatePreview({ applicationId, output_format }: TemplatePrevie {t('preview')} + + + - - {t('title')} - {isLoading ? (
{t('loading')}
) : ( -
- {getDisplayContent()} -
+ )}
diff --git a/packages/ui/src/custom-components/editor/monaco-editor.tsx b/packages/ui/src/custom-components/editor/monaco-editor.tsx index de485b4..0b1a78c 100644 --- a/packages/ui/src/custom-components/editor/monaco-editor.tsx +++ b/packages/ui/src/custom-components/editor/monaco-editor.tsx @@ -112,9 +112,9 @@ export function MonacoEditor({ -
+
@@ -142,10 +142,11 @@ export function MonacoEditor({ scrollBeyondLastLine: false, scrollbar: { useShadows: false, - vertical: 'hidden', + vertical: 'auto', }, tabSize: 2, wordWrap: 'off', + readOnly: !onChange, }} theme='transparentTheme' beforeMount={(monaco: Monaco) => {