mattermost-mobile/app/selectors/views.js

70 lines
1.8 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {createSelector} from 'reselect';
import {getCurrentChannelId, getUnreadsInCurrentTeam} from 'mattermost-redux/selectors/entities/channels';
import {getCurrentTeamId, getTeamMemberships} from 'mattermost-redux/selectors/entities/teams';
const emptyDraft = {
draft: '',
files: [],
};
function getChannelDrafts(state) {
return state.views.channel.drafts;
}
function getThreadDrafts(state) {
return state.views.thread.drafts;
}
export const getCurrentChannelDraft = createSelector(
getChannelDrafts,
getCurrentChannelId,
(drafts, currentChannelId) => {
return drafts[currentChannelId] || emptyDraft;
}
);
export function getDraftForChannel(state, channelId) {
const drafts = getChannelDrafts(state);
return drafts[channelId] || emptyDraft;
}
export const getThreadDraft = createSelector(
getThreadDrafts,
(state, rootId) => rootId,
(drafts, rootId) => {
return drafts[rootId] || emptyDraft;
}
);
export function getProfileImageUri(state) {
return state.views.user.profileImageUri;
}
export const getBadgeCount = createSelector(
getCurrentTeamId,
getTeamMemberships,
getUnreadsInCurrentTeam,
(currentTeamId, myTeamMembers, {mentionCount, messageCount}) => {
let mentions = mentionCount;
let messages = messageCount;
const members = Object.values(myTeamMembers).filter((m) => m.team_id !== currentTeamId);
members.forEach((m) => {
mentions += (m.mention_count || 0);
messages += (m.msg_count || 0);
});
let badgeCount = 0;
if (mentions) {
badgeCount = mentions;
} else if (messages) {
badgeCount = -1;
}
return badgeCount;
}
);