Removed unused code from actions/views/create_comment.tsx (#28479)
* Removed unused code from actions/views/create_comment.tsx * i18n-extract
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1669a0869f
Коммит
ce7fdb6c22
@@ -9,16 +9,11 @@ import {Posts} from 'mattermost-redux/constants';
|
|||||||
import {executeCommand} from 'actions/command';
|
import {executeCommand} from 'actions/command';
|
||||||
import * as HookActions from 'actions/hooks';
|
import * as HookActions from 'actions/hooks';
|
||||||
import * as PostActions from 'actions/post_actions';
|
import * as PostActions from 'actions/post_actions';
|
||||||
import {setGlobalItem, actionOnGlobalItemsWithPrefix} from 'actions/storage';
|
|
||||||
import {
|
import {
|
||||||
clearCommentDraftUploads,
|
|
||||||
updateCommentDraft,
|
|
||||||
onSubmit,
|
onSubmit,
|
||||||
submitPost,
|
submitPost,
|
||||||
submitCommand,
|
submitCommand,
|
||||||
makeOnEditLatestPost,
|
|
||||||
} from 'actions/views/create_comment';
|
} from 'actions/views/create_comment';
|
||||||
import {setGlobalDraftSource} from 'actions/views/drafts';
|
|
||||||
|
|
||||||
import mockStore from 'tests/test_store';
|
import mockStore from 'tests/test_store';
|
||||||
import {StoragePrefixes} from 'utils/constants';
|
import {StoragePrefixes} from 'utils/constants';
|
||||||
@@ -183,54 +178,6 @@ describe('rhs view actions', () => {
|
|||||||
store = mockStore(initialState);
|
store = mockStore(initialState);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('clearCommentDraftUploads', () => {
|
|
||||||
test('it calls actionOnGlobalItemsWithPrefix action correctly', () => {
|
|
||||||
store.dispatch(clearCommentDraftUploads());
|
|
||||||
|
|
||||||
const actions = store.getActions();
|
|
||||||
|
|
||||||
expect(actions.length).toBe(1);
|
|
||||||
|
|
||||||
const callback = actions[0].args[1];
|
|
||||||
|
|
||||||
// make sure callback is a function which clears uploadsInProgress
|
|
||||||
expect(typeof callback).toBe('function');
|
|
||||||
|
|
||||||
const draft = {message: 'test msg', channelId, rootId, uploadsInProgress: [3, 4], fileInfos: [{id: 1}, {id: 2}]};
|
|
||||||
|
|
||||||
expect(callback(null, draft)).toEqual({...draft, uploadsInProgress: []});
|
|
||||||
|
|
||||||
const testStore = mockStore(initialState);
|
|
||||||
|
|
||||||
testStore.dispatch(actionOnGlobalItemsWithPrefix(StoragePrefixes.COMMENT_DRAFT, callback));
|
|
||||||
|
|
||||||
expect(store.getActions()).toEqual(testStore.getActions());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('updateCommentDraft', () => {
|
|
||||||
const draft = {message: 'test msg', fileInfos: [{id: 1}], uploadsInProgress: [2, 3]};
|
|
||||||
|
|
||||||
test('it calls setGlobalItem action correctly', () => {
|
|
||||||
jest.useFakeTimers();
|
|
||||||
jest.setSystemTime(42);
|
|
||||||
store.dispatch(updateCommentDraft(rootId, draft));
|
|
||||||
|
|
||||||
const testStore = mockStore(initialState);
|
|
||||||
|
|
||||||
const expectedKey = `${StoragePrefixes.COMMENT_DRAFT}${rootId}`;
|
|
||||||
testStore.dispatch(setGlobalItem(expectedKey, {
|
|
||||||
...draft,
|
|
||||||
createAt: 42,
|
|
||||||
updateAt: 42,
|
|
||||||
}));
|
|
||||||
testStore.dispatch(setGlobalDraftSource(expectedKey, false));
|
|
||||||
|
|
||||||
expect(store.getActions()).toEqual(testStore.getActions());
|
|
||||||
jest.useRealTimers();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('submitPost', () => {
|
describe('submitPost', () => {
|
||||||
const draft = {message: '', channelId, rootId, fileInfos: []};
|
const draft = {message: '', channelId, rootId, fileInfos: []};
|
||||||
|
|
||||||
@@ -381,21 +328,4 @@ describe('rhs view actions', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('makeOnEditLatestPost', () => {
|
|
||||||
const onEditLatestPost = makeOnEditLatestPost(rootId);
|
|
||||||
|
|
||||||
test('it dispatches the correct actions', () => {
|
|
||||||
store.dispatch(onEditLatestPost());
|
|
||||||
|
|
||||||
expect(store.getActions()).toEqual([
|
|
||||||
PostActions.setEditingPost(
|
|
||||||
latestPostId,
|
|
||||||
'reply_textbox',
|
|
||||||
'Comment',
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import type {Post} from '@mattermost/types/posts';
|
|||||||
import type {CreatePostReturnType, SubmitReactionReturnType} from 'mattermost-redux/actions/posts';
|
import type {CreatePostReturnType, SubmitReactionReturnType} from 'mattermost-redux/actions/posts';
|
||||||
import {addMessageIntoHistory} from 'mattermost-redux/actions/posts';
|
import {addMessageIntoHistory} from 'mattermost-redux/actions/posts';
|
||||||
import {Permissions} from 'mattermost-redux/constants';
|
import {Permissions} from 'mattermost-redux/constants';
|
||||||
import {createSelector} from 'mattermost-redux/selectors/create_selector';
|
|
||||||
import {getChannel} from 'mattermost-redux/selectors/entities/channels';
|
import {getChannel} from 'mattermost-redux/selectors/entities/channels';
|
||||||
import {getCustomEmojisByName} from 'mattermost-redux/selectors/entities/emojis';
|
import {getCustomEmojisByName} from 'mattermost-redux/selectors/entities/emojis';
|
||||||
import {getLicense} from 'mattermost-redux/selectors/entities/general';
|
import {getLicense} from 'mattermost-redux/selectors/entities/general';
|
||||||
@@ -14,24 +13,18 @@ import {getAssociatedGroupsForReferenceByMention} from 'mattermost-redux/selecto
|
|||||||
import {
|
import {
|
||||||
getLatestInteractablePostId,
|
getLatestInteractablePostId,
|
||||||
getLatestPostToEdit,
|
getLatestPostToEdit,
|
||||||
getPost,
|
|
||||||
makeGetPostIdsForThread,
|
|
||||||
} from 'mattermost-redux/selectors/entities/posts';
|
} from 'mattermost-redux/selectors/entities/posts';
|
||||||
import {isCustomGroupsEnabled} from 'mattermost-redux/selectors/entities/preferences';
|
import {isCustomGroupsEnabled} from 'mattermost-redux/selectors/entities/preferences';
|
||||||
import {haveIChannelPermission} from 'mattermost-redux/selectors/entities/roles';
|
import {haveIChannelPermission} from 'mattermost-redux/selectors/entities/roles';
|
||||||
import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';
|
import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';
|
||||||
import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';
|
import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';
|
||||||
import type {ActionFunc, ActionFuncAsync} from 'mattermost-redux/types/actions';
|
import type {ActionFunc, ActionFuncAsync} from 'mattermost-redux/types/actions';
|
||||||
import {isPostPendingOrFailed} from 'mattermost-redux/utils/post_utils';
|
|
||||||
|
|
||||||
import type {ExecuteCommandReturnType} from 'actions/command';
|
import type {ExecuteCommandReturnType} from 'actions/command';
|
||||||
import {executeCommand} from 'actions/command';
|
import {executeCommand} from 'actions/command';
|
||||||
import {runMessageWillBePostedHooks, runSlashCommandWillBePostedHooks} from 'actions/hooks';
|
import {runMessageWillBePostedHooks, runSlashCommandWillBePostedHooks} from 'actions/hooks';
|
||||||
import * as PostActions from 'actions/post_actions';
|
import * as PostActions from 'actions/post_actions';
|
||||||
import {actionOnGlobalItemsWithPrefix} from 'actions/storage';
|
|
||||||
import {updateDraft} from 'actions/views/drafts';
|
|
||||||
|
|
||||||
import {Constants, StoragePrefixes} from 'utils/constants';
|
|
||||||
import EmojiMap from 'utils/emoji_map';
|
import EmojiMap from 'utils/emoji_map';
|
||||||
import {containsAtChannel, groupsMentionedInText} from 'utils/post_utils';
|
import {containsAtChannel, groupsMentionedInText} from 'utils/post_utils';
|
||||||
import * as Utils from 'utils/utils';
|
import * as Utils from 'utils/utils';
|
||||||
@@ -39,23 +32,6 @@ import * as Utils from 'utils/utils';
|
|||||||
import type {GlobalState} from 'types/store';
|
import type {GlobalState} from 'types/store';
|
||||||
import type {PostDraft} from 'types/store/draft';
|
import type {PostDraft} from 'types/store/draft';
|
||||||
|
|
||||||
export function clearCommentDraftUploads() {
|
|
||||||
return actionOnGlobalItemsWithPrefix(StoragePrefixes.COMMENT_DRAFT, (_key: string, draft: PostDraft) => {
|
|
||||||
if (!draft || !draft.uploadsInProgress || draft.uploadsInProgress.length === 0) {
|
|
||||||
return draft;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {...draft, uploadsInProgress: []};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Temporarily store draft manually in localStorage since the current version of redux-persist
|
|
||||||
// we're on will not save the draft quickly enough on page unload.
|
|
||||||
export function updateCommentDraft(rootId: string, draft?: PostDraft, save = false) {
|
|
||||||
const key = `${StoragePrefixes.COMMENT_DRAFT}${rootId}`;
|
|
||||||
return updateDraft(key, draft ?? null, rootId, save);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function submitPost(
|
export function submitPost(
|
||||||
channelId: string,
|
channelId: string,
|
||||||
rootId: string,
|
rootId: string,
|
||||||
@@ -192,72 +168,6 @@ export function onSubmit(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeGetCurrentUsersLatestReply() {
|
|
||||||
const getPostIdsInThread = makeGetPostIdsForThread();
|
|
||||||
return createSelector(
|
|
||||||
'makeGetCurrentUsersLatestReply',
|
|
||||||
getCurrentUserId,
|
|
||||||
getPostIdsInThread,
|
|
||||||
(state) => (id: string) => getPost(state, id),
|
|
||||||
(_state, rootId) => rootId,
|
|
||||||
(userId, postIds, getPostById, rootId) => {
|
|
||||||
let lastPost = null;
|
|
||||||
|
|
||||||
if (!postIds) {
|
|
||||||
return lastPost;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const id of postIds) {
|
|
||||||
const post = getPostById(id) || {};
|
|
||||||
|
|
||||||
// don't edit webhook posts, deleted posts, or system messages
|
|
||||||
if (
|
|
||||||
post.user_id !== userId ||
|
|
||||||
(post.props && post.props.from_webhook) ||
|
|
||||||
post.state === Constants.POST_DELETED ||
|
|
||||||
(post.type && post.type.startsWith(Constants.SYSTEM_MESSAGE_PREFIX)) ||
|
|
||||||
isPostPendingOrFailed(post)
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rootId) {
|
|
||||||
if (post.root_id === rootId || post.id === rootId) {
|
|
||||||
lastPost = post;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lastPost = post;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lastPost;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function makeOnEditLatestPost(rootId: string): () => ActionFunc<boolean> {
|
|
||||||
const getCurrentUsersLatestPost = makeGetCurrentUsersLatestReply();
|
|
||||||
|
|
||||||
return () => (dispatch, getState) => {
|
|
||||||
const state = getState();
|
|
||||||
|
|
||||||
const lastPost = getCurrentUsersLatestPost(state, rootId);
|
|
||||||
|
|
||||||
if (!lastPost) {
|
|
||||||
return {data: false};
|
|
||||||
}
|
|
||||||
|
|
||||||
return dispatch(PostActions.setEditingPost(
|
|
||||||
lastPost.id,
|
|
||||||
'reply_textbox',
|
|
||||||
Utils.localizeMessage({id: 'create_comment.commentTitle', defaultMessage: 'Comment'}),
|
|
||||||
true,
|
|
||||||
));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function editLatestPost(channelId: string, rootId = ''): ActionFunc<boolean> {
|
export function editLatestPost(channelId: string, rootId = ''): ActionFunc<boolean> {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
const state = getState();
|
const state = getState();
|
||||||
|
|||||||
@@ -3350,7 +3350,6 @@
|
|||||||
"create_category_modal.create": "Create",
|
"create_category_modal.create": "Create",
|
||||||
"create_category_modal.createCategory": "Create New Category",
|
"create_category_modal.createCategory": "Create New Category",
|
||||||
"create_comment.addComment": "Reply to this thread...",
|
"create_comment.addComment": "Reply to this thread...",
|
||||||
"create_comment.commentTitle": "Comment",
|
|
||||||
"create_group_memberships_modal.cancel": "No",
|
"create_group_memberships_modal.cancel": "No",
|
||||||
"create_group_memberships_modal.create": "Yes",
|
"create_group_memberships_modal.create": "Yes",
|
||||||
"create_group_memberships_modal.desc": "You're about to add or re-add {username} to teams and channels based on their LDAP group membership. You can revert this change at any time.",
|
"create_group_memberships_modal.desc": "You're about to add or re-add {username} to teams and channels based on their LDAP group membership. You can revert this change at any time.",
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user