Skip to content

Commit 74237d5

Browse files
committed
refactor: add MessageDraftComposerMiddlewareValue type
1 parent 3f85887 commit 74237d5

File tree

9 files changed

+55
-91
lines changed

9 files changed

+55
-91
lines changed

src/messageComposer/middleware/messageComposer/attachments.ts

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import type {
2-
MessageComposerMiddlewareValue,
3-
MessageDraftComposerMiddlewareValue,
4-
} from './types';
5-
import type { MessageComposer } from '../../messageComposer';
1+
import type { MiddlewareHandlerParams } from '../../../middleware';
62
import type { Attachment } from '../../../types';
3+
import type { MessageComposer } from '../../messageComposer';
74
import type { LocalAttachment } from '../../types';
5+
import type {
6+
MessageComposerMiddlewareValueState,
7+
MessageDraftComposerMiddlewareValueState,
8+
} from './types';
89

910
const localAttachmentToAttachment = (localAttachment: LocalAttachment) => {
1011
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -17,12 +18,7 @@ export const createAttachmentsCompositionMiddleware = (composer: MessageComposer
1718
compose: ({
1819
input,
1920
nextHandler,
20-
}: {
21-
input: MessageComposerMiddlewareValue;
22-
nextHandler: (
23-
input: MessageComposerMiddlewareValue,
24-
) => Promise<MessageComposerMiddlewareValue>;
25-
}) => {
21+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
2622
const { attachmentManager } = composer;
2723
if (!attachmentManager) return nextHandler(input);
2824

@@ -68,12 +64,7 @@ export const createDraftAttachmentsCompositionMiddleware = (
6864
compose: ({
6965
input,
7066
nextHandler,
71-
}: {
72-
input: MessageDraftComposerMiddlewareValue;
73-
nextHandler: (
74-
input: MessageDraftComposerMiddlewareValue,
75-
) => Promise<MessageDraftComposerMiddlewareValue>;
76-
}) => {
67+
}: MiddlewareHandlerParams<MessageDraftComposerMiddlewareValueState>) => {
7768
const { attachmentManager } = composer;
7869
if (!attachmentManager) return nextHandler(input);
7970

src/messageComposer/middleware/messageComposer/cleanData.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
1+
import type { MiddlewareHandlerParams } from '../../../middleware';
12
import { formatMessage, toUpdatedMessagePayload } from '../../../utils';
23
import type { MessageComposer } from '../../messageComposer';
3-
import type { MessageComposerMiddlewareValue } from './types';
4+
import type { MessageComposerMiddlewareValueState } from './types';
45

56
export const createCompositionDataCleanupMiddleware = (composer: MessageComposer) => ({
67
id: 'stream-io/message-composer-middleware/data-cleanup',
78
compose: ({
89
input,
910
nextHandler,
10-
}: {
11-
input: MessageComposerMiddlewareValue;
12-
nextHandler: (
13-
input: MessageComposerMiddlewareValue,
14-
) => Promise<MessageComposerMiddlewareValue>;
15-
}) => {
11+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
1612
const common = {
1713
type: composer.editedMessage?.type ?? 'regular',
1814
};

src/messageComposer/middleware/messageComposer/compositionValidation.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1+
import { textIsEmpty } from '../../textComposer';
12
import type {
2-
MessageComposerMiddlewareValue,
3-
MessageDraftComposerMiddlewareValue,
3+
MessageComposerMiddlewareValueState,
4+
MessageDraftComposerMiddlewareValueState,
45
} from './types';
5-
import { textIsEmpty } from '../../textComposer';
66
import type { MessageComposer } from '../../messageComposer';
7+
import type { MiddlewareHandlerParams } from '../../../middleware';
78

89
export const createCompositionValidationMiddleware = (composer: MessageComposer) => ({
910
id: 'stream-io/message-composer-middleware/data-validation',
1011
compose: async ({
1112
input,
1213
nextHandler,
13-
}: {
14-
input: MessageComposerMiddlewareValue;
15-
nextHandler: (
16-
input: MessageComposerMiddlewareValue,
17-
) => Promise<MessageComposerMiddlewareValue>;
18-
}) => {
14+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
1915
const { maxLengthOnSend } = composer.config.text ?? {};
2016
const inputText = input.state.message.text ?? '';
2117
const isEmptyMessage =
@@ -41,12 +37,7 @@ export const createDraftCompositionValidationMiddleware = (
4137
compose: async ({
4238
input,
4339
nextHandler,
44-
}: {
45-
input: MessageDraftComposerMiddlewareValue;
46-
nextHandler: (
47-
input: MessageDraftComposerMiddlewareValue,
48-
) => Promise<MessageDraftComposerMiddlewareValue>;
49-
}) => {
40+
}: MiddlewareHandlerParams<MessageDraftComposerMiddlewareValueState>) => {
5041
const hasData =
5142
!textIsEmpty(input.state.draft.text ?? '') ||
5243
input.state.draft.attachments?.length ||

src/messageComposer/middleware/messageComposer/linkPreviews.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1+
import type { MiddlewareHandlerParams } from '../../../middleware';
2+
import type { Attachment } from '../../../types';
3+
import type { MessageComposer } from '../../messageComposer';
14
import type {
2-
MessageComposerMiddlewareValue,
3-
MessageDraftComposerMiddlewareValue,
5+
MessageComposerMiddlewareValueState,
6+
MessageDraftComposerMiddlewareValueState,
47
} from './types';
5-
import type { MessageComposer } from '../../messageComposer';
6-
import type { Attachment } from '../../../types';
78

89
export const createLinkPreviewsCompositionMiddleware = (composer: MessageComposer) => ({
910
id: 'stream-io/message-composer-middleware/link-previews',
1011
compose: ({
1112
input,
1213
nextHandler,
13-
}: {
14-
input: MessageComposerMiddlewareValue;
15-
nextHandler: (
16-
input: MessageComposerMiddlewareValue,
17-
) => Promise<MessageComposerMiddlewareValue>;
18-
}) => {
14+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
1915
const { linkPreviewsManager } = composer;
2016
if (!linkPreviewsManager) return nextHandler(input);
2117

@@ -66,12 +62,7 @@ export const createDraftLinkPreviewsCompositionMiddleware = (
6662
compose: ({
6763
input,
6864
nextHandler,
69-
}: {
70-
input: MessageDraftComposerMiddlewareValue;
71-
nextHandler: (
72-
input: MessageDraftComposerMiddlewareValue,
73-
) => Promise<MessageDraftComposerMiddlewareValue>;
74-
}) => {
65+
}: MiddlewareHandlerParams<MessageDraftComposerMiddlewareValueState>) => {
7566
const { linkPreviewsManager } = composer;
7667
if (!linkPreviewsManager) return nextHandler(input);
7768

src/messageComposer/middleware/messageComposer/messageComposerState.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import type {
2-
MessageComposerMiddlewareValue,
3-
MessageDraftComposerMiddlewareValue,
2+
MessageComposerMiddlewareValueState,
3+
MessageDraftComposerMiddlewareValueState,
44
} from './types';
55
import type { MessageComposer } from '../../messageComposer';
66
import type { LocalMessage, LocalMessageBase } from '../../../types';
7+
import type { MiddlewareHandlerParams } from '../../../middleware';
78

89
export const createMessageComposerStateCompositionMiddleware = (
910
composer: MessageComposer,
@@ -12,12 +13,7 @@ export const createMessageComposerStateCompositionMiddleware = (
1213
compose: ({
1314
input,
1415
nextHandler,
15-
}: {
16-
input: MessageComposerMiddlewareValue;
17-
nextHandler: (
18-
input: MessageComposerMiddlewareValue,
19-
) => Promise<MessageComposerMiddlewareValue>;
20-
}) => {
16+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
2117
const payload: Pick<LocalMessage, 'poll_id' | 'quoted_message_id'> = {};
2218
if (composer.quotedMessage) {
2319
payload.quoted_message_id = composer.quotedMessage.id;
@@ -51,12 +47,7 @@ export const createDraftMessageComposerStateCompositionMiddleware = (
5147
compose: ({
5248
input,
5349
nextHandler,
54-
}: {
55-
input: MessageDraftComposerMiddlewareValue;
56-
nextHandler: (
57-
input: MessageDraftComposerMiddlewareValue,
58-
) => Promise<MessageDraftComposerMiddlewareValue>;
59-
}) => {
50+
}: MiddlewareHandlerParams<MessageDraftComposerMiddlewareValueState>) => {
6051
const payload: Pick<LocalMessage, 'poll_id' | 'quoted_message_id'> = {};
6152
if (composer.quotedMessage) {
6253
payload.quoted_message_id = composer.quotedMessage.id;

src/messageComposer/middleware/messageComposer/textComposer.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
import type {
2-
MessageComposerMiddlewareValue,
3-
MessageDraftComposerMiddlewareValue,
2+
MessageComposerMiddlewareValueState,
3+
MessageDraftComposerMiddlewareValueState,
44
} from './types';
55
import type { MessageComposer } from '../../messageComposer';
6+
import type { MiddlewareHandlerParams } from '../../../middleware';
67

78
export const createTextComposerCompositionMiddleware = (composer: MessageComposer) => ({
89
id: 'stream-io/message-composer-middleware/text-composition',
910
compose: ({
1011
input,
1112
nextHandler,
12-
}: {
13-
input: MessageComposerMiddlewareValue;
14-
nextHandler: (
15-
input: MessageComposerMiddlewareValue,
16-
) => Promise<MessageComposerMiddlewareValue>;
17-
}) => {
13+
}: MiddlewareHandlerParams<MessageComposerMiddlewareValueState>) => {
1814
if (!composer.textComposer) return nextHandler(input);
1915
const { mentionedUsers, text } = composer.textComposer;
2016
// Instead of checking if a user is still mentioned every time the text changes,
@@ -57,12 +53,7 @@ export const createDraftTextComposerCompositionMiddleware = (
5753
compose: ({
5854
input,
5955
nextHandler,
60-
}: {
61-
input: MessageDraftComposerMiddlewareValue;
62-
nextHandler: (
63-
input: MessageDraftComposerMiddlewareValue,
64-
) => Promise<MessageDraftComposerMiddlewareValue>;
65-
}) => {
56+
}: MiddlewareHandlerParams<MessageDraftComposerMiddlewareValueState>) => {
6657
if (!composer.textComposer) return nextHandler(input);
6758
const { maxLengthOnSend } = composer.config.text ?? {};
6859
const { mentionedUsers, text: inputText } = composer.textComposer;

src/messageComposer/middleware/pollComposer/composition.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
import type { Middleware } from '../../../middleware';
2-
import type { MessageComposer } from '../../messageComposer';
31
import type { PollComposerCompositionMiddlewareValueState } from './types';
2+
import type { MessageComposer } from '../../messageComposer';
3+
import type { Middleware } from '../../../middleware';
4+
import type { MiddlewareHandlerParams } from '../../../middleware';
45

56
export const createPollCompositionValidationMiddleware = (
67
composer: MessageComposer,
78
): Middleware<PollComposerCompositionMiddlewareValueState> => ({
89
id: 'stream-io/poll-composer-composition',
9-
compose: ({ input, nextHandler }) => {
10+
compose: ({
11+
input,
12+
nextHandler,
13+
}: MiddlewareHandlerParams<PollComposerCompositionMiddlewareValueState>) => {
1014
if (composer.pollComposer.canCreatePoll) return nextHandler(input);
1115
return nextHandler({ ...input, status: 'discard' });
1216
},

src/messageComposer/middleware/pollComposer/state.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type {
55
} from './types';
66
import { generateUUIDv4 } from '../../../utils';
77
import type { Middleware } from '../../../middleware';
8-
8+
import type { MiddlewareHandlerParams } from '../../../middleware';
99
export const VALID_MAX_VOTES_VALUE_REGEX = /^([2-9]|10)$/;
1010

1111
export const MAX_POLL_OPTIONS = 100 as const;
@@ -121,7 +121,10 @@ const processors: Partial<Record<keyof PollComposerState['data'], Processor>> =
121121
export const createPollComposerStateMiddleware =
122122
(): Middleware<PollComposerStateMiddlewareValueState> => ({
123123
id: 'stream-io/poll-composer-state-processing',
124-
handleFieldChange: ({ input, nextHandler }) => {
124+
handleFieldChange: ({
125+
input,
126+
nextHandler,
127+
}: MiddlewareHandlerParams<PollComposerStateMiddlewareValueState>) => {
125128
if (!input.state.targetFields) return nextHandler(input);
126129
const {
127130
state: { previousState, targetFields },
@@ -167,7 +170,10 @@ export const createPollComposerStateMiddleware =
167170
},
168171
});
169172
},
170-
handleFieldBlur: ({ input, nextHandler }) => {
173+
handleFieldBlur: ({
174+
input,
175+
nextHandler,
176+
}: MiddlewareHandlerParams<PollComposerStateMiddlewareValueState>) => {
171177
const {
172178
state: { previousState, targetFields },
173179
} = input;

src/middleware.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@ export type MiddlewareValue<TState> = {
1818
status?: MiddlewareStatus;
1919
};
2020

21-
export type MiddlewareHandler<TState> = (params: {
21+
export type MiddlewareHandlerParams<TState> = {
2222
input: MiddlewareValue<TState>;
2323
nextHandler: (input: MiddlewareValue<TState>) => Promise<MiddlewareValue<TState>>;
24-
}) => Promise<MiddlewareValue<TState>>;
24+
};
25+
export type MiddlewareHandler<TState> = (
26+
params: MiddlewareHandlerParams<TState>,
27+
) => Promise<MiddlewareValue<TState>>;
2528

2629
export type Middleware<TState> = {
2730
id: string;

0 commit comments

Comments
 (0)