* Add icons for file types * Compress image files for file type icons * Add constants for file types * Add utils for file metadata * Add actions & reducers for fetching file attachments * Render file attachments in posts * Add reducers for handling files requests * Refactor getFileType in file utils * Refactor getFileIconPath in file utils * Refactor getFormattedFileSize in file utils * Trim trailing whitespace in getTruncatedFilename * Style file attachment metadata * Remove entity store reducer for files fetch failure * Change filesForPost to fileIdsForPost in files store * Use a selector for getFilesForPost * Memoize getFilesForPost selector * Dispatch postId with getFilesForPost * Add test for getFilesForPost * Upload seed file in getFilesForPost test * Display correct icon for image attachments * Fix reducers for receiving files for post Expect response data to be array not object * Style attachment post * Merge headers (defaults + opts) in Client.doFetch * Upload file as FormData * Use form-data lib instead of built-in polyfill * Associate file with post in getFilesForPost test * Improve assertions in getFilesForPost test * Check for createPost failure in getFilesForPost test * Use correct post id in getFilesForPost test * Use client not action to create post in getFilesForPost test * Fix file upload in getFilesForPost test * Add assertion for name of uploaded file * Update attachment post style * Fix spelling of loadFilesForPostIfNecessary * Remove eslint-disable no-magic-numbers from file_utils.js * Remove unused index prop from FileAttachment * Clarify code for merging headers in Client.getOptions * Dynamically truncate file attachment names * Extract component for FileAttachmentIcon * Use white bg for FileAttachmentIcon to match webapp styles * Match webapp styles for file attachment borders * Move file icon path lookup to FileAttachmentIcon * Use more logical ordering for file type lookup
34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
|
|
// See License.txt for license information.
|
|
|
|
import {batchActions} from 'redux-batched-actions';
|
|
|
|
import Client from 'service/client';
|
|
import {FilesTypes} from 'service/constants';
|
|
import {forceLogoutIfNecessary} from './helpers';
|
|
|
|
export function getFilesForPost(teamId, channelId, postId) {
|
|
return async (dispatch, getState) => {
|
|
dispatch({type: FilesTypes.FETCH_FILES_FOR_POST_REQUEST}, getState);
|
|
let files;
|
|
|
|
try {
|
|
files = await Client.getFileInfosForPost(teamId, channelId, postId);
|
|
} catch (error) {
|
|
forceLogoutIfNecessary(error, dispatch);
|
|
dispatch({type: FilesTypes.FETCH_FILES_FOR_POST_FAILURE, error}, getState);
|
|
return;
|
|
}
|
|
|
|
dispatch(batchActions([
|
|
{
|
|
type: FilesTypes.RECEIVED_FILES_FOR_POST,
|
|
data: files,
|
|
postId
|
|
},
|
|
{
|
|
type: FilesTypes.FETCH_FILES_FOR_POST_SUCCESS
|
|
}
|
|
]), getState);
|
|
};
|
|
}
|