Skip to content

Commit 94c3c8e

Browse files
committed
chore: add customization option for CreatePollContent
1 parent b5019f1 commit 94c3c8e

File tree

9 files changed

+29
-14
lines changed

9 files changed

+29
-14
lines changed

package/src/components/Channel/Channel.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ export type ChannelPropsWithContext<
421421
* Tells if channel is rendering a thread list
422422
*/
423423
threadList?: boolean;
424-
} & Partial<Pick<InputMessageInputContextValue, 'openPollCreationDialog'>>;
424+
} & Partial<Pick<InputMessageInputContextValue, 'openPollCreationDialog' | 'CreatePollContent'>>;
425425

426426
const ChannelWithContext = <
427427
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
@@ -463,6 +463,7 @@ const ChannelWithContext = <
463463
CommandsButton = CommandsButtonDefault,
464464
compressImageQuality,
465465
CooldownTimer = CooldownTimerDefault,
466+
CreatePollContent,
466467
DateHeader = DateHeaderDefault,
467468
deletedMessagesVisibilityType = 'always',
468469
disableIfFrozenChannel = true,
@@ -503,8 +504,8 @@ const ChannelWithContext = <
503504
handleReaction,
504505
handleRetry,
505506
handleThreadReply,
506-
hasCameraPicker = isImagePickerAvailable(),
507507
// If pickDocument isn't available, default to hiding the file picker
508+
hasCameraPicker = isImagePickerAvailable(),
508509
hasCommands = true,
509510
hasCreatePoll,
510511
hasFilePicker = pickDocument !== null,
@@ -2301,6 +2302,7 @@ const ChannelWithContext = <
23012302
CommandsButton,
23022303
compressImageQuality,
23032304
CooldownTimer,
2305+
CreatePollContent,
23042306
doDocUploadRequest,
23052307
doImageUploadRequest,
23062308
editing,

package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export const useCreateInputMessageInputContext = <
2727
CommandsButton,
2828
compressImageQuality,
2929
CooldownTimer,
30+
CreatePollContent,
3031
doDocUploadRequest,
3132
doImageUploadRequest,
3233
editing,
@@ -99,6 +100,7 @@ export const useCreateInputMessageInputContext = <
99100
CommandsButton,
100101
compressImageQuality,
101102
CooldownTimer,
103+
CreatePollContent,
102104
doDocUploadRequest,
103105
doImageUploadRequest,
104106
editing,
@@ -146,6 +148,7 @@ export const useCreateInputMessageInputContext = <
146148
maxMessageLength,
147149
quotedMessageId,
148150
openPollCreationDialog,
151+
CreatePollContent,
149152
showPollCreationDialog,
150153
],
151154
);

package/src/components/MessageInput/MessageInput.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import {
5959
import { isImageMediaLibraryAvailable, triggerHaptic } from '../../native';
6060
import type { Asset, DefaultStreamChatGenerics } from '../../types/types';
6161
import { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';
62-
import { CreatePollContent } from '../Poll/CreatePollContent';
62+
import { CreatePoll } from '../Poll/CreatePollContent';
6363

6464
const styles = StyleSheet.create({
6565
attachmentSeparator: {
@@ -158,6 +158,7 @@ type MessageInputPropsWithContext<
158158
| 'closePollCreationDialog'
159159
| 'showPollCreationDialog'
160160
| 'sendMessage'
161+
| 'CreatePollContent'
161162
> &
162163
Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &
163164
Pick<
@@ -195,6 +196,7 @@ const MessageInputWithContext = <
195196
closePollCreationDialog,
196197
cooldownEndsAt,
197198
CooldownTimer,
199+
CreatePollContent,
198200
editing,
199201
FileUploadPreview,
200202
fileUploads,
@@ -906,8 +908,9 @@ const MessageInputWithContext = <
906908
>
907909
<GestureHandlerRootView style={{ flex: 1 }}>
908910
<SafeAreaView style={{ backgroundColor: white, flex: 1 }}>
909-
<CreatePollContent
911+
<CreatePoll
910912
closePollCreationDialog={closePollCreationDialog}
913+
CreatePollContent={CreatePollContent}
911914
sendMessage={sendMessage}
912915
/>
913916
</SafeAreaView>
@@ -1112,6 +1115,7 @@ export const MessageInput = <
11121115
closePollCreationDialog,
11131116
cooldownEndsAt,
11141117
CooldownTimer,
1118+
CreatePollContent,
11151119
editing,
11161120
FileUploadPreview,
11171121
fileUploads,
@@ -1197,6 +1201,7 @@ export const MessageInput = <
11971201
closePollCreationDialog,
11981202
cooldownEndsAt,
11991203
CooldownTimer,
1204+
CreatePollContent,
12001205
editing,
12011206
FileUploadPreview,
12021207
fileUploads,

package/src/components/Poll/CreatePollContent.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const isMaxNumberOfVotesValid = (maxNumberOfVotes: string) => {
2626
);
2727
};
2828

29-
export const CreatePollContentWithContext = () => {
29+
export const CreatePollContent = () => {
3030
const { t } = useTranslationContext();
3131
const [pollTitle, setPollTitle] = useState('');
3232
const [pollOptions, setPollOptions] = useState<PollOptionData[]>([{ text: '' }]);
@@ -229,13 +229,14 @@ export const CreatePollContentWithContext = () => {
229229
);
230230
};
231231

232-
export const CreatePollContent = ({
232+
export const CreatePoll = ({
233233
closePollCreationDialog,
234+
CreatePollContent: CreatePollContentOverride,
234235
createPollOptionHeight,
235236
sendMessage,
236237
}: Pick<
237238
CreatePollContentContextValue,
238-
'createPollOptionHeight' | 'sendMessage' | 'closePollCreationDialog'
239+
'createPollOptionHeight' | 'sendMessage' | 'closePollCreationDialog' | 'CreatePollContent'
239240
>) => {
240241
const { client } = useChatContext();
241242

@@ -252,7 +253,7 @@ export const CreatePollContent = ({
252253
<CreatePollContentProvider
253254
value={{ closePollCreationDialog, createAndSendPoll, createPollOptionHeight, sendMessage }}
254255
>
255-
<CreatePollContentWithContext />
256+
{CreatePollContentOverride ? <CreatePollContentOverride /> : <CreatePollContent />}
256257
</CreatePollContentProvider>
257258
);
258259
};

package/src/components/Poll/Poll.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
import { usePollState } from './hooks/usePollState';
1717

1818
import {
19-
ChannelContextValue,
19+
MessagesContextValue,
2020
PollContextProvider,
2121
PollContextValue,
2222
usePollContext,
@@ -28,7 +28,7 @@ import type { DefaultStreamChatGenerics } from '../../types/types';
2828
export type PollProps<
2929
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
3030
> = Pick<PollContextValue<StreamChatGenerics>, 'poll' | 'message' | 'PollHeader' | 'PollButtons'> &
31-
Pick<ChannelContextValue<StreamChatGenerics>, 'Poll'>;
31+
Pick<MessagesContextValue<StreamChatGenerics>, 'Poll'>;
3232

3333
export const PollButtons = () => (
3434
<>

package/src/contexts/messageInputContext/MessageInputContext.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,8 @@ export type InputMessageInputContextValue<
413413
*/
414414
compressImageQuality?: number;
415415

416+
CreatePollContent?: React.ComponentType;
417+
416418
/**
417419
* Override file upload request
418420
*
@@ -447,7 +449,6 @@ export type InputMessageInputContextValue<
447449
* It is defined with message type if the editing state is true, else its undefined.
448450
*/
449451
editing?: MessageType<StreamChatGenerics>;
450-
451452
/**
452453
* Prop to override the default emoji search index in auto complete suggestion list.
453454
*/
@@ -485,8 +486,8 @@ export type InputMessageInputContextValue<
485486
*/
486487
InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;
487488
maxMessageLength?: number;
488-
mentionAllAppUsersEnabled?: boolean;
489489
/** Object containing filters/sort/options overrides for an @mention user query */
490+
mentionAllAppUsersEnabled?: boolean;
490491
mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;
491492
/**
492493
* Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.

package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const useCreateMessageInputContext = <
3232
compressImageQuality,
3333
cooldownEndsAt,
3434
CooldownTimer,
35+
CreatePollContent,
3536
doDocUploadRequest,
3637
doImageUploadRequest,
3738
editing,
@@ -157,6 +158,7 @@ export const useCreateMessageInputContext = <
157158
compressImageQuality,
158159
cooldownEndsAt,
159160
CooldownTimer,
161+
CreatePollContent,
160162
doDocUploadRequest,
161163
doImageUploadRequest,
162164
editing,

package/src/contexts/pollContext/createPollContentContext.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export type CreatePollContentContextValue = {
1616
* **Default: ** 71
1717
*/
1818
closePollCreationDialog?: () => void;
19+
CreatePollContent?: React.ComponentType;
1920
createPollOptionHeight?: number;
2021
};
2122

package/src/contexts/pollContext/pollContext.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Poll } from 'stream-chat';
44

55
import { MessageType } from '../../components';
66
import type { DefaultStreamChatGenerics } from '../../types/types';
7-
import { ChannelContextValue } from '../channelContext/ChannelContext';
7+
import { MessagesContextValue } from '../messagesContext/MessagesContext';
88
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
99

1010
import { isTestEnvironment } from '../utils/isTestEnvironment';
@@ -14,7 +14,7 @@ export type PollContextValue<
1414
> = {
1515
message: MessageType<StreamChatGenerics>;
1616
poll: Poll<StreamChatGenerics>;
17-
} & Pick<ChannelContextValue, 'PollButtons' | 'PollHeader'>;
17+
} & Partial<Pick<MessagesContextValue, 'PollButtons' | 'PollHeader'>>;
1818

1919
export const PollContext = React.createContext(DEFAULT_BASE_CONTEXT_VALUE as PollContextValue);
2020

0 commit comments

Comments
 (0)