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 = ({