diff --git a/rollup.module-exports.mjs b/rollup.module-exports.mjs
index 2d7a7bd01..7e76c0d4e 100644
--- a/rollup.module-exports.mjs
+++ b/rollup.module-exports.mjs
@@ -32,6 +32,7 @@ export default {
'pubSub/topics': 'src/lib/pubSub/topics.ts',
// hooks
'hooks/useModal': 'src/hooks/useModal/index.tsx',
+ 'hooks/useLocalization': 'src/hooks/useLocalization.ts',
// utils
'utils/message/getOutgoingMessageState': 'src/utils/exports/getOutgoingMessageState.ts',
'utils/message/isVoiceMessage': 'src/utils/isVoiceMessage.ts',
diff --git a/src/hooks/useLocalization.ts b/src/hooks/useLocalization.ts
new file mode 100644
index 000000000..461699385
--- /dev/null
+++ b/src/hooks/useLocalization.ts
@@ -0,0 +1,8 @@
+/**
+ * This file is only for re-exporting the `useLocalization` hook.
+ * It should not be used internally within the project.
+ */
+import { useLocalization } from '../lib/LocalizationContext';
+
+export { useLocalization } from '../lib/LocalizationContext';
+export default useLocalization;
diff --git a/src/lib/LocalizationContext.tsx b/src/lib/LocalizationContext.tsx
index ad269faf2..f17af6bbd 100644
--- a/src/lib/LocalizationContext.tsx
+++ b/src/lib/LocalizationContext.tsx
@@ -21,5 +21,11 @@ const LocalizationProvider = (props: LocalizationProviderProps): React.ReactElem
return {children};
};
-const useLocalization = () => React.useContext(LocalizationContext);
+const useLocalization = () => {
+ const context = React.useContext(LocalizationContext);
+ if (!context) {
+ throw new Error('`useLocalization` hook must be used within `SendbirdProvider` that includes `LocalizationProvider`.');
+ }
+ return context;
+};
export { LocalizationContext, LocalizationProvider, useLocalization };
diff --git a/src/modules/Channel/context/ChannelProvider.tsx b/src/modules/Channel/context/ChannelProvider.tsx
index 6783cee12..d91ec4c0b 100644
--- a/src/modules/Channel/context/ChannelProvider.tsx
+++ b/src/modules/Channel/context/ChannelProvider.tsx
@@ -53,6 +53,8 @@ import { PublishingModuleType } from '../../internalInterfaces';
import { ChannelActionTypes } from './dux/actionTypes';
import { useMessageLayoutDirection } from '../../../hooks/useHTMLTextDirection';
+export { ThreadReplySelectType } from './const'; // export for external usage
+
export interface MessageListParams extends Partial { // make `prevResultSize` and `nextResultSize` to optional
/** @deprecated It won't work even if you activate this props */
reverse?: boolean;
diff --git a/src/modules/GroupChannel/context/GroupChannelProvider.tsx b/src/modules/GroupChannel/context/GroupChannelProvider.tsx
index 586890fdd..ca7f09f4d 100644
--- a/src/modules/GroupChannel/context/GroupChannelProvider.tsx
+++ b/src/modules/GroupChannel/context/GroupChannelProvider.tsx
@@ -28,6 +28,8 @@ import { useMessageActions } from './hooks/useMessageActions';
import { getIsReactionEnabled } from '../../../utils/getIsReactionEnabled';
import { useMessageLayoutDirection } from '../../../hooks/useHTMLTextDirection';
+export { ThreadReplySelectType } from './const'; // export for external usage
+
type OnBeforeHandler = (params: T) => T | Promise;
type MessageListQueryParamsType = Omit & MessageFilterParams;
type MessageActions = ReturnType;