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;