mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
59 lines (58 loc) • 2.73 kB
JavaScript
;
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchFilesResults = void 0;
exports.getFile = getFile;
exports.getFilePublicLink = getFilePublicLink;
exports.getRejectedFiles = getRejectedFiles;
exports.isFileRejected = isFileRejected;
exports.makeGetFileIdsForPost = makeGetFileIdsForPost;
exports.makeGetFilesForPost = makeGetFilesForPost;
exports.makeGetFilesForEditHistory = makeGetFilesForEditHistory;
const create_selector_1 = require("mattermost-redux/selectors/create_selector");
const i18n_1 = require("mattermost-redux/selectors/entities/i18n");
const file_utils_1 = require("mattermost-redux/utils/file_utils");
function getAllFiles(state) {
return state.entities.files.files;
}
function getFile(state, id) {
return state.entities.files.files?.[id];
}
function getAllFilesFromSearch(state) {
return state.entities.files.filesFromSearch;
}
function getFilePublicLink(state) {
return state.entities.files.filePublicLink;
}
function getRejectedFiles(state) {
return state.entities.files.rejectedFiles || new Set();
}
function isFileRejected(state, fileId) {
const rejectedFiles = getRejectedFiles(state);
return rejectedFiles.has(fileId);
}
function makeGetFileIdsForPost() {
return (0, create_selector_1.createSelector)('makeGetFileIdsForPost', (state, postId) => state.entities.files.fileIdsByPostId[postId], (fileIds) => {
return fileIds || [];
});
}
function makeGetFilesForPost() {
const getFilesIdsForPost = makeGetFileIdsForPost();
return (0, create_selector_1.createSelector)('makeGetFilesForPost', getAllFiles, getFilesIdsForPost, (state) => (0, i18n_1.getCurrentUserLocale)(state), (allFiles, fileIdsForPost = [], locale) => {
const fileInfos = fileIdsForPost.map((id) => allFiles[id]).filter((id) => Boolean(id));
return (0, file_utils_1.sortFileInfos)(fileInfos, locale);
});
}
function makeGetFilesForEditHistory() {
return (0, create_selector_1.createSelector)('makeGetFilesForEditHistory', (state) => (0, i18n_1.getCurrentUserLocale)(state), (state, editHistoryPost) => editHistoryPost, (userLocal, editHistoryPost) => {
const fileInfos = editHistoryPost?.metadata?.files ? [...editHistoryPost.metadata.files] : [];
return (0, file_utils_1.sortFileInfos)(fileInfos, userLocal);
});
}
exports.getSearchFilesResults = (0, create_selector_1.createSelector)('getSearchFilesResults', getAllFilesFromSearch, (state) => state.entities.search.fileResults, (files, fileIds) => {
if (!fileIds) {
return [];
}
return fileIds.map((id) => files[id]);
});