Skip to content

Commit 8948aeb

Browse files
committed
feat: add undo icons to MessageActions buttons
1 parent 95b277d commit 8948aeb

16 files changed

Lines changed: 153 additions & 47 deletions

File tree

src/components/Icons/icons.tsx

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,35 @@ export const IconBellNotification = createIcon(
7676
<path d='M12.8926 10.7972L12.0674 9.19757C11.9412 8.95287 11.8684 8.68417 11.8545 8.40948L11.7314 5.97003C11.632 3.99113 9.99271 2.43292 8 2.43292C6.00726 2.43292 4.368 3.99015 4.26855 5.96906L4.14453 8.40948C4.13061 8.68431 4.0587 8.95302 3.93262 9.19757L3.10742 10.7972C3.1024 10.807 3.09961 10.8182 3.09961 10.8294C3.09962 10.8684 3.1319 10.8997 3.1709 10.8997H12.8291C12.8681 10.8997 12.9004 10.8684 12.9004 10.8294C12.9004 10.8183 12.8977 10.8071 12.8926 10.7972ZM6.02246 12.0999C6.2796 12.9486 7.06733 13.5667 8 13.5667C8.93265 13.5667 9.72039 12.9486 9.97754 12.0999H6.02246ZM14.0996 10.8294C14.0996 11.5311 13.5308 12.0999 12.8291 12.0999H11.2109C10.9292 13.6174 9.59912 14.7669 8 14.7669C6.40085 14.7669 5.07082 13.6174 4.78906 12.0999H3.1709C2.46916 12.0999 1.90041 11.5311 1.90039 10.8294C1.90039 10.627 1.94825 10.4274 2.04102 10.2474L2.86621 8.64777C2.91399 8.5551 2.94099 8.45314 2.94629 8.34894L3.06934 5.90948C3.20084 3.28834 5.37132 1.2337 8 1.2337C10.6286 1.2337 12.7992 3.28834 12.9307 5.90948L13.0537 8.34894C13.059 8.45327 13.0861 8.55526 13.1338 8.64777L13.959 10.2474C14.0517 10.4273 14.0996 10.6269 14.0996 10.8294Z' />,
7777
);
7878

79+
export const IconBellOff = createIcon(
80+
'IconBellOff',
81+
<path
82+
d='M10.6667 11.5C10.6667 12.9727 9.47274 14.1667 8.00001 14.1667C6.52725 14.1667 5.33334 12.9727 5.33334 11.5M3.895 4.00001C3.44441 4.6587 3.14716 5.43383 3.05722 6.27688L2.5435 9.98361C2.43242 10.7851 3.05506 11.5 3.86421 11.5H11M13.4111 10.6667L12.9428 6.27688C12.6732 3.75002 10.5412 1.83334 8.00001 1.83334C7.02314 1.83334 6.10673 2.11658 5.33334 2.60883M1.83334 1.83334L14.1667 14.1667'
83+
fill='none'
84+
stroke='currentColor'
85+
strokeLinecap='round'
86+
strokeLinejoin='round'
87+
strokeWidth='1.2'
88+
/>,
89+
);
90+
7991
export const IconBookmark = createIcon(
8092
'IconBookmark',
8193
<path d='M6.92056 11.5033C7.57321 11.0641 8.42712 11.0641 9.07974 11.5033L12.1295 13.556C12.145 13.5664 12.1554 13.5685 12.1628 13.5687C12.1722 13.569 12.1849 13.5668 12.1979 13.5599C12.2109 13.553 12.2202 13.5436 12.2253 13.5355C12.2291 13.5293 12.233 13.5196 12.2331 13.5013V3.16638C12.2329 2.76152 11.9046 2.43298 11.4997 2.43298H4.49966C4.09491 2.43316 3.76644 2.76163 3.76627 3.16638V13.5013C3.76631 13.5198 3.77121 13.5293 3.77505 13.5355C3.7801 13.5436 3.7894 13.553 3.8024 13.5599C3.81508 13.5666 3.82721 13.569 3.83658 13.5687C3.84393 13.5685 3.85513 13.5666 3.87076 13.556L6.92056 11.5033ZM13.4333 13.5013C13.433 14.5152 12.3009 15.1181 11.4596 14.5521L8.40982 12.4994C8.19302 12.3535 7.91754 12.3351 7.68619 12.4447L7.59048 12.4994L4.54068 14.5521C3.69947 15.1182 2.56727 14.5154 2.56705 13.5013V3.16638C2.56722 2.09889 3.43217 1.23394 4.49966 1.23376H11.4997C12.5673 1.23376 13.4331 2.09879 13.4333 3.16638V13.5013Z' />,
8294
);
8395

96+
export const IconBookmarkRemove = createIcon(
97+
'IconBookmarkRemove',
98+
<path
99+
d='M3.16669 9.43494V3.16668C3.16669 2.4303 3.76364 1.83334 4.50002 1.83334H11.5C12.2364 1.83334 12.8334 2.4303 12.8334 3.16668V5.89838M3.16669 12.1667V13.501C3.16669 14.0348 3.76278 14.3521 4.20561 14.054L7.25549 12.0011C7.70562 11.6982 8.29442 11.6982 8.74455 12.0011L11.7944 14.054C12.2373 14.3521 12.8334 14.0348 12.8334 13.501V8.50001M1.16669 10.1667L14.8334 5.16668'
100+
fill='none'
101+
stroke='currentColor'
102+
strokeLinecap='round'
103+
strokeLinejoin='round'
104+
strokeWidth='1.2'
105+
/>,
106+
);
107+
84108
export const IconBrowserAISparkle = createIcon(
85109
'IconBrowserAISparkle',
86110
<>
@@ -277,6 +301,26 @@ export const IconClockSolid = createIcon(
277301
/>,
278302
);
279303

304+
export const IconCloseQuote2 = createIcon(
305+
'IconCloseQuote2',
306+
<>
307+
<path
308+
d='M5.50001 3.16666H3.16668C2.4303 3.16666 1.83334 3.76361 1.83334 4.49999V7.35712C1.83334 8.09352 2.4303 8.69046 3.16668 8.69046H4.16668V12.8333C4.16668 12.8333 6.83334 11.7976 6.83334 8.69046V4.49907C6.83334 3.76269 6.23639 3.16666 5.50001 3.16666Z'
309+
fill='none'
310+
stroke='black'
311+
strokeLinejoin='round'
312+
strokeWidth='1.2'
313+
/>
314+
<path
315+
d='M12.8333 3.16666H10.5C9.76361 3.16666 9.16668 3.76361 9.16668 4.49999V7.35712C9.16668 8.09352 9.76361 8.69046 10.5 8.69046H11.5V12.8333C11.5 12.8333 14.1667 11.7976 14.1667 8.69046V4.49907C14.1667 3.76269 13.5697 3.16666 12.8333 3.16666Z'
316+
fill='none'
317+
stroke='black'
318+
strokeLinejoin='round'
319+
strokeWidth='1.2'
320+
/>
321+
</>,
322+
);
323+
280324
export const IconCode = createIcon(
281325
'IconCode',
282326
<path d='M12.9004 3.83301C12.9002 3.42825 12.5718 3.09978 12.167 3.09961H3.83301C3.42826 3.09979 3.09979 3.42826 3.09961 3.83301V12.167C3.09978 12.5718 3.42825 12.9002 3.83301 12.9004H12.167C12.5718 12.9002 12.9002 12.5718 12.9004 12.167V3.83301ZM6.40918 5.57617C6.64349 5.34186 7.0235 5.34186 7.25781 5.57617C7.49169 5.8104 7.49169 6.1896 7.25781 6.42383L5.72949 7.95312C5.70395 7.97905 5.70297 8.02095 5.72852 8.04688L7.25781 9.57617C7.49169 9.8104 7.49169 10.1896 7.25781 10.4238C7.0235 10.6581 6.64349 10.6581 6.40918 10.4238L4.88086 8.89551C4.38617 8.40086 4.38617 7.59914 4.88086 7.10449L6.40918 5.57617ZM8.74219 5.57617C8.9765 5.34186 9.35651 5.34186 9.59082 5.57617L11.1191 7.10449C11.6138 7.59914 11.6138 8.40086 11.1191 8.89551L9.59082 10.4238C9.35651 10.6581 8.9765 10.6581 8.74219 10.4238C8.50831 10.1896 8.50831 9.8104 8.74219 9.57617L10.2715 8.04688C10.297 8.02095 10.297 7.97905 10.2715 7.95312L8.74219 6.42383C8.50831 6.1896 8.50831 5.8104 8.74219 5.57617ZM14.0996 12.167C14.0994 13.2345 13.2345 14.0994 12.167 14.0996H3.83301C2.76552 14.0994 1.90057 13.2345 1.90039 12.167V3.83301C1.90057 2.76552 2.76552 1.90057 3.83301 1.90039H12.167C13.2345 1.90057 14.0994 2.76552 14.0996 3.83301V12.167Z' />,
@@ -403,11 +447,13 @@ export const IconExclamationCircle = createIcon(
403447
<>
404448
<path
405449
d='M7.99999 14.1667C11.4058 14.1667 14.1667 11.4058 14.1667 8C14.1667 4.59425 11.4058 1.83334 7.99999 1.83334C4.59424 1.83334 1.83333 4.59425 1.83333 8C1.83333 11.4058 4.59424 14.1667 7.99999 14.1667Z'
450+
fill='none'
406451
stroke='currentColor'
407452
strokeWidth='1.2'
408453
/>
409454
<path
410455
d='M8 5.16666V8.16666'
456+
fill='none'
411457
stroke='currentColor'
412458
strokeLinecap='round'
413459
strokeWidth='1.2'
@@ -858,6 +904,18 @@ export const IconUnlocked = createIcon(
858904
<path d='M12.2331 7.83337C12.2331 7.42834 11.9047 7.09998 11.4997 7.09998H4.49966C4.0948 7.10015 3.76627 7.42846 3.76627 7.83337V12.8334C3.76627 13.2383 4.0948 13.5666 4.49966 13.5668H11.4997C11.9047 13.5668 12.2331 13.2384 12.2331 12.8334V7.83337ZM7.40005 11.3334V9.33337C7.40005 9.00211 7.66844 8.73394 7.99966 8.73376C8.33104 8.73376 8.60025 9.002 8.60025 9.33337V11.3334C8.60025 11.6647 8.33104 11.933 7.99966 11.933C7.66844 11.9328 7.40005 11.6646 7.40005 11.3334ZM13.4333 12.8334C13.4333 13.9011 12.5674 14.767 11.4997 14.767H4.49966C3.43207 14.7668 2.56705 13.901 2.56705 12.8334V7.83337C2.56705 6.76571 3.43207 5.89996 4.49966 5.89978H4.56705V4.66638C4.56722 2.77046 6.10374 1.23394 7.99966 1.23376C9.69077 1.23376 11.0955 2.45571 11.3805 4.06482C11.4382 4.39102 11.2204 4.70236 10.8942 4.76013C10.568 4.81777 10.2567 4.60001 10.1989 4.2738C10.0136 3.22781 9.09868 2.43298 7.99966 2.43298C6.76649 2.43316 5.76644 3.4332 5.76627 4.66638V5.89978H11.4997C12.5674 5.89978 13.4333 6.7656 13.4333 7.83337V12.8334Z' />,
859905
);
860906

907+
export const IconUnpin = createIcon(
908+
'IconUnpin',
909+
<path
910+
d='M7.83334 4.66666L8.85241 2.52971C9.25014 1.70108 10.3473 1.51394 10.9973 2.16388L13.8361 5.00274C14.486 5.65267 14.2989 6.74986 13.4703 7.14759L11.3333 8.16666M5.58334 10.4167L8.13948 12.9728C8.91174 13.745 10.234 13.3121 10.4001 12.2327L10.6466 10.6305M5.58334 10.4167L3.02722 7.86052C2.25496 7.08826 2.68785 5.76595 3.76729 5.59988L5.36948 5.35339M5.58334 10.4167L5.58824 10.4117M5.58334 10.4167L2.50001 13.5M1.83334 1.83332L14.1667 14.1667'
911+
fill='none'
912+
stroke='currentColor'
913+
strokeLinecap='round'
914+
strokeLinejoin='round'
915+
strokeWidth='1.2'
916+
/>,
917+
);
918+
861919
export const IconUsers = createIcon(
862920
'IconUsers',
863921
<path d='M11.6012 8.80597C11.7118 8.49361 12.0545 8.3301 12.3668 8.44073C14.0487 9.03645 15.3541 10.3951 15.8659 12.0062C16.0482 12.5804 15.8812 13.1275 15.5348 13.5101C15.1982 13.8819 14.6962 14.0999 14.1666 14.0999H13.8336C13.5024 14.0999 13.2332 13.8315 13.233 13.5003C13.233 13.1689 13.5023 12.8997 13.8336 12.8997H14.1666C14.3735 12.8997 14.5467 12.8132 14.6452 12.7044C14.7339 12.6064 14.7619 12.4971 14.7213 12.3694C14.3254 11.1233 13.3004 10.0442 11.9664 9.57159C11.6542 9.461 11.4908 9.11823 11.6012 8.80597ZM6.16566 7.89972C8.93419 7.89985 11.3034 9.65621 12.0348 11.9866C12.2151 12.5611 12.0473 13.1076 11.7008 13.4896C11.3638 13.861 10.8612 14.0794 10.3317 14.0794H1.99867C1.46923 14.0794 0.967516 13.8609 0.630508 13.4896C0.283919 13.1076 0.115249 12.5611 0.295547 11.9866C1.02701 9.65608 3.39701 7.89972 6.16566 7.89972ZM6.16566 9.09991C3.88889 9.09991 2.00603 10.5461 1.44106 12.346C1.40086 12.4741 1.42959 12.5842 1.51918 12.6829C1.61835 12.7922 1.79184 12.8792 1.99867 12.8792H10.3317C10.5384 12.8792 10.712 12.7922 10.8112 12.6829C10.9008 12.5842 10.9304 12.4741 10.8903 12.346C10.3254 10.5461 8.44236 9.10005 6.16566 9.09991ZM7.90004 4.16632C7.89986 3.20917 7.12383 2.43292 6.16664 2.43292C5.20945 2.43292 4.43342 3.20917 4.43324 4.16632C4.43324 5.12362 5.20935 5.89972 6.16664 5.89972C7.12394 5.89972 7.90004 5.12362 7.90004 4.16632ZM11.733 4.16632C11.7329 3.20917 10.9568 2.43292 9.99965 2.43292C9.66843 2.43275 9.40004 2.16458 9.40004 1.83331C9.40004 1.50205 9.66843 1.23388 9.99965 1.2337C11.6196 1.2337 12.9331 2.54643 12.9332 4.16632C12.9332 5.78636 11.6197 7.09991 9.99965 7.09991C9.66854 7.09974 9.40022 6.83142 9.40004 6.50031C9.40004 6.16904 9.66843 5.8999 9.99965 5.89972C10.9569 5.89972 11.733 5.12362 11.733 4.16632ZM9.10023 4.16632C9.10023 5.78636 7.78668 7.09991 6.16664 7.09991C4.5466 7.09991 3.23305 5.78636 3.23305 4.16632C3.23322 2.54643 4.54671 1.2337 6.16664 1.2337C7.78657 1.2337 9.10006 2.54643 9.10023 4.16632Z' />,

src/components/Icons/styling/Icons.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
}
77

88
.str-chat__icon--exclamation-circle {
9-
fill: none;
9+
//fill: none;
1010
stroke: currentColor;
1111
}

src/components/MessageActions/RemindMeSubmenu.tsx

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,12 @@
11
import React from 'react';
22
import { useChatContext, useMessageContext, useTranslationContext } from '../../context';
3-
import type { BaseContextMenuButtonProps } from '../Dialog';
43
import {
54
ContextMenuBackButton,
65
ContextMenuButton,
76
ContextMenuHeader,
87
useContextMenuContext,
98
} from '../Dialog';
10-
import { IconBellNotification, IconChevronLeft } from '../Icons';
11-
12-
// todo: do we need to have isMine as a prop?
13-
export type RemindMeActionButtonProps = { isMine: boolean } & BaseContextMenuButtonProps;
14-
15-
export const RemindMeActionButton = ({
16-
className,
17-
isMine: _, // eslint-disable-line @typescript-eslint/no-unused-vars
18-
...props
19-
}: RemindMeActionButtonProps) => {
20-
const { t } = useTranslationContext();
21-
22-
return (
23-
<ContextMenuButton className={className} Icon={IconBellNotification} {...props}>
24-
{t('Remind Me')}
25-
</ContextMenuButton>
26-
);
27-
};
9+
import { IconChevronLeft } from '../Icons';
2810

2911
export const RemindMeSubmenuHeader = () => {
3012
const { t } = useTranslationContext();

src/components/MessageActions/defaults.tsx

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,23 @@ import React from 'react';
33

44
import {
55
IconArrowRotateClockwise,
6+
IconBellNotification,
7+
IconBellOff,
68
IconBookmark,
9+
IconBookmarkRemove,
710
IconBubbleText6ChatMessage,
811
IconBubbleWideNotificationChatMessage,
912
IconCircleBanSign,
13+
IconCloseQuote2,
1014
IconEditBig,
1115
IconFlag2,
1216
IconMute,
17+
IconPeopleAdded,
1318
IconPin,
1419
IconSquareBehindSquare2_Copy,
1520
IconTrashBin,
21+
IconUnpin,
22+
IconVolumeFull,
1623
isUserMuted,
1724
useMessageComposer,
1825
useMessageReminder,
@@ -29,7 +36,6 @@ import {
2936
useTranslationContext,
3037
} from '../../context';
3138
import {
32-
RemindMeActionButton,
3339
RemindMeSubmenu,
3440
RemindMeSubmenuHeader,
3541
} from '../../components/MessageActions/RemindMeSubmenu';
@@ -87,6 +93,7 @@ const DefaultMessageActionComponents = {
8793
<ContextMenuButton
8894
aria-label={t('aria/Quote Message')}
8995
className={msgActionsBoxButtonClassName}
96+
Icon={IconCloseQuote2}
9097
onClick={() => {
9198
handleQuote();
9299
closeMenu();
@@ -104,7 +111,7 @@ const DefaultMessageActionComponents = {
104111
<ContextMenuButton
105112
aria-label={isPinned ? t('aria/Unpin Message') : t('aria/Pin Message')}
106113
className={msgActionsBoxButtonClassName}
107-
Icon={IconPin}
114+
Icon={isPinned ? IconUnpin : IconPin}
108115
onClick={(event) => {
109116
handlePin(event);
110117
closeMenu();
@@ -187,46 +194,60 @@ const DefaultMessageActionComponents = {
187194
</ContextMenuButton>
188195
);
189196
},
190-
RemindMe({ openSubmenu }: ContextMenuItemProps) {
191-
const { isMyMessage } = useMessageContext();
197+
RemindMe({ closeMenu, openSubmenu }: ContextMenuItemProps) {
198+
const { client } = useChatContext();
192199
const { t } = useTranslationContext();
200+
const { message } = useMessageContext();
201+
const reminder = useMessageReminder(message.id);
202+
const messageAlreadyBookmarked = reminder && !reminder?.remindAt;
203+
204+
if (messageAlreadyBookmarked) return null;
193205

194206
return (
195-
<RemindMeActionButton
196-
aria-label={t('aria/Remind Me Message')}
207+
<ContextMenuButton
208+
aria-label={reminder ? t('aria/Remind Me Message') : t('aria/Remove Reminder')}
197209
className={msgActionsBoxButtonClassName}
198-
hasSubMenu
199-
isMine={isMyMessage()}
210+
hasSubMenu={!reminder}
211+
Icon={reminder ? IconBellOff : IconBellNotification}
200212
onClick={() => {
201-
openSubmenu({
202-
Header: RemindMeSubmenuHeader,
203-
Submenu: RemindMeSubmenu,
204-
});
213+
if (reminder) {
214+
client.reminders.deleteReminder(reminder.id);
215+
closeMenu();
216+
} else {
217+
openSubmenu({
218+
Header: RemindMeSubmenuHeader,
219+
Submenu: RemindMeSubmenu,
220+
});
221+
}
205222
}}
206-
/>
223+
>
224+
{reminder ? t('Remove reminder') : t('Remind me')}
225+
</ContextMenuButton>
207226
);
208227
},
209228
SaveForLater({ closeMenu }: ContextMenuItemProps) {
210229
const { client } = useChatContext();
211230
const { message } = useMessageContext();
212231
const { t } = useTranslationContext();
213232
const reminder = useMessageReminder(message.id);
233+
const messageAlreadyHasReminderScheduled = Boolean(reminder && reminder?.remindAt);
234+
235+
if (messageAlreadyHasReminderScheduled) return null;
214236

215237
return (
216238
<ContextMenuButton
217-
aria-label={t('aria/Bookmark Message')}
239+
aria-label={
240+
reminder ? t('aria/Remove Save For Later') : t('aria/Bookmark Message')
241+
}
218242
className={msgActionsBoxButtonClassName}
219-
Icon={reminder ? IconBookmark : IconBookmark} // todo: what Icon for "Remove reminder" action
243+
Icon={reminder ? IconBookmarkRemove : IconBookmark}
220244
onClick={() => {
221-
if (reminder) {
222-
client.reminders.deleteReminder(reminder.id);
223-
} else {
224-
client.reminders.createReminder({ messageId: message.id });
225-
}
245+
if (reminder) client.reminders.deleteReminder(reminder.id);
246+
else client.reminders.createReminder({ messageId: message.id });
226247
closeMenu();
227248
}}
228249
>
229-
{reminder ? t('Remove reminder') : t('Save for later')}
250+
{reminder ? t('Remove save for later') : t('Save for later')}
230251
</ContextMenuButton>
231252
);
232253
},
@@ -258,7 +279,7 @@ const DefaultMessageActionComponents = {
258279
<ContextMenuButton
259280
aria-label={isMuted ? t('aria/Unmute User') : t('aria/Mute User')}
260281
className={msgActionsBoxButtonClassName}
261-
Icon={isMuted ? IconMute : IconMute} // todo: what icon for "Unmute" action
282+
Icon={isMuted ? IconVolumeFull : IconMute}
262283
onClick={(event) => {
263284
handleMute(event);
264285
closeMenu();
@@ -299,11 +320,8 @@ const DefaultMessageActionComponents = {
299320
return (
300321
<ContextMenuButton
301322
aria-label={isBlocked ? t('aria/Unblock User') : t('aria/Block User')}
302-
className={clsx(
303-
msgActionsBoxButtonClassName,
304-
msgActionsBoxButtonClassNameDestructive,
305-
)}
306-
Icon={isBlocked ? IconCircleBanSign : IconCircleBanSign} // todo: what icon for "Unblock User" action
323+
className={clsx(msgActionsBoxButtonClassName)}
324+
Icon={isBlocked ? IconPeopleAdded : IconCircleBanSign}
307325
onClick={() => {
308326
const targetId = message.user?.id;
309327
if (targetId) {

src/i18n/de.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@
7474
"aria/Remind Me Options": "Erinnerungsoptionen",
7575
"aria/Remove attachment": "Anhang entfernen",
7676
"aria/Remove location attachment": "Standortanhang entfernen",
77+
"aria/Remove Reminder": "Erinnerung entfernen",
78+
"aria/Remove Save For Later": "„Später ansehen“ entfernen",
7779
"aria/Resend Message": "Nachricht erneut senden",
7880
"aria/Retry upload": "Upload erneut versuchen",
7981
"aria/Search results": "Suchergebnisse",
@@ -216,8 +218,10 @@
216218
"Quote Reply": "Zitat-Antwort",
217219
"Reached the vote limit. Remove an existing vote first.": "Das Abstimmungslimit wurde erreicht. Entfernen Sie zuerst eine bestehende Stimme.",
218220
"Recording format is not supported and cannot be reproduced": "Aufnahmeformat wird nicht unterstützt und kann nicht wiedergegeben werden",
221+
"Remind me": "Erinnern",
219222
"Remind Me": "Erinnern",
220223
"Remove reminder": "Erinnerung entfernen",
224+
"Remove save for later": "„Später ansehen“ entfernen",
221225
"Reply": "Antworten",
222226
"Reply to {{ authorName }}": "Antwort an {{ authorName }}",
223227
"Reply to Message": "Auf Nachricht antworten",

src/i18n/en.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@
7474
"aria/Remind Me Options": "aria/Remind Me Options",
7575
"aria/Remove attachment": "Remove attachment",
7676
"aria/Remove location attachment": "Remove location attachment",
77+
"aria/Remove Reminder": "Remove Reminder",
78+
"aria/Remove Save For Later": "Remove Save For Later",
7779
"aria/Resend Message": "Resend Message",
7880
"aria/Retry upload": "Retry upload",
7981
"aria/Search results": "Search results",
@@ -216,8 +218,10 @@
216218
"Quote Reply": "Quote Reply",
217219
"Reached the vote limit. Remove an existing vote first.": "Reached the vote limit. Remove an existing vote first.",
218220
"Recording format is not supported and cannot be reproduced": "Recording format is not supported and cannot be reproduced",
221+
"Remind me": "Remind me",
219222
"Remind Me": "Remind Me",
220223
"Remove reminder": "Remove reminder",
224+
"Remove save for later": "Remove save for later",
221225
"Reply": "Reply",
222226
"Reply to {{ authorName }}": "Reply to {{ authorName }}",
223227
"Reply to Message": "Reply to Message",

src/i18n/es.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
"aria/Remind Me Options": "Opciones de recordatorio",
8080
"aria/Remove attachment": "Eliminar adjunto",
8181
"aria/Remove location attachment": "Eliminar adjunto de ubicación",
82+
"aria/Remove Reminder": "Quitar recordatorio",
83+
"aria/Remove Save For Later": "Quitar guardar para después",
8284
"aria/Resend Message": "Reenviar mensaje",
8385
"aria/Retry upload": "Reintentar carga",
8486
"aria/Search results": "Resultados de búsqueda",
@@ -221,8 +223,10 @@
221223
"Quote Reply": "Responder con cita",
222224
"Reached the vote limit. Remove an existing vote first.": "Se ha alcanzado el límite de votos. Elimina un voto existente primero.",
223225
"Recording format is not supported and cannot be reproduced": "El formato de grabación no es compatible y no se puede reproducir",
226+
"Remind me": "Recordarme",
224227
"Remind Me": "Recordarme",
225228
"Remove reminder": "Eliminar recordatorio",
229+
"Remove save for later": "Quitar guardar para después",
226230
"Reply": "Responder",
227231
"Reply to {{ authorName }}": "Responder a {{ authorName }}",
228232
"Reply to Message": "Responder al mensaje",

0 commit comments

Comments
 (0)