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

MM-45494: Edit message history #11069

Merged
merged 147 commits into from
Feb 6, 2023
Merged
Show file tree
Hide file tree
Changes from 106 commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
8e68690
check post owner and add click listener to edited
sinansonmez Aug 27, 2022
55ea3ad
change style of the text
sinansonmez Aug 28, 2022
f04abe9
align naming of the variable
sinansonmez Aug 28, 2022
96eadf7
new rhs state added
sinansonmez Aug 28, 2022
6d9b8a1
add empty component
sinansonmez Aug 28, 2022
cfc0aea
add header
sinansonmez Aug 28, 2022
67ff52f
pass post to the action
sinansonmez Aug 29, 2022
becdda5
add post edit item
sinansonmez Aug 29, 2022
c53b30b
fix showhistory action
sinansonmez Aug 29, 2022
3e6d00d
restore icon button is added
sinansonmez Aug 29, 2022
5d00921
fix user image and name alignment
sinansonmez Aug 29, 2022
a9e2049
add currentVersion indicator
sinansonmez Aug 29, 2022
cce0dc3
implement toggle
sinansonmez Aug 29, 2022
3a142d1
update selectedPostId in global state
sinansonmez Aug 31, 2022
ff916de
update state with channelId and selectedPost time
sinansonmez Aug 31, 2022
703d8c1
fix visibility
sinansonmez Sep 1, 2022
ffd2f17
Merge branch 'mattermost:master' into MM-45494-edit-message-history
sinansonmez Sep 2, 2022
d3b6cbd
fix background color
sinansonmez Sep 2, 2022
150fa9a
fix background on hover
sinansonmez Sep 2, 2022
b9a6f3d
fix message visibility
sinansonmez Sep 2, 2022
e3e67fa
fix edited icon
sinansonmez Sep 2, 2022
cd2049a
delete unnecessary space
sinansonmez Sep 2, 2022
b2ba751
add overwrite name
sinansonmez Sep 2, 2022
0c71094
additional post check
sinansonmez Sep 2, 2022
5fcfe94
add client call
sinansonmez Sep 2, 2022
112fa27
add postEditHistory to global state
sinansonmez Sep 2, 2022
3e33dca
call get post edit history
sinansonmez Sep 2, 2022
038dcee
update selector and reducer
sinansonmez Sep 2, 2022
34d48a6
fix style
sinansonmez Sep 2, 2022
e0c2a9c
get postedithistory from globalState
sinansonmez Sep 2, 2022
c34aecf
revert post_edited_indicator changes
sinansonmez Sep 2, 2022
ee5fab5
remove showEditedIcon prop
sinansonmez Sep 2, 2022
977ce85
show elements conditionally
sinansonmez Sep 2, 2022
2975482
fix global state
sinansonmez Sep 2, 2022
4ed2112
hide avatar and username with toggle
sinansonmez Sep 2, 2022
f5ffe5e
add timing from post
sinansonmez Sep 3, 2022
50bc341
make the current one default opened
sinansonmez Sep 3, 2022
412b893
fix showing edited indicator
sinansonmez Sep 3, 2022
55f34b4
fix icon alignment
sinansonmez Sep 3, 2022
7925fff
Merge branch 'master' of https://github.com/sinansonmez/mattermost-we…
sinansonmez Sep 3, 2022
38c67ea
update message
sinansonmez Sep 4, 2022
66ab810
close right hand side
sinansonmez Sep 4, 2022
c74c335
fix style
sinansonmez Sep 4, 2022
0e61774
add test openShowEditHistory actions
sinansonmez Sep 4, 2022
594c6df
change redux action
sinansonmez Sep 5, 2022
6357e7b
fix failing tests
sinansonmez Sep 5, 2022
f108cf6
write tests for edited_post_item
sinansonmez Sep 5, 2022
41cb420
add restore post modal
sinansonmez Sep 5, 2022
07b9ae5
convert restore post modal to functional
sinansonmez Sep 5, 2022
79101a7
simplify restorePostModal
sinansonmez Sep 5, 2022
73a7a79
fix reopening restorePostModal
sinansonmez Sep 5, 2022
b2bf661
Merge branch 'mattermost:master' into MM-45494-edit-message-history
sinansonmez Sep 8, 2022
5b58708
fix loading indicator
sinansonmez Sep 8, 2022
133b631
fix i18n file
sinansonmez Sep 8, 2022
03e7673
fix type
sinansonmez Sep 8, 2022
6d96f51
make sidebar scrollable
sinansonmez Sep 8, 2022
a20e670
fix test
sinansonmez Sep 8, 2022
78864ed
delete unnecessary folder
sinansonmez Sep 8, 2022
60f6e40
write test post_edit_history
sinansonmez Sep 8, 2022
183f998
revert edited indicator changes
sinansonmez Sep 8, 2022
8c4a861
write test for posts action
sinansonmez Sep 8, 2022
41b38ec
write tests for posts entities
sinansonmez Sep 8, 2022
6418841
Merge branch 'mattermost:master' into MM-45494-edit-message-history
sinansonmez Sep 9, 2022
fbb65aa
improve performance on edited_post_item
sinansonmez Sep 9, 2022
818ece3
improve performance
sinansonmez Sep 9, 2022
9896f74
fix types
sinansonmez Sep 9, 2022
a9e3a5e
fix test type
sinansonmez Sep 9, 2022
ce2127c
add toast component
sinansonmez Sep 10, 2022
7fdb3bb
fix style
sinansonmez Sep 10, 2022
bb7bbc5
clean the component
sinansonmez Sep 10, 2022
c0b64a7
pass icon and undo function
sinansonmez Sep 10, 2022
9fb6636
move css
sinansonmez Sep 10, 2022
168288d
Merge pull request #2 from sinansonmez/MM-45494-implement-toast
sinansonmez Sep 10, 2022
b571f80
add tests
sinansonmez Sep 10, 2022
43f3fdd
fix focusing on wrong place after restore
sinansonmez Sep 11, 2022
6157496
fix test
sinansonmez Sep 11, 2022
29e0d24
add option not to show edited indicator
sinansonmez Sep 11, 2022
5f1fea4
delete unnecessary
sinansonmez Sep 11, 2022
63a5d07
Merge branch 'mattermost:master' into MM-45494-edit-message-history
sinansonmez Sep 13, 2022
e163199
remove unnecessary onClose action
sinansonmez Sep 13, 2022
34faa12
fix naming
sinansonmez Sep 13, 2022
686f0c3
convert to use GenericModal
sinansonmez Sep 13, 2022
7609c48
move br tag into correct place
sinansonmez Sep 13, 2022
efddb23
move css file and update class name
sinansonmez Sep 13, 2022
637a7eb
address reviews
sinansonmez Sep 13, 2022
37418b3
improve reducer
sinansonmez Sep 13, 2022
4de6169
rename originalPost to postCurrentVersion
sinansonmez Sep 13, 2022
711afa5
put button only if necessarry on post_edited_ind
sinansonmez Sep 13, 2022
7ced88f
remove unnecessary url getter
sinansonmez Sep 13, 2022
9b2e198
refactor action dispatcher
sinansonmez Sep 13, 2022
2959d76
remove usage of denim colors
sinansonmez Sep 13, 2022
0a39fff
fix color usage
sinansonmez Sep 13, 2022
430169b
use defineMessages
sinansonmez Sep 13, 2022
705c201
update snapshot
sinansonmez Sep 13, 2022
7298275
put t back
sinansonmez Sep 13, 2022
e8b3913
fix button background
sinansonmez Sep 13, 2022
6c42541
improving showing post edited indicator
sinansonmez Sep 13, 2022
ee770f1
fix test
sinansonmez Sep 13, 2022
3a0215e
simplify usage of defineMessages
sinansonmez Sep 13, 2022
43b3cd0
add translation string
sinansonmez Sep 15, 2022
3b39aac
address reviews
sinansonmez Sep 15, 2022
816b7b2
improve passing showEditedIndicator
sinansonmez Sep 15, 2022
2d9c63c
remove br
sinansonmez Sep 15, 2022
778cfc2
remove unnecessary div
sinansonmez Sep 15, 2022
270d4c1
uncomment
sinansonmez Sep 15, 2022
631c4ec
update snapshot
sinansonmez Sep 15, 2022
287a67d
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Oct 11, 2022
481ee7c
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Oct 12, 2022
e279fb8
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Oct 31, 2022
6e69d27
Merge branch 'master' into MM-45494-edit-message-history
mattermod Nov 7, 2022
2407765
fix style
sinansonmez Nov 7, 2022
2619da8
address point 1 and 2
sinansonmez Nov 17, 2022
abd2c14
address point 3, 7 and 8
sinansonmez Nov 17, 2022
a5d63a3
address point 9 and 10
sinansonmez Nov 17, 2022
edb0ca9
fix tooltip location
sinansonmez Nov 19, 2022
4e7247f
complete 11(first) and 12
sinansonmez Nov 19, 2022
7080fda
address point 11 (second)
sinansonmez Nov 19, 2022
60a108e
update hover states
sinansonmez Nov 23, 2022
a155a5c
update snapshot
sinansonmez Nov 23, 2022
ec595eb
Merge branch 'master' into MM-45494-edit-message-history
mattermod Nov 26, 2022
923fb40
update restore icon
sinansonmez Nov 30, 2022
b2ac806
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Nov 30, 2022
b4b6d51
update test
sinansonmez Nov 30, 2022
3e18f32
remove unnecessary useCallback
sinansonmez Dec 11, 2022
642c18e
update edit history when rhs is open and editing
sinansonmez Dec 14, 2022
5882d54
use translated string for aria-label
sinansonmez Dec 21, 2022
41517fc
create seperate translation strings
sinansonmez Jan 3, 2023
d66a2c8
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Jan 7, 2023
28dfa12
Merge branch 'master' into MM-45494-edit-message-history
mattermod Jan 7, 2023
7d15977
close rhs when changing channel / creating channel
sinansonmez Jan 7, 2023
ed706d0
address long posts
sinansonmez Jan 8, 2023
675cc80
fix max height
sinansonmez Jan 19, 2023
ee6dbcd
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Jan 19, 2023
2c87a77
fix translation
sinansonmez Jan 19, 2023
8c687bd
address opening history in thread or insight
sinansonmez Jan 24, 2023
bb477d6
address opening insight/ threads when rhs is open
sinansonmez Jan 24, 2023
9fbbf29
improve channel name on rhs
sinansonmez Jan 24, 2023
2815d4d
revert changes on channel display name
sinansonmez Jan 24, 2023
58b743d
fix root post/ reply edit history
sinansonmez Jan 25, 2023
f830a83
write e2e tests for edit post history
sinansonmez Jan 25, 2023
6b23801
add check for edit own post permission
sinansonmez Jan 31, 2023
e8912db
Merge branch 'master' into MM-45494-edit-message-history
mattermost-build Jan 31, 2023
092b817
add e2e test for without edit own post permission
sinansonmez Jan 31, 2023
fc9733f
fix test
sinansonmez Jan 31, 2023
9390727
Merge branch 'master' into MM-45494-edit-message-history
sinansonmez Feb 2, 2023
63174e2
Merge branch 'master' into MM-45494-edit-message-history
mattermost-build Feb 2, 2023
0807695
add e2e test case id
sinansonmez Feb 3, 2023
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
23 changes: 22 additions & 1 deletion actions/views/rhs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,16 @@ import {
updateSearchType,
suppressRHS,
unsuppressRHS,
goBack, showChannelMembers,
goBack,
showChannelMembers,
openShowEditHistory,
} from 'actions/views/rhs';
import {trackEvent} from 'actions/telemetry_actions.jsx';
import mockStore from 'tests/test_store';
import {ActionTypes, RHSStates, Constants} from 'utils/constants';
import {getBrowserUtcOffset} from 'utils/timezone.jsx';
import {TestHelper} from 'utils/test_helper';

import {GlobalState} from 'types/store';
import {ViewsState} from 'types/store/views';
import {RhsState} from 'types/store/rhs';
Expand Down Expand Up @@ -420,6 +424,23 @@ describe('rhs view actions', () => {
});
});

describe('openShowEditHistory', () => {
test('it dispatches the right actions', async () => {
const post = TestHelper.getPostMock();
await store.dispatch(openShowEditHistory(post));

expect(store.getActions()).toEqual([
{
type: ActionTypes.UPDATE_RHS_STATE,
state: RHSStates.EDIT_HISTORY,
postId: post.root_id || post.id,
channelId: post.channel_id,
timestamp: POST_CREATED_TIME,
},
]);
});
});

describe('showMentions', () => {
test('it dispatches the right actions', () => {
store.dispatch(showMentions());
Expand Down
10 changes: 10 additions & 0 deletions actions/views/rhs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,16 @@ export function updateRhsState(rhsState: string, channelId?: string, previousRhs
};
}

export function openShowEditHistory(post: Post) {
sinansonmez marked this conversation as resolved.
Show resolved Hide resolved
return {
type: ActionTypes.UPDATE_RHS_STATE,
state: RHSStates.EDIT_HISTORY,
postId: post.root_id || post.id,
channelId: post.channel_id,
timestamp: Date.now(),
};
}

export function goBack() {
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
const prevState = getPreviousRhsState(getState() as GlobalState);
Expand Down
3 changes: 3 additions & 0 deletions components/apps_form/apps_form_component.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,9 @@ describe('AppsFormComponent', () => {
teams: {
teams: {},
},
posts: {
posts: {},
},
users: {
profiles: {},
},
Expand Down
34 changes: 34 additions & 0 deletions components/info_toast/__snapshots__/info_toast.test.tsx.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`components/InfoToast should match snapshot 1`] = `
<CSSTransition
appear={true}
classNames="toast"
in={true}
mountOnEnter={true}
timeout={300}
unmountOnExit={true}
>
<div
className="info-toast className"
>
<CheckIcon />
<span>
test
</span>
<button
className="info-toast__undo"
onClick={[Function]}
>
Undo
</button>
<ForwardRef
className="info-toast__icon_button"
icon="close"
inverted={true}
onClick={[Function]}
size="sm"
/>
</div>
</CSSTransition>
`;
65 changes: 65 additions & 0 deletions components/info_toast/info_toast.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
@charset 'UTF-8';

.info-toast {
position: fixed;
z-index: 99;
right: 16px;
bottom: 16px;
display: grid;
width: fit-content;
min-height: 40px;
align-items: center;
padding: 4px;
background: var(--center-channel-text);
border-radius: 4px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.12);
color: var(--sidebar-text);
font-weight: 600;
grid-template-columns: min-content auto min-content auto;
line-height: 20px;

.info-toast__icon_button {
color: inherit;
}

span {
padding-left: 4px;
}

> div {
display: flex;
align-items: center;

.Icon {
font-size: 16px;
}
}
}

.info-toast__undo {
display: flex;
height: 24px;
align-items: center;
padding: 6px 10px;
border: none;
margin-right: 16px;
margin-left: 8px;
background: var(--button-bg);
border-radius: 4px;
color: var(--sidebar-text);
font-size: 11px;
font-weight: 600;
line-height: 10px;
}

// Animations
.toast-appear {
opacity: 0;
transform: translateY(150px);
}

.toast-appear-active {
opacity: 1;
transform: translateY(0);
transition: all 500ms ease;
}
53 changes: 53 additions & 0 deletions components/info_toast/info_toast.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

import React, {ComponentProps} from 'react';
import {shallow} from 'enzyme';

import {CheckIcon} from '@mattermost/compass-icons/components';

import InfoToast from './info_toast';

describe('components/InfoToast', () => {
const baseProps: ComponentProps<typeof InfoToast> = {
content: {
icon: <CheckIcon/>,
message: 'test',
undo: jest.fn(),
},
className: 'className',
onExited: jest.fn(),
};

test('should match snapshot', () => {
const wrapper = shallow(
<InfoToast
{...baseProps}
/>,
);

expect(wrapper).toMatchSnapshot();
});

test('should close the toast on undo', () => {
const wrapper = shallow(
<InfoToast
{...baseProps}
/>,
);

wrapper.find('button').simulate('click');
expect(baseProps.onExited).toHaveBeenCalled();
});

test('should close the toast on close button click', () => {
const wrapper = shallow(
<InfoToast
{...baseProps}
/>,
);

wrapper.find('.info-toast__icon_button').simulate('click');
expect(baseProps.onExited).toHaveBeenCalled();
});
});
77 changes: 77 additions & 0 deletions components/info_toast/info_toast.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React, {useEffect, useCallback} from 'react';
import classNames from 'classnames';
import {CSSTransition} from 'react-transition-group';
import {useIntl} from 'react-intl';

import IconButton from '@mattermost/compass-components/components/icon-button';
import './info_toast.scss';

type Props = {
content: {
icon?: JSX.Element;
message: string;
undo?: () => void;
};
className?: string;
onExited: () => void;
}

function InfoToast({content, onExited, className}: Props): JSX.Element {
const {formatMessage} = useIntl();
const closeToast = useCallback(() => {
onExited();
}, [onExited]);

const undoTodo = useCallback(() => {
content.undo?.();
onExited();
}, [content.undo, onExited]);

const toastContainerClassname = classNames('info-toast', className);

useEffect(() => {
const timer = setTimeout(() => {
onExited();
}, 5000);

return () => clearTimeout(timer);
}, [onExited]);

return (
<CSSTransition
in={Boolean(content)}
classNames='toast'
mountOnEnter={true}
unmountOnExit={true}
timeout={300}
appear={true}
>
<div className={toastContainerClassname}>
{content.icon}
<span>{content.message}</span>
{content.undo && (
<button
onClick={undoTodo}
className='info-toast__undo'
>
{formatMessage({
id: 'post_info.edit.undo',
defaultMessage: 'Undo',
})}
</button>
)}
<IconButton
className='info-toast__icon_button'
onClick={closeToast}
icon='close'
size='sm'
inverted={true}
/>
</div>
</CSSTransition>
);
}

export default React.memo(InfoToast);
4 changes: 2 additions & 2 deletions components/markdown/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import {getBool} from 'mattermost-redux/selectors/entities/preferences';
import {getCurrentTeam} from 'mattermost-redux/selectors/entities/teams';
import {getAllUserMentionKeys} from 'mattermost-redux/selectors/entities/search';

import {GlobalState} from '@mattermost/types/store';

import {GlobalState} from 'types/store';
import {getEmojiMap} from 'selectors/emojis';

import {getSiteURL} from 'utils/url';
import {ChannelNamesMap, MentionKey} from 'utils/text_formatting';

Expand Down
Loading