diff --git a/src/api/gramjs/apiBuilders/messages.ts b/src/api/gramjs/apiBuilders/messages.ts
index 196ee6b2d..94feb784c 100644
--- a/src/api/gramjs/apiBuilders/messages.ts
+++ b/src/api/gramjs/apiBuilders/messages.ts
@@ -801,6 +801,7 @@ export function buildLocalMessage(
scheduledAt?: number,
sendAs?: ApiPeer,
story?: ApiStory | ApiStorySkipped,
+ isInvertedMedia?: true,
): ApiMessage {
const localId = getNextLocalMessageId(lastMessageId);
const media = attachment && buildUploadingMedia(attachment);
@@ -835,6 +836,7 @@ export function buildLocalMessage(
}),
...(scheduledAt && { isScheduled: true }),
isForwardingAllowed: true,
+ isInvertedMedia,
} satisfies ApiMessage;
const emojiOnlyCount = getEmojiOnlyCountForMessage(message.content, message.groupedId);
@@ -872,6 +874,7 @@ export function buildLocalForwardedMessage({
senderId,
groupedId,
isInAlbum,
+ isInvertedMedia,
} = message;
const isAudio = content.audio;
@@ -912,6 +915,7 @@ export function buildLocalForwardedMessage({
isInAlbum,
isForwardingAllowed: true,
replyInfo,
+ isInvertedMedia,
...(toThreadId && toChat?.isForum && { isTopicReply: true }),
...(emojiOnlyCount && { emojiOnlyCount }),
diff --git a/src/api/gramjs/methods/messages.ts b/src/api/gramjs/methods/messages.ts
index 27e4a2efa..5730273f1 100644
--- a/src/api/gramjs/methods/messages.ts
+++ b/src/api/gramjs/methods/messages.ts
@@ -269,6 +269,7 @@ export function sendMessage(
sendAs,
shouldUpdateStickerSetOrder,
wasDrafted,
+ isInvertedMedia,
}: {
chat: ApiChat;
lastMessageId?: number;
@@ -288,6 +289,7 @@ export function sendMessage(
sendAs?: ApiPeer;
shouldUpdateStickerSetOrder?: boolean;
wasDrafted?: boolean;
+ isInvertedMedia?: true;
},
onProgress?: ApiOnProgress,
) {
@@ -306,6 +308,7 @@ export function sendMessage(
scheduledAt,
sendAs,
story,
+ isInvertedMedia,
);
onUpdate({
@@ -392,6 +395,7 @@ export function sendMessage(
...(noWebPage && { noWebpage: noWebPage }),
...(sendAs && { sendAs: buildInputPeer(sendAs.id, sendAs.accessHash) }),
...(shouldUpdateStickerSetOrder && { updateStickersetsOrder: shouldUpdateStickerSetOrder }),
+ ...(isInvertedMedia && { invertMedia: isInvertedMedia }),
}), {
shouldThrow: true,
shouldIgnoreUpdates: true,
@@ -585,6 +589,8 @@ export async function editMessage({
const media = attachment && buildUploadingMedia(attachment);
+ const isInvertedMedia = text && !attachment?.shouldSendAsFile ? message.isInvertedMedia : undefined;
+
const newContent = {
...(media || message.content),
...(text && {
@@ -599,6 +605,7 @@ export async function editMessage({
...message,
content: newContent,
emojiOnlyCount: getEmojiOnlyCountForMessage(newContent, message.groupedId),
+ isInvertedMedia,
};
onUpdate({
@@ -624,6 +631,7 @@ export async function editMessage({
id: message.id,
...(isScheduled && { scheduleDate: message.date }),
...(noWebPage && { noWebpage: noWebPage }),
+ ...(isInvertedMedia && { invertMedia: isInvertedMedia }),
}), { shouldThrow: true });
} catch (err) {
if (DEBUG) {
diff --git a/src/assets/font-icons/move-caption-down.svg b/src/assets/font-icons/move-caption-down.svg
new file mode 100644
index 000000000..6cf5cc295
--- /dev/null
+++ b/src/assets/font-icons/move-caption-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/font-icons/move-caption-up.svg b/src/assets/font-icons/move-caption-up.svg
new file mode 100644
index 000000000..1f615fcf8
--- /dev/null
+++ b/src/assets/font-icons/move-caption-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/common/Composer.tsx b/src/components/common/Composer.tsx
index bee36799a..f87128b65 100644
--- a/src/components/common/Composer.tsx
+++ b/src/components/common/Composer.tsx
@@ -887,12 +887,14 @@ const Composer: FC = ({
sendGrouped = attachmentSettings.shouldSendGrouped,
isSilent,
scheduledAt,
+ isInvertedMedia,
}: {
attachments: ApiAttachment[];
sendCompressed?: boolean;
sendGrouped?: boolean;
isSilent?: boolean;
scheduledAt?: number;
+ isInvertedMedia?: true;
}) => {
if (!currentMessageList && !storyId) {
return;
@@ -905,6 +907,8 @@ const Composer: FC = ({
if (!validateTextLength(text, true)) return;
if (!checkSlowMode()) return;
+ isInvertedMedia = text && sendCompressed && sendGrouped ? isInvertedMedia : undefined;
+
if (editingMessage) {
editMessage({
messageList: currentMessageList,
@@ -922,6 +926,7 @@ const Composer: FC = ({
shouldUpdateStickerSetOrder,
attachments: prepareAttachmentsToSend(attachmentsToSend, sendCompressed),
shouldGroupMessages: sendGrouped,
+ isInvertedMedia,
});
}
@@ -935,11 +940,25 @@ const Composer: FC = ({
});
});
+ const handleSendAttachmentsFromModal = useLastCallback((
+ sendCompressed: boolean,
+ sendGrouped: boolean,
+ isInvertedMedia?: true,
+ ) => {
+ sendAttachments({
+ attachments,
+ sendCompressed,
+ sendGrouped,
+ isInvertedMedia,
+ });
+ });
+
const handleSendAttachments = useLastCallback((
sendCompressed: boolean,
sendGrouped: boolean,
isSilent?: boolean,
scheduledAt?: number,
+ isInvertedMedia?: true,
) => {
sendAttachments({
attachments,
@@ -947,6 +966,7 @@ const Composer: FC = ({
sendGrouped,
isSilent,
scheduledAt,
+ isInvertedMedia,
});
});
@@ -1059,8 +1079,8 @@ const Composer: FC = ({
if (!args || Object.keys(restArgs).length === 0) {
void handleSend(Boolean(isSilent), scheduledAt);
} else if (args.sendCompressed !== undefined || args.sendGrouped !== undefined) {
- const { sendCompressed = false, sendGrouped = false } = args;
- void handleSendAttachments(sendCompressed, sendGrouped, isSilent, scheduledAt);
+ const { sendCompressed = false, sendGrouped = false, isInvertedMedia } = args;
+ void handleSendAttachments(sendCompressed, sendGrouped, isSilent, scheduledAt, isInvertedMedia);
} else {
sendMessage({
...args,
@@ -1237,8 +1257,8 @@ const Composer: FC = ({
handleMessageSchedule({ ...additionalArgs, isSilent: true }, scheduledAt, currentMessageList!);
});
} else if (additionalArgs && ('sendCompressed' in additionalArgs || 'sendGrouped' in additionalArgs)) {
- const { sendCompressed = false, sendGrouped = false } = additionalArgs;
- void handleSendAttachments(sendCompressed, sendGrouped, true);
+ const { sendCompressed = false, sendGrouped = false, isInvertedMedia } = additionalArgs;
+ void handleSendAttachments(sendCompressed, sendGrouped, true, undefined, isInvertedMedia);
} else {
void handleSend(true);
}
@@ -1490,15 +1510,19 @@ const Composer: FC = ({
handleMessageSchedule({}, SCHEDULED_WHEN_ONLINE, currentMessageList!);
});
- const handleSendScheduledAttachments = useLastCallback((sendCompressed: boolean, sendGrouped: boolean) => {
- requestCalendar((scheduledAt) => {
- handleMessageSchedule({ sendCompressed, sendGrouped }, scheduledAt, currentMessageList!);
- });
- });
+ const handleSendScheduledAttachments = useLastCallback(
+ (sendCompressed: boolean, sendGrouped: boolean, isInvertedMedia?: true) => {
+ requestCalendar((scheduledAt) => {
+ handleMessageSchedule({ sendCompressed, sendGrouped, isInvertedMedia }, scheduledAt, currentMessageList!);
+ });
+ },
+ );
- const handleSendSilentAttachments = useLastCallback((sendCompressed: boolean, sendGrouped: boolean) => {
- sendSilent({ sendCompressed, sendGrouped });
- });
+ const handleSendSilentAttachments = useLastCallback(
+ (sendCompressed: boolean, sendGrouped: boolean, isInvertedMedia?: true) => {
+ sendSilent({ sendCompressed, sendGrouped, isInvertedMedia });
+ },
+ );
const onSend = useMemo(() => {
switch (mainButtonState) {
@@ -1557,7 +1581,7 @@ const Composer: FC = ({
forceDarkTheme={isInStoryViewer}
onCaptionUpdate={onCaptionUpdate}
onSendSilent={handleSendSilentAttachments}
- onSend={handleSendAttachments}
+ onSend={handleSendAttachmentsFromModal}
onSendScheduled={handleSendScheduledAttachments}
onFileAppend={handleAppendFiles}
onClear={handleClearAttachments}
diff --git a/src/components/middle/composer/AttachmentModal.tsx b/src/components/middle/composer/AttachmentModal.tsx
index 600265f24..c2b683db4 100644
--- a/src/components/middle/composer/AttachmentModal.tsx
+++ b/src/components/middle/composer/AttachmentModal.tsx
@@ -74,12 +74,12 @@ export type OwnProps = {
isForCurrentMessageList?: boolean;
forceDarkTheme?: boolean;
onCaptionUpdate: (html: string) => void;
- onSend: (sendCompressed: boolean, sendGrouped: boolean) => void;
+ onSend: (sendCompressed: boolean, sendGrouped: boolean, isInvertedMedia?: true) => void;
onFileAppend: (files: File[], isSpoiler?: boolean) => void;
onAttachmentsUpdate: (attachments: ApiAttachment[]) => void;
onClear: NoneToVoidFunction;
- onSendSilent: (sendCompressed: boolean, sendGrouped: boolean) => void;
- onSendScheduled: (sendCompressed: boolean, sendGrouped: boolean) => void;
+ onSendSilent: (sendCompressed: boolean, sendGrouped: boolean, isInvertedMedia?: true) => void;
+ onSendScheduled: (sendCompressed: boolean, sendGrouped: boolean, isInvertedMedia?: true) => void;
onCustomEmojiSelect: (emoji: ApiSticker) => void;
onRemoveSymbol: VoidFunction;
onEmojiSelect: (emoji: string) => void;
@@ -167,6 +167,7 @@ const AttachmentModal: FC = ({
(shouldSendCompressed || shouldForceCompression || isInAlbum) && !shouldForceAsFile,
);
const [shouldSendGrouped, setShouldSendGrouped] = useState(attachmentSettings.shouldSendGrouped);
+ const [isInvertedMedia, setIsInvertedMedia] = useState(attachmentSettings.isInvertedMedia);
const {
handleScroll: handleAttachmentsScroll,
@@ -253,6 +254,7 @@ const AttachmentModal: FC = ({
if (isOpen) {
setShouldSendCompressed(shouldSuggestCompression ?? attachmentSettings.shouldCompress);
setShouldSendGrouped(attachmentSettings.shouldSendGrouped);
+ setIsInvertedMedia(attachmentSettings.isInvertedMedia);
}
}, [attachmentSettings, isOpen, shouldSuggestCompression]);
@@ -273,10 +275,11 @@ const AttachmentModal: FC = ({
if (isOpen) {
const send = ((shouldSchedule || shouldSendScheduled) && isForMessage && !editingMessage) ? onSendScheduled
: isSilent ? onSendSilent : onSend;
- send(isSendingCompressed, shouldSendGrouped);
+ send(isSendingCompressed, shouldSendGrouped, isInvertedMedia);
updateAttachmentSettings({
shouldCompress: shouldSuggestCompression === undefined ? isSendingCompressed : undefined,
shouldSendGrouped,
+ isInvertedMedia,
});
}
});
@@ -432,6 +435,14 @@ const AttachmentModal: FC = ({
const isMultiple = renderingAttachments.length > 1;
+ const canInvertMedia = (() => {
+ if (isEditing) return false;
+ if (!hasMedia) return false;
+ if (!shouldForceAsFile && !shouldForceCompression && !isSendingCompressed) return false;
+ if (isMultiple && shouldSendGrouped) return false;
+ return true;
+ })();
+
let title = '';
if (areAllPhotos) {
title = lang(isEditing ? 'EditMessageReplacePhoto' : 'PreviewSender.SendPhoto', renderingAttachments.length, 'i');
@@ -466,6 +477,19 @@ const AttachmentModal: FC = ({
)}
{hasMedia && (
<>
+ {
+ canInvertMedia && (!isInvertedMedia ? (
+ // eslint-disable-next-line react/jsx-no-bind
+
+ ) : (
+ // eslint-disable-next-line react/jsx-no-bind
+
+ ))
+ }
{
!shouldForceAsFile && !shouldForceCompression && (isSendingCompressed ? (
// eslint-disable-next-line react/jsx-no-bind
diff --git a/src/global/actions/api/messages.ts b/src/global/actions/api/messages.ts
index 50c981c77..d1be24525 100644
--- a/src/global/actions/api/messages.ts
+++ b/src/global/actions/api/messages.ts
@@ -1407,6 +1407,7 @@ async function sendMessage(global: T, params: {
groupedId?: string;
wasDrafted?: boolean;
lastMessageId?: number;
+ isInvertedMedia?: true;
}) {
let currentMessageKey: MessageKey | undefined;
const progressCallback = params.attachment ? (progress: number, messageKey: MessageKey) => {
diff --git a/src/global/actions/ui/misc.ts b/src/global/actions/ui/misc.ts
index 6a978d61b..636ba1ecd 100644
--- a/src/global/actions/ui/misc.ts
+++ b/src/global/actions/ui/misc.ts
@@ -485,7 +485,7 @@ addActionHandler('requestConfetti', (global, actions, payload): ActionReturnType
addActionHandler('updateAttachmentSettings', (global, actions, payload): ActionReturnType => {
const {
- shouldCompress, shouldSendGrouped,
+ shouldCompress, shouldSendGrouped, isInvertedMedia,
} = payload;
return {
@@ -493,6 +493,7 @@ addActionHandler('updateAttachmentSettings', (global, actions, payload): ActionR
attachmentSettings: {
shouldCompress: shouldCompress ?? global.attachmentSettings.shouldCompress,
shouldSendGrouped: shouldSendGrouped ?? global.attachmentSettings.shouldSendGrouped,
+ isInvertedMedia,
},
};
});
diff --git a/src/global/initialState.ts b/src/global/initialState.ts
index 91de6b242..a85be6699 100644
--- a/src/global/initialState.ts
+++ b/src/global/initialState.ts
@@ -132,6 +132,7 @@ export const INITIAL_GLOBAL_STATE: GlobalState = {
attachmentSettings: {
shouldCompress: true,
shouldSendGrouped: true,
+ isInvertedMedia: undefined,
},
scheduledMessages: {
diff --git a/src/global/types.ts b/src/global/types.ts
index 3989e1278..085f0f985 100644
--- a/src/global/types.ts
+++ b/src/global/types.ts
@@ -296,6 +296,7 @@ export type TabState = {
isSilent?: boolean;
sendGrouped?: boolean;
sendCompressed?: boolean;
+ isInvertedMedia?: true;
};
activeChatFolder: number;
@@ -823,6 +824,7 @@ export type GlobalState = {
attachmentSettings: {
shouldCompress: boolean;
shouldSendGrouped: boolean;
+ isInvertedMedia?: true;
};
attachMenu: {
@@ -1475,6 +1477,7 @@ export interface ActionPayloads {
shouldGroupMessages?: boolean;
messageList?: MessageList;
isReaction?: true; // Reaction to the story are sent in the form of a message
+ isInvertedMedia?: true;
} & WithTabId;
sendInviteMessages: {
chatId: string;
@@ -2905,6 +2908,7 @@ export interface ActionPayloads {
updateAttachmentSettings: {
shouldCompress?: boolean;
shouldSendGrouped?: boolean;
+ isInvertedMedia?: true;
};
updateArchiveSettings: {
diff --git a/src/lib/gramjs/tl/api.d.ts b/src/lib/gramjs/tl/api.d.ts
index b2431e3e1..3c989aa80 100644
--- a/src/lib/gramjs/tl/api.d.ts
+++ b/src/lib/gramjs/tl/api.d.ts
@@ -14151,7 +14151,7 @@ namespace Api {
clearDraft?: true;
noforwards?: true;
updateStickersetsOrder?: true;
- invertMedia?: true;
+ isInvertedMedia?: true;
peer: Api.TypeInputPeer;
replyTo?: Api.TypeInputReplyTo;
media: Api.TypeInputMedia;
diff --git a/src/styles/icons.scss b/src/styles/icons.scss
index cafa6744a..630f3a7af 100644
--- a/src/styles/icons.scss
+++ b/src/styles/icons.scss
@@ -153,119 +153,121 @@ $icons-map: (
"monospace": "\f17a",
"more-circle": "\f17b",
"more": "\f17c",
- "mute": "\f17d",
- "muted": "\f17e",
- "my-notes": "\f17f",
- "new-chat-filled": "\f180",
- "next": "\f181",
- "nochannel": "\f182",
- "noise-suppression": "\f183",
- "non-contacts": "\f184",
- "one-filled": "\f185",
- "open-in-new-tab": "\f186",
- "password-off": "\f187",
- "pause": "\f188",
- "permissions": "\f189",
- "phone-discard-outline": "\f18a",
- "phone-discard": "\f18b",
- "phone": "\f18c",
- "photo": "\f18d",
- "pin-badge": "\f18e",
- "pin-list": "\f18f",
- "pin": "\f190",
- "pinned-chat": "\f191",
- "pinned-message": "\f192",
- "pip": "\f193",
- "play-story": "\f194",
- "play": "\f195",
- "poll": "\f196",
- "previous": "\f197",
- "privacy-policy": "\f198",
- "quote-text": "\f199",
- "quote": "\f19a",
- "readchats": "\f19b",
- "recent": "\f19c",
- "reload": "\f19d",
- "remove-quote": "\f19e",
- "remove": "\f19f",
- "reopen-topic": "\f1a0",
- "replace": "\f1a1",
- "replies": "\f1a2",
- "reply-filled": "\f1a3",
- "reply": "\f1a4",
- "revenue-split": "\f1a5",
- "revote": "\f1a6",
- "save-story": "\f1a7",
- "saved-messages": "\f1a8",
- "schedule": "\f1a9",
- "search": "\f1aa",
- "select": "\f1ab",
- "send-outline": "\f1ac",
- "send": "\f1ad",
- "settings-filled": "\f1ae",
- "settings": "\f1af",
- "share-filled": "\f1b0",
- "share-screen-outlined": "\f1b1",
- "share-screen-stop": "\f1b2",
- "share-screen": "\f1b3",
- "show-message": "\f1b4",
- "sidebar": "\f1b5",
- "skip-next": "\f1b6",
- "skip-previous": "\f1b7",
- "smallscreen": "\f1b8",
- "smile": "\f1b9",
- "sort": "\f1ba",
- "speaker-muted-story": "\f1bb",
- "speaker-outline": "\f1bc",
- "speaker-story": "\f1bd",
- "speaker": "\f1be",
- "spoiler-disable": "\f1bf",
- "spoiler": "\f1c0",
- "sport": "\f1c1",
- "star": "\f1c2",
- "stats": "\f1c3",
- "stealth-future": "\f1c4",
- "stealth-past": "\f1c5",
- "stickers": "\f1c6",
- "stop-raising-hand": "\f1c7",
- "stop": "\f1c8",
- "story-caption": "\f1c9",
- "story-expired": "\f1ca",
- "story-priority": "\f1cb",
- "story-reply": "\f1cc",
- "strikethrough": "\f1cd",
- "tag-add": "\f1ce",
- "tag-crossed": "\f1cf",
- "tag-filter": "\f1d0",
- "tag-name": "\f1d1",
- "tag": "\f1d2",
- "timer": "\f1d3",
- "transcribe": "\f1d4",
- "truck": "\f1d5",
- "unarchive": "\f1d6",
- "underlined": "\f1d7",
- "unlock-badge": "\f1d8",
- "unlock": "\f1d9",
- "unmute": "\f1da",
- "unpin": "\f1db",
- "unread": "\f1dc",
- "up": "\f1dd",
- "user-filled": "\f1de",
- "user-online": "\f1df",
- "user": "\f1e0",
- "video-outlined": "\f1e1",
- "video-stop": "\f1e2",
- "video": "\f1e3",
- "view-once": "\f1e4",
- "voice-chat": "\f1e5",
- "volume-1": "\f1e6",
- "volume-2": "\f1e7",
- "volume-3": "\f1e8",
- "web": "\f1e9",
- "webapp": "\f1ea",
- "word-wrap": "\f1eb",
- "zoom-in": "\f1ec",
- "zoom-out": "\f1ed",
+ "move-caption-down": "\f17d",
+ "move-caption-up": "\f17e",
+ "mute": "\f17f",
+ "muted": "\f180",
+ "my-notes": "\f181",
+ "new-chat-filled": "\f182",
+ "next": "\f183",
+ "nochannel": "\f184",
+ "noise-suppression": "\f185",
+ "non-contacts": "\f186",
+ "one-filled": "\f187",
+ "open-in-new-tab": "\f188",
+ "password-off": "\f189",
+ "pause": "\f18a",
+ "permissions": "\f18b",
+ "phone-discard-outline": "\f18c",
+ "phone-discard": "\f18d",
+ "phone": "\f18e",
+ "photo": "\f18f",
+ "pin-badge": "\f190",
+ "pin-list": "\f191",
+ "pin": "\f192",
+ "pinned-chat": "\f193",
+ "pinned-message": "\f194",
+ "pip": "\f195",
+ "play-story": "\f196",
+ "play": "\f197",
+ "poll": "\f198",
+ "previous": "\f199",
+ "privacy-policy": "\f19a",
+ "quote-text": "\f19b",
+ "quote": "\f19c",
+ "readchats": "\f19d",
+ "recent": "\f19e",
+ "reload": "\f19f",
+ "remove-quote": "\f1a0",
+ "remove": "\f1a1",
+ "reopen-topic": "\f1a2",
+ "replace": "\f1a3",
+ "replies": "\f1a4",
+ "reply-filled": "\f1a5",
+ "reply": "\f1a6",
+ "revenue-split": "\f1a7",
+ "revote": "\f1a8",
+ "save-story": "\f1a9",
+ "saved-messages": "\f1aa",
+ "schedule": "\f1ab",
+ "search": "\f1ac",
+ "select": "\f1ad",
+ "send-outline": "\f1ae",
+ "send": "\f1af",
+ "settings-filled": "\f1b0",
+ "settings": "\f1b1",
+ "share-filled": "\f1b2",
+ "share-screen-outlined": "\f1b3",
+ "share-screen-stop": "\f1b4",
+ "share-screen": "\f1b5",
+ "show-message": "\f1b6",
+ "sidebar": "\f1b7",
+ "skip-next": "\f1b8",
+ "skip-previous": "\f1b9",
+ "smallscreen": "\f1ba",
+ "smile": "\f1bb",
+ "sort": "\f1bc",
+ "speaker-muted-story": "\f1bd",
+ "speaker-outline": "\f1be",
+ "speaker-story": "\f1bf",
+ "speaker": "\f1c0",
+ "spoiler-disable": "\f1c1",
+ "spoiler": "\f1c2",
+ "sport": "\f1c3",
+ "star": "\f1c4",
+ "stats": "\f1c5",
+ "stealth-future": "\f1c6",
+ "stealth-past": "\f1c7",
+ "stickers": "\f1c8",
+ "stop-raising-hand": "\f1c9",
+ "stop": "\f1ca",
+ "story-caption": "\f1cb",
+ "story-expired": "\f1cc",
+ "story-priority": "\f1cd",
+ "story-reply": "\f1ce",
+ "strikethrough": "\f1cf",
+ "tag-add": "\f1d0",
+ "tag-crossed": "\f1d1",
+ "tag-filter": "\f1d2",
+ "tag-name": "\f1d3",
+ "tag": "\f1d4",
+ "timer": "\f1d5",
+ "transcribe": "\f1d6",
+ "truck": "\f1d7",
+ "unarchive": "\f1d8",
+ "underlined": "\f1d9",
+ "unlock-badge": "\f1da",
+ "unlock": "\f1db",
+ "unmute": "\f1dc",
+ "unpin": "\f1dd",
+ "unread": "\f1de",
+ "up": "\f1df",
+ "user-filled": "\f1e0",
+ "user-online": "\f1e1",
+ "user": "\f1e2",
+ "video-outlined": "\f1e3",
+ "video-stop": "\f1e4",
+ "video": "\f1e5",
+ "view-once": "\f1e6",
+ "voice-chat": "\f1e7",
+ "volume-1": "\f1e8",
+ "volume-2": "\f1e9",
+ "volume-3": "\f1ea",
+ "web": "\f1eb",
+ "webapp": "\f1ec",
+ "word-wrap": "\f1ed",
+ "zoom-in": "\f1ee",
+ "zoom-out": "\f1ef",
);
.icon-active-sessions::before {
@@ -640,6 +642,12 @@ $icons-map: (
.icon-more::before {
content: map.get($icons-map, "more");
}
+.icon-move-caption-down::before {
+ content: map.get($icons-map, "move-caption-down");
+}
+.icon-move-caption-up::before {
+ content: map.get($icons-map, "move-caption-up");
+}
.icon-mute::before {
content: map.get($icons-map, "mute");
}
diff --git a/src/styles/icons.woff b/src/styles/icons.woff
index 918e7d860..4a475a454 100644
Binary files a/src/styles/icons.woff and b/src/styles/icons.woff differ
diff --git a/src/styles/icons.woff2 b/src/styles/icons.woff2
index c93254abd..277e867ed 100644
Binary files a/src/styles/icons.woff2 and b/src/styles/icons.woff2 differ
diff --git a/src/types/icons/font.ts b/src/types/icons/font.ts
index ba2344d54..969a176ed 100644
--- a/src/types/icons/font.ts
+++ b/src/types/icons/font.ts
@@ -123,6 +123,8 @@ export type FontIconName =
| 'monospace'
| 'more-circle'
| 'more'
+ | 'move-caption-down'
+ | 'move-caption-up'
| 'mute'
| 'muted'
| 'my-notes'