Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Fixed a bug where user status is not displayed on first load of a product #9288

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion actions/user_actions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,16 @@ export function autocompleteUsers(username) {
};
}

export function setUserStatus(currentUserId) {
harshilsharma63 marked this conversation as resolved.
Show resolved Hide resolved
return (doDispatch, doGetState) => {
return UserActions.getStatus(currentUserId)(doDispatch, doGetState);
};
}

export function autoResetStatus() {
return async (doDispatch, doGetState) => {
const {currentUserId} = getState().entities.users;
const {data: userStatus} = await UserActions.getStatus(currentUserId)(doDispatch, doGetState);
const {data: userStatus} = await setUserStatus(currentUserId)(doDispatch, doGetState);

if (userStatus.status === UserStatuses.OUT_OF_OFFICE || !userStatus.manual) {
return userStatus;
Expand Down
4 changes: 3 additions & 1 deletion components/status_dropdown/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import {isStatusDropdownOpen} from 'selectors/views/status_dropdown';
import {GenericAction} from 'mattermost-redux/types/actions';
import {GlobalState} from 'types/store';

import {setUserStatus} from '../../actions/user_actions';

import StatusDropdown from './status_dropdown';

function makeMapStateToProps() {
const getCustomStatus = makeGetCustomStatus();

return function mapStateToProps(state: GlobalState) {
const currentUser = getCurrentUser(state);

const userId = currentUser?.id;
const customStatus = getCustomStatus(state, userId);
return {
Expand All @@ -53,6 +54,7 @@ function mapDispatchToProps(dispatch: Dispatch<GenericAction>) {
setStatus,
unsetCustomStatus,
setStatusDropdown,
setUserStatus,
}, dispatch),
};
}
Expand Down
1 change: 1 addition & 0 deletions components/status_dropdown/status_dropdown.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ describe('components/StatusDropdown', () => {
setStatus: jest.fn(),
unsetCustomStatus: jest.fn(),
setStatusDropdown: jest.fn(),
setUserStatus: jest.fn(),
};

const baseProps = {
Expand Down
5 changes: 5 additions & 0 deletions components/status_dropdown/status_dropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type Props = {
setStatus: (status: UserStatus) => ActionFunc;
unsetCustomStatus: () => ActionFunc;
setStatusDropdown: (open: boolean) => void;
setUserStatus: (userID: string) => void;
};
customStatus?: UserCustomStatus;
currentUser: UserProfile;
Expand Down Expand Up @@ -83,6 +84,10 @@ export default class StatusDropdown extends React.PureComponent <Props, State> {
};
}

componentDidMount() {
harshilsharma63 marked this conversation as resolved.
Show resolved Hide resolved
this.props.actions.setUserStatus(this.props.userId);
}

setStatus = (status: string, dndEndTime?: number): void => {
this.props.actions.setStatus({
user_id: this.props.userId,
Expand Down