diff --git a/apps/pyconkr-admin/src/components/elements/error_fallback.tsx b/apps/pyconkr-admin/src/components/elements/error_fallback.tsx new file mode 100644 index 0000000..50b6dda --- /dev/null +++ b/apps/pyconkr-admin/src/components/elements/error_fallback.tsx @@ -0,0 +1,8 @@ +import { Components } from "@frontend/common"; +import { useCommonContext } from "@frontend/common/src/hooks/useCommonContext"; +import * as React from "react"; + +export const ErrorFallback: React.FC<{ error: Error; reset: () => void }> = ({ error, reset }) => { + const { debug } = useCommonContext(); + return ; +}; diff --git a/apps/pyconkr-admin/src/components/layouts/admin_editor.tsx b/apps/pyconkr-admin/src/components/layouts/admin_editor.tsx index 5c0cbc6..c7d0b03 100644 --- a/apps/pyconkr-admin/src/components/layouts/admin_editor.tsx +++ b/apps/pyconkr-admin/src/components/layouts/admin_editor.tsx @@ -8,6 +8,7 @@ import { useSchemaQuery, useUpdateMutation, } from "@frontend/common/src/hooks/useAdminAPI"; +import { useCommonContext } from "@frontend/common/src/hooks/useCommonContext"; import { filterPropertiesByLanguageInJsonSchema, filterReadOnlyPropertiesInJsonSchema, @@ -50,6 +51,7 @@ import * as R from "remeda"; import { addErrorSnackbar, addSnackbar } from "../../utils/snackbar"; import { BackendAdminSignInGuard } from "../elements/admin_signin_guard"; +import { ErrorFallback } from "../elements/error_fallback"; type EditorFormDataEventType = IChangeEvent, RJSFSchema, { [k in string]: unknown }>; type onSubmitType = (data: Record, event: React.FormEvent) => void; @@ -146,7 +148,7 @@ const fieldPropsToSelectedProps = (props: FieldProps): OutlinedSelectProps & { d }; const M2MSelect: Field = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, (props) => { const selectable = (props.schema.items as JSONSchema7).oneOf as DescriptedEnum[]; const selectableListObj: DescriptedEnumObject = selectable.reduce((a, i) => ({ ...a, [i.const]: i }), {} as DescriptedEnumObject); @@ -181,7 +183,8 @@ const MDRendererContainer = styled(Box)(({ theme }) => ({ }, })); -const MDEditorField: Field = ErrorBoundary.with({ fallback: Components.ErrorFallback }, ({ disabled, formData, name, onChange: rawOnChange }) => { +const MDEditorField: Field = ErrorBoundary.with({ fallback: ErrorFallback }, ({ disabled, formData, name, onChange: rawOnChange }) => { + const { baseUrl, mdxComponents } = useCommonContext(); const [valueState, setValueState] = React.useState(formData?.toString() || ""); const onChange = (value?: string) => { setValueState(value); @@ -195,7 +198,7 @@ const MDEditorField: Field = ErrorBoundary.with({ fallback: Components.ErrorFall - + @@ -262,7 +265,7 @@ type InnerAdminEditorStateType = { }; const InnerAdminEditor: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with( { fallback: }, ({ diff --git a/apps/pyconkr-admin/src/components/layouts/admin_list.tsx b/apps/pyconkr-admin/src/components/layouts/admin_list.tsx index de63eba..ee1f208 100644 --- a/apps/pyconkr-admin/src/components/layouts/admin_list.tsx +++ b/apps/pyconkr-admin/src/components/layouts/admin_list.tsx @@ -1,4 +1,3 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useChoicesQuery, useListQuery, useOpenApiSchemaQuery } from "@frontend/common/src/hooks/useAdminAPI"; import { extractQueryParameters } from "@frontend/common/src/utils"; import { Add } from "@mui/icons-material"; @@ -9,6 +8,7 @@ import { Link, useNavigate, useSearchParams } from "react-router-dom"; import { AdminListFilter } from "../elements/admin_list_filter"; import { BackendAdminSignInGuard } from "../elements/admin_signin_guard"; +import { ErrorFallback } from "../elements/error_fallback"; type AdminListProps = { app: string; @@ -26,7 +26,7 @@ type ListRowType = { }; const InnerAdminList: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, ({ app, resource, hideCreatedAt, hideUpdatedAt, hideCreateNew }) => { const navigate = useNavigate(); diff --git a/apps/pyconkr-admin/src/components/pages/account/account.tsx b/apps/pyconkr-admin/src/components/pages/account/account.tsx index 7249f46..ca6db0f 100644 --- a/apps/pyconkr-admin/src/components/pages/account/account.tsx +++ b/apps/pyconkr-admin/src/components/pages/account/account.tsx @@ -1,12 +1,13 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useSignedInUserQuery } from "@frontend/common/src/hooks/useAdminAPI"; import { CircularProgress } from "@mui/material"; import { ErrorBoundary, Suspense } from "@suspensive/react"; import * as React from "react"; import { Navigate } from "react-router-dom"; +import { ErrorFallback } from "../../elements/error_fallback"; + export const AccountRedirectPage: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const backendAdminAPIClient = useBackendAdminClient(); const { data } = useSignedInUserQuery(backendAdminAPIClient); diff --git a/apps/pyconkr-admin/src/components/pages/modification_audit/components.tsx b/apps/pyconkr-admin/src/components/pages/modification_audit/components.tsx index 5d69658..3fbfaa1 100644 --- a/apps/pyconkr-admin/src/components/pages/modification_audit/components.tsx +++ b/apps/pyconkr-admin/src/components/pages/modification_audit/components.tsx @@ -1,5 +1,6 @@ import { Components } from "@frontend/common"; import { useBackendAdminClient, usePublicFileQuery } from "@frontend/common/src/hooks/useAdminAPI"; +import { useCommonContext } from "@frontend/common/src/hooks/useCommonContext"; import { Accordion, AccordionDetails, @@ -78,10 +79,11 @@ export const PreviewTextField: React.FC = ({ originalDataset, }; export const PreviewMarkdownField: React.FC = ({ originalDataset, previewDataset, name, label }) => { + const { baseUrl, mdxComponents } = useCommonContext(); return originalDataset[name] === previewDataset[name] ? ( - + ) : ( @@ -91,7 +93,12 @@ export const PreviewMarkdownField: React.FC = ({ origin - + 기존 값을 보려면 여기를 클릭해주세요. @@ -100,7 +107,12 @@ export const PreviewMarkdownField: React.FC = ({ origin - + diff --git a/apps/pyconkr-admin/src/components/pages/modification_audit/list.tsx b/apps/pyconkr-admin/src/components/pages/modification_audit/list.tsx index a9bfd47..f17a7b8 100644 --- a/apps/pyconkr-admin/src/components/pages/modification_audit/list.tsx +++ b/apps/pyconkr-admin/src/components/pages/modification_audit/list.tsx @@ -1,4 +1,3 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useListQuery } from "@frontend/common/src/hooks/useAdminAPI"; import { CircularProgress, Stack, Table, TableBody, TableCell, TableHead, TableRow, Typography } from "@mui/material"; import { ErrorBoundary, Suspense } from "@suspensive/react"; @@ -6,6 +5,7 @@ import * as React from "react"; import { Link } from "react-router-dom"; import { BackendAdminSignInGuard } from "../../elements/admin_signin_guard"; +import { ErrorFallback } from "../../elements/error_fallback"; type ListRowType = { id: string; @@ -16,7 +16,7 @@ type ListRowType = { }; const InnerAdminModificationAuditList: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const backendAdminClient = useBackendAdminClient(); const listQuery = useListQuery(backendAdminClient, "modification-audit", "modification-audit"); diff --git a/apps/pyconkr-admin/src/components/pages/modification_audit/pages.tsx b/apps/pyconkr-admin/src/components/pages/modification_audit/pages.tsx index 732f793..b892a1f 100644 --- a/apps/pyconkr-admin/src/components/pages/modification_audit/pages.tsx +++ b/apps/pyconkr-admin/src/components/pages/modification_audit/pages.tsx @@ -1,4 +1,3 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useModificationAuditPreviewQuery } from "@frontend/common/src/hooks/useAdminAPI"; import { Box, Button, CircularProgress, Divider, Stack, Typography } from "@mui/material"; import { ErrorBoundary, Suspense } from "@suspensive/react"; @@ -8,6 +7,7 @@ import { Navigate, useParams } from "react-router-dom"; import { ModificationAuditProperties } from "./components"; import { ApproveSubmitConfirmDialog, RejectSubmitConfirmDialog } from "./dialogs"; import { SubModificationAuditPage } from "./sub_pages"; +import { ErrorFallback } from "../../elements/error_fallback"; import { BackendAdminSignInGuard } from "../../elements/admin_signin_guard"; type EditorStateType = { actionStatus?: "approve" | "reject" }; @@ -67,7 +67,7 @@ const InnerAdminModificationAuditEditor: React.FC = () => { export const AdminModificationAuditEditor: React.FC = () => { return ( - + }> diff --git a/apps/pyconkr-admin/src/components/pages/page/editor.tsx b/apps/pyconkr-admin/src/components/pages/page/editor.tsx index c67d2d7..59b7c7d 100644 --- a/apps/pyconkr-admin/src/components/pages/page/editor.tsx +++ b/apps/pyconkr-admin/src/components/pages/page/editor.tsx @@ -11,6 +11,7 @@ import { useParams } from "react-router-dom"; import { PageSectionSchema } from "../../../../../../packages/common/src/schemas/backendAdminAPI"; import { muiTheme } from "../../../styles/globalStyles"; import { addErrorSnackbar } from "../../../utils/snackbar"; +import { ErrorFallback } from "../../elements/error_fallback"; import { AdminEditor } from "../../layouts/admin_editor"; type SectionType = PageSectionSchema; @@ -33,6 +34,7 @@ type SectionEditorPropType = CommonSectionEditorPropType & { }; const SectionTextEditor: React.FC = ({ disabled, defaultValue, onInsertNewSection, onChange, onDelete }) => { + const { baseUrl, mdxComponents } = useCommonContext(); const deleteActionButton = commands.group([], { name: "delete", groupName: "delete", @@ -51,7 +53,7 @@ const SectionTextEditor: React.FC = ({ disabled, defa - + @@ -80,7 +82,7 @@ type AdminCMSPageEditorStateType = { }; export const AdminCMSPageEditor: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const { id } = useParams<{ id?: string }>(); const { frontendDomain } = useCommonContext(); diff --git a/apps/pyconkr-admin/src/components/pages/presentation/editor.tsx b/apps/pyconkr-admin/src/components/pages/presentation/editor.tsx index 16daa62..9331103 100644 --- a/apps/pyconkr-admin/src/components/pages/presentation/editor.tsx +++ b/apps/pyconkr-admin/src/components/pages/presentation/editor.tsx @@ -1,5 +1,13 @@ import { Components } from "@frontend/common"; -import { useBackendAdminClient, useCreateMutation, useListQuery, useRemovePreparedMutation, useSchemaQuery, useUpdatePreparedMutation } from "@frontend/common/src/hooks/useAdminAPI"; +import { + useBackendAdminClient, + useCreateMutation, + useListQuery, + useRemovePreparedMutation, + useSchemaQuery, + useUpdatePreparedMutation, +} from "@frontend/common/src/hooks/useAdminAPI"; +import { useCommonContext } from "@frontend/common/src/hooks/useCommonContext"; import { Autocomplete, Box, Button, Card, CardContent, CircularProgress, Stack, styled, Tab, Tabs, TextField, Typography } from "@mui/material"; import { DateTimePicker, LocalizationProvider } from "@mui/x-date-pickers"; import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon"; @@ -10,6 +18,7 @@ import { enqueueSnackbar, OptionsObject } from "notistack"; import * as React from "react"; import { useParams } from "react-router-dom"; +import { ErrorFallback } from "../../elements/error_fallback"; import { AdminEditor } from "../../layouts/admin_editor"; const DUMMY_UUID = "00000000-0000-4000-8000-000000000000"; @@ -87,6 +96,7 @@ type AutoCompleteType = { }; const PresentationSpeakerForm: React.FC = ({ disabled, schema, speaker, onChange, onRemove }) => { + const { baseUrl, mdxComponents } = useCommonContext(); const [formState, setFormState] = React.useState({ tab: "ko" }); const setLanguage = (_: React.SyntheticEvent, tab: "ko" | "en") => setFormState((ps) => ({ ...ps, tab })); @@ -147,7 +157,7 @@ const PresentationSpeakerForm: React.FC = ({ di - + @@ -264,7 +274,7 @@ type PresentationEditorStateType = { }; export const AdminPresentationEditor: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const { id } = useParams<{ id?: string }>(); diff --git a/apps/pyconkr-admin/src/components/pages/sitemap/list.tsx b/apps/pyconkr-admin/src/components/pages/sitemap/list.tsx index 002bb81..67d5c36 100644 --- a/apps/pyconkr-admin/src/components/pages/sitemap/list.tsx +++ b/apps/pyconkr-admin/src/components/pages/sitemap/list.tsx @@ -1,4 +1,3 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useListQuery, useRemovePreparedMutation, useUpdatePreparedMutation } from "@frontend/common/src/hooks/useAdminAPI"; import { buildFlatSiteMap, buildNestedSiteMap } from "@frontend/common/src/utils"; import { Add, Delete, Edit, Save } from "@mui/icons-material"; @@ -23,6 +22,7 @@ import { GroupOptions, ReactSortable, SortableEvent, SortableOptions } from "rea import { FlattenedSiteMapSchema, NestedSiteMapSchema } from "../../../../../../packages/common/src/schemas/backendAdminAPI"; import { BackendAdminSignInGuard } from "../../elements/admin_signin_guard"; +import { ErrorFallback } from "../../elements/error_fallback"; import { AdminEditor } from "../../layouts/admin_editor"; type FlatSiteMap = FlattenedSiteMapSchema; @@ -95,7 +95,7 @@ type InnerSiteMapStateType = { const ModifyDetectionFields: (keyof FlatSiteMap)[] = ["order", "parent_sitemap"]; const InnerSiteMapList: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const backendAdminAPIClient = useBackendAdminClient(); const { data } = useListQuery(backendAdminAPIClient, "cms", "sitemap"); diff --git a/apps/pyconkr-admin/src/components/pages/user/editor.tsx b/apps/pyconkr-admin/src/components/pages/user/editor.tsx index 7bc16c9..614eea4 100644 --- a/apps/pyconkr-admin/src/components/pages/user/editor.tsx +++ b/apps/pyconkr-admin/src/components/pages/user/editor.tsx @@ -1,4 +1,3 @@ -import { Components } from "@frontend/common"; import { useBackendAdminClient, useResetUserPasswordMutation } from "@frontend/common/src/hooks/useAdminAPI"; import { KeyOff } from "@mui/icons-material"; import { Button, ButtonProps, CircularProgress, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; @@ -8,6 +7,7 @@ import { useNavigate, useParams } from "react-router-dom"; import { PasswordResultDialog } from "./password_result_dialog"; import { addErrorSnackbar } from "../../../utils/snackbar"; +import { ErrorFallback } from "../../elements/error_fallback"; import { AdminEditor } from "../../layouts/admin_editor"; type PageStateType = { @@ -18,7 +18,7 @@ type PageStateType = { }; export const AdminUserExtEditor: React.FC = ErrorBoundary.with( - { fallback: Components.ErrorFallback }, + { fallback: ErrorFallback }, Suspense.with({ fallback: }, () => { const { id } = useParams<{ id?: string }>(); const navigate = useNavigate(); diff --git a/apps/pyconkr-participant-portal/src/components/dialogs/public_file_upload.tsx b/apps/pyconkr-participant-portal/src/components/dialogs/public_file_upload.tsx index 7c245f6..9794dc8 100644 --- a/apps/pyconkr-participant-portal/src/components/dialogs/public_file_upload.tsx +++ b/apps/pyconkr-participant-portal/src/components/dialogs/public_file_upload.tsx @@ -108,7 +108,7 @@ export const PublicFileUploadDialog: React.FC = ({ - +