Skip to content
Snippets Groups Projects
Unverified Commit 1f6a73a8 authored by Douglas Fabris's avatar Douglas Fabris Committed by GitHub
Browse files

[FIX] Custom status doesn't update properly (#23860)


* fix: custom status update

* wip

* fix custom status and translation

* fix: qa

Co-authored-by: default avatargabriellsh <gabriel.henriques@rocket.chat>
parent 1f4c3556
No related branches found
No related tags found
No related merge requests found
...@@ -42,7 +42,7 @@ export const userStatus: UserStatusTypes = { ...@@ -42,7 +42,7 @@ export const userStatus: UserStatusTypes = {
id: UserStatus.BUSY, id: UserStatus.BUSY,
statusType: UserStatus.BUSY, statusType: UserStatus.BUSY,
}, },
invisible: { offline: {
name: UserStatus.OFFLINE, name: UserStatus.OFFLINE,
localizeName: true, localizeName: true,
id: UserStatus.OFFLINE, id: UserStatus.OFFLINE,
......
...@@ -40,20 +40,28 @@ const ADMIN_PERMISSIONS = [ ...@@ -40,20 +40,28 @@ const ADMIN_PERMISSIONS = [
'view-engagement-dashboard', 'view-engagement-dashboard',
]; ];
const setStatus = (status: IUser['status']): void => { const isDefaultStatus = (id: string): boolean =>
AccountBox.setStatus(status); (Object.values(UserStatusEnum) as string[]).includes(id);
const isDefaultStatusName = (_name: string, id: string): _name is UserStatusEnum =>
isDefaultStatus(id);
const setStatus = (status: typeof userStatus.list['']): void => {
AccountBox.setStatus(status.statusType, !isDefaultStatus(status.id) ? status.name : '');
callbacks.run('userStatusManuallySet', status); callbacks.run('userStatusManuallySet', status);
}; };
const getItems = (): ReturnType<typeof AccountBox.getItems> => AccountBox.getItems(); const getItems = (): ReturnType<typeof AccountBox.getItems> => AccountBox.getItems();
const translateStatusName = (t: ReturnType<typeof useTranslation>, name: string): string => { const translateStatusName = (
const isDefaultStatus = (name: string): name is UserStatusEnum => name in UserStatusEnum; t: ReturnType<typeof useTranslation>,
if (isDefaultStatus(name)) { status: typeof userStatus.list[''],
return t(name); ): string => {
if (isDefaultStatusName(status.name, status.id)) {
return t(status.name);
} }
return name; return status.name;
}; };
type UserDropdownProps = { type UserDropdownProps = {
...@@ -148,14 +156,14 @@ const UserDropdown = ({ user, onClose }: UserDropdownProps): ReactElement => { ...@@ -148,14 +156,14 @@ const UserDropdown = ({ user, onClose }: UserDropdownProps): ReactElement => {
.filter(filterInvisibleStatus) .filter(filterInvisibleStatus)
.map((key, i) => { .map((key, i) => {
const status = userStatus.list[key]; const status = userStatus.list[key];
const name = status.localizeName ? translateStatusName(t, status.name) : status.name; const name = status.localizeName ? translateStatusName(t, status) : status.name;
const modifier = status.statusType || user.status; const modifier = status.statusType || user.status;
return ( return (
<Option <Option
key={i} key={i}
onClick={(): void => { onClick={(): void => {
setStatus(status.statusType); setStatus(status);
onClose(); onClose();
}} }}
> >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment