diff --git a/.changeset/ready-taxis-join.md b/.changeset/ready-taxis-join.md new file mode 100644 index 0000000000000..cc8fcdb1db16c --- /dev/null +++ b/.changeset/ready-taxis-join.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Restores Away as a selectable preset in the quick status menu, custom status modal, and account profile page. diff --git a/apps/meteor/client/components/UserStatusMenu.tsx b/apps/meteor/client/components/UserStatusMenu.tsx index 59364ca66ec4c..2ced358d5d0de 100644 --- a/apps/meteor/client/components/UserStatusMenu.tsx +++ b/apps/meteor/client/components/UserStatusMenu.tsx @@ -37,21 +37,16 @@ const UserStatusMenu = ({ const statuses: Array<[value: UserStatusType, label: ReactNode]> = [ [UserStatusType.ONLINE, renderOption(UserStatusType.ONLINE, t('Online'))], + [UserStatusType.AWAY, renderOption(UserStatusType.AWAY, t('Away'))], [UserStatusType.BUSY, renderOption(UserStatusType.BUSY, t('Busy'))], ]; - // Away is no longer manually selectable, but surface it if the user is currently on it - // (e.g., set in a previous version or auto-applied by the server) so they can switch off. - if (status === UserStatusType.AWAY) { - statuses.push([UserStatusType.AWAY, renderOption(UserStatusType.AWAY, t('Away'))]); - } - if (allowInvisibleStatus) { statuses.push([UserStatusType.OFFLINE, renderOption(UserStatusType.OFFLINE, t('Offline'))]); } return statuses; - }, [t, allowInvisibleStatus, status]); + }, [t, allowInvisibleStatus]); const [cursor, handleKeyDown, handleKeyUp, reset, [visible, hide, show]] = useCursor(-1, options, ([selected], [, hide]) => { setStatus(selected); diff --git a/apps/meteor/client/lib/getUserInitialStatus.ts b/apps/meteor/client/lib/getUserInitialStatus.ts index cdc1e0f1fd87f..dd411d39be85a 100644 --- a/apps/meteor/client/lib/getUserInitialStatus.ts +++ b/apps/meteor/client/lib/getUserInitialStatus.ts @@ -15,8 +15,7 @@ export const getUserStatusInitialValues = (user: IUser | null, initialStatusText return { statusText: user?.statusText ?? initialStatusText ?? '', - statusType: - user?.status === UserStatusType.AWAY ? (user?.statusDefault ?? UserStatusType.ONLINE) : (user?.status ?? UserStatusType.ONLINE), + statusType: user?.status ?? UserStatusType.ONLINE, statusDuration: initialExpiration ? 'custom' : '', statusCustomDate: initialDate.toLocaleDateString('en-CA'), statusCustomTime: initialDate.toTimeString().slice(0, 5), diff --git a/apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusItems.tsx b/apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusItems.tsx index 21a983ecfd952..19f0b44ecccb5 100644 --- a/apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusItems.tsx +++ b/apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusItems.tsx @@ -1,5 +1,4 @@ -import type { ICustomUserStatus, IUser } from '@rocket.chat/core-typings'; -import { UserStatus as UserStatusEnum } from '@rocket.chat/core-typings'; +import type { ICustomUserStatus, IUser, UserStatus as UserStatusEnum } from '@rocket.chat/core-typings'; import { Box, Icon, RadioButton } from '@rocket.chat/fuselage'; import type { GenericMenuItemProps } from '@rocket.chat/ui-client'; import { clientCallbacks } from '@rocket.chat/ui-client'; @@ -131,12 +130,10 @@ export const useStatusItems = (user?: IUser): GenericMenuItemProps[] => { }); } - // Presets: filter to Online / Busy / Offline. Keep Away only if user is currently on Away (legacy). const isPresetSelected = (statusType: UserStatusEnum): boolean => !user?.statusText && !customStatusExpiration && user?.status === statusType; const presetItems = (statuses ?? []) .filter((s) => userStatuses.isValidType(s.id)) - .filter((s) => s.statusType !== UserStatusEnum.AWAY || isPresetSelected(UserStatusEnum.AWAY)) .map( (status): GenericMenuItemProps => ({ id: status.id,