mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
163 lines • 9.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMyGroupMentionKeysForChannel = exports.getMyGroupMentionKeys = exports.getMyGroupsAssociatedToChannelForReference = exports.getMyAllowReferencedGroups = exports.getAllGroupsForReferenceByName = exports.getAllAssociatedGroupsForReference = exports.getGroupsAssociatedToChannelForReference = exports.getGroupsAssociatedToTeamForReference = exports.getGroupsAssociatedToChannel = exports.getGroupsNotAssociatedToChannel = exports.getGroupsAssociatedToTeam = exports.getGroupsNotAssociatedToTeam = exports.getAssociatedGroupsForReference = exports.searchAssociatedGroupsForReferenceLocal = exports.getAssociatedGroupsForReferenceByMention = exports.getAssociatedGroupsByName = exports.getGroupChannels = exports.getGroupTeams = exports.getGroupMemberCount = exports.getGroup = exports.getGroupStats = exports.getAllGroupStats = exports.getMyGroups = exports.getAllGroups = void 0;
var tslib_1 = require("tslib");
var group_utils_1 = require("../../utils/group_utils");
var channels_1 = require("./channels");
var teams_1 = require("./teams");
var reselect_1 = require("reselect");
var emptyList = [];
var emptySyncables = {
teams: [],
channels: [],
};
function getAllGroups(state) {
return state.entities.groups.groups;
}
exports.getAllGroups = getAllGroups;
function getMyGroups(state) {
return state.entities.groups.myGroups;
}
exports.getMyGroups = getMyGroups;
function getAllGroupStats(state) {
return state.entities.groups.stats;
}
exports.getAllGroupStats = getAllGroupStats;
function getGroupStats(state, id) {
return getAllGroupStats(state)[id] || {};
}
exports.getGroupStats = getGroupStats;
function getGroup(state, id) {
return getAllGroups(state)[id];
}
exports.getGroup = getGroup;
function getGroupMemberCount(state, id) {
return getGroupStats(state, id).total_member_count;
}
exports.getGroupMemberCount = getGroupMemberCount;
function getGroupSyncables(state, id) {
return state.entities.groups.syncables[id] || emptySyncables;
}
function getGroupTeams(state, id) {
return getGroupSyncables(state, id).teams;
}
exports.getGroupTeams = getGroupTeams;
function getGroupChannels(state, id) {
return getGroupSyncables(state, id).channels;
}
exports.getGroupChannels = getGroupChannels;
exports.getAssociatedGroupsByName = reselect_1.createSelector(getAssociatedGroupsForReference, function (groups) {
var groupsByName = {};
for (var id in groups) {
if (groups.hasOwnProperty(id)) {
var group = groups[id];
groupsByName[group.name] = group;
}
}
return groupsByName;
});
exports.getAssociatedGroupsForReferenceByMention = reselect_1.createSelector(getAssociatedGroupsForReference, function (groups) {
return new Map(groups.map(function (group) { return ["@" + group.name, group]; }));
});
function searchAssociatedGroupsForReferenceLocal(state, term, teamId, channelId) {
var groups = getAssociatedGroupsForReference(state, teamId, channelId);
if (!groups) {
return emptyList;
}
var filteredGroups = group_utils_1.filterGroupsMatchingTerm(groups, term);
return filteredGroups;
}
exports.searchAssociatedGroupsForReferenceLocal = searchAssociatedGroupsForReferenceLocal;
function getAssociatedGroupsForReference(state, teamId, channelId) {
var team = teams_1.getTeam(state, teamId);
var channel = channels_1.getChannel(state, channelId);
var groupsForReference = [];
if (team && team.group_constrained && channel && channel.group_constrained) {
var groupsFromChannel_1 = exports.getGroupsAssociatedToChannelForReference(state, channelId);
var groupsFromTeam = exports.getGroupsAssociatedToTeamForReference(state, teamId);
groupsForReference = groupsFromChannel_1.concat(groupsFromTeam.filter(function (item) { return groupsFromChannel_1.indexOf(item) < 0; }));
}
else if (team && team.group_constrained) {
groupsForReference = exports.getGroupsAssociatedToTeamForReference(state, teamId);
}
else if (channel && channel.group_constrained) {
groupsForReference = exports.getGroupsAssociatedToChannelForReference(state, channelId);
}
else {
groupsForReference = exports.getAllAssociatedGroupsForReference(state);
}
return groupsForReference;
}
exports.getAssociatedGroupsForReference = getAssociatedGroupsForReference;
var teamGroupIDs = function (state, teamID) { var _a; return ((_a = state.entities.teams.groupsAssociatedToTeam[teamID]) === null || _a === void 0 ? void 0 : _a.ids) || []; };
var channelGroupIDs = function (state, channelID) { var _a; return ((_a = state.entities.channels.groupsAssociatedToChannel[channelID]) === null || _a === void 0 ? void 0 : _a.ids) || []; };
var getTeamGroupIDSet = reselect_1.createSelector(teamGroupIDs, function (teamIDs) { return new Set(teamIDs); });
var getChannelGroupIDSet = reselect_1.createSelector(channelGroupIDs, function (channelIDs) { return new Set(channelIDs); });
exports.getGroupsNotAssociatedToTeam = reselect_1.createSelector(getAllGroups, function (state, teamID) { return getTeamGroupIDSet(state, teamID); }, function (allGroups, teamGroupIDSet) {
return Object.entries(allGroups).filter(function (_a) {
var _b = tslib_1.__read(_a, 1), groupID = _b[0];
return !teamGroupIDSet.has(groupID);
}).map(function (entry) { return entry[1]; });
});
exports.getGroupsAssociatedToTeam = reselect_1.createSelector(getAllGroups, function (state, teamID) { return getTeamGroupIDSet(state, teamID); }, function (allGroups, teamGroupIDSet) {
return Object.entries(allGroups).filter(function (_a) {
var _b = tslib_1.__read(_a, 1), groupID = _b[0];
return teamGroupIDSet.has(groupID);
}).map(function (entry) { return entry[1]; });
});
exports.getGroupsNotAssociatedToChannel = reselect_1.createSelector(getAllGroups, function (state, channelID) { return getChannelGroupIDSet(state, channelID); }, function (state, channelID, teamID) { return teams_1.getTeam(state, teamID); }, function (state, channelID, teamID) { return exports.getGroupsAssociatedToTeam(state, teamID); }, function (allGroups, channelGroupIDSet, team, teamGroups) {
var result = Object.values(allGroups).filter(function (group) { return !channelGroupIDSet.has(group.id); });
if (team.group_constrained) {
var gids_1 = teamGroups.map(function (group) { return group.id; });
result = result.filter(function (group) { return gids_1 === null || gids_1 === void 0 ? void 0 : gids_1.includes(group.id); });
}
return result;
});
exports.getGroupsAssociatedToChannel = reselect_1.createSelector(getAllGroups, function (state, channelID) { return getChannelGroupIDSet(state, channelID); }, function (allGroups, channelGroupIDSet) {
return Object.entries(allGroups).filter(function (_a) {
var _b = tslib_1.__read(_a, 1), groupID = _b[0];
return channelGroupIDSet.has(groupID);
}).map(function (entry) { return entry[1]; });
});
exports.getGroupsAssociatedToTeamForReference = reselect_1.createSelector(getAllGroups, function (state, teamID) { return getTeamGroupIDSet(state, teamID); }, function (allGroups, teamGroupIDSet) {
return Object.entries(allGroups).filter(function (_a) {
var _b = tslib_1.__read(_a, 1), groupID = _b[0];
return teamGroupIDSet.has(groupID);
}).filter(function (entry) { return (entry[1].allow_reference && entry[1].delete_at === 0); }).map(function (entry) { return entry[1]; });
});
exports.getGroupsAssociatedToChannelForReference = reselect_1.createSelector(getAllGroups, function (state, channelID) { return getChannelGroupIDSet(state, channelID); }, function (allGroups, channelGroupIDSet) {
return Object.entries(allGroups).filter(function (_a) {
var _b = tslib_1.__read(_a, 1), groupID = _b[0];
return channelGroupIDSet.has(groupID);
}).filter(function (entry) { return (entry[1].allow_reference && entry[1].delete_at === 0); }).map(function (entry) { return entry[1]; });
});
exports.getAllAssociatedGroupsForReference = reselect_1.createSelector(getAllGroups, function (allGroups) {
return Object.entries(allGroups).filter(function (entry) { return (entry[1].allow_reference && entry[1].delete_at === 0); }).map(function (entry) { return entry[1]; });
});
exports.getAllGroupsForReferenceByName = reselect_1.createSelector(exports.getAllAssociatedGroupsForReference, function (groups) {
var groupsByName = {};
for (var id in groups) {
if (groups.hasOwnProperty(id)) {
var group = groups[id];
groupsByName[group.name] = group;
}
}
return groupsByName;
});
exports.getMyAllowReferencedGroups = reselect_1.createSelector(getMyGroups, function (myGroups) {
return Object.values(myGroups).filter(function (group) { return group.allow_reference && group.delete_at === 0; });
});
exports.getMyGroupsAssociatedToChannelForReference = reselect_1.createSelector(getMyGroups, exports.getAssociatedGroupsByName, function (myGroups, groups) {
return Object.values(myGroups).filter(function (group) { return group.allow_reference && group.delete_at === 0 && groups[group.name]; });
});
exports.getMyGroupMentionKeys = reselect_1.createSelector(exports.getMyAllowReferencedGroups, function (groups) {
var keys = [];
groups.forEach(function (group) { return keys.push({ key: "@" + group.name }); });
return keys;
});
exports.getMyGroupMentionKeysForChannel = reselect_1.createSelector(exports.getMyGroupsAssociatedToChannelForReference, function (groups) {
var keys = [];
groups.forEach(function (group) { return keys.push({ key: "@" + group.name }); });
return keys;
});
//# sourceMappingURL=groups.js.map