UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

48 lines (47 loc) 2.04 kB
"use strict"; // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.isSyncableSource = isSyncableSource; exports.filterGroupsMatchingTerm = filterGroupsMatchingTerm; exports.sortGroups = sortGroups; const groups_1 = require("@mattermost/types/groups"); const user_utils_1 = require("./user_utils"); const constants_1 = require("../constants"); function isSyncableSource(source) { return source.toLowerCase() === groups_1.GroupSource.Ldap || source.toLowerCase().startsWith(groups_1.PluginGroupSourcePrefix.Plugin); } function filterGroupsMatchingTerm(groups, term) { const lowercasedTerm = term.toLowerCase(); let trimmedTerm = lowercasedTerm; if (trimmedTerm.startsWith('@')) { trimmedTerm = trimmedTerm.slice(1); } return groups.filter((group) => { if (!group) { return false; } const groupSuggestions = []; const groupnameSuggestions = (0, user_utils_1.getSuggestionsSplitByMultiple)((group.name || '').toLowerCase(), constants_1.General.AUTOCOMPLETE_SPLIT_CHARACTERS); groupSuggestions.push(...groupnameSuggestions); const suggestions = (0, user_utils_1.getSuggestionsSplitBy)(group.display_name.toLowerCase(), ' '); groupSuggestions.push(...suggestions); return groupSuggestions. filter((suggestion) => suggestion !== ''). some((suggestion) => suggestion.startsWith(trimmedTerm)); }); } function sortGroups(groups = [], locale = constants_1.General.DEFAULT_LOCALE) { return groups.sort((a, b) => { if ((a.delete_at === 0 && b.delete_at === 0) || (a.delete_at > 0 && b.delete_at > 0)) { return a.display_name.localeCompare(b.display_name, locale, { numeric: true }); } if (a.delete_at < b.delete_at) { return -1; } if (a.delete_at > b.delete_at) { return 1; } return 0; }); }