[MM-61848] Add Telemetry to capture Cross-Team Search usage (#30062)

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Julien Tant
2025-02-03 09:09:18 -07:00
коммит произвёл GitHub
родитель e8e40c79f6
Коммит 33b34022bb
2 изменённых файлов: 26 добавлений и 3 удалений

Просмотреть файл

@@ -6,9 +6,12 @@ import {FormattedMessage} from 'react-intl';
import {useSelector, useDispatch} from 'react-redux';
import styled from 'styled-components';
import {TrackCrossTeamSearchFeature, TrackCrossTeamSearchAllTeamsEvent, TrackCrossTeamSearchCurrentTeamEvent, TrackCrossTeamSearchDifferentTeamEvent} from 'mattermost-redux/constants/telemetry';
import {getCurrentChannelNameForSearchShortcut} from 'mattermost-redux/selectors/entities/channels';
import {getFeatureFlagValue} from 'mattermost-redux/selectors/entities/general';
import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';
import {trackFeatureEvent} from 'actions/telemetry_actions';
import {updateSearchTerms, showSearchResults, updateSearchType, updateSearchTeam} from 'actions/views/rhs';
import {getSearchButtons} from 'selectors/plugins';
import {getSearchTeam, getSearchTerms, getSearchType} from 'selectors/rhs';
@@ -111,6 +114,7 @@ const NewSearch = (): JSX.Element => {
const searchType = useSelector(getSearchType) || '';
const searchTeam = useSelector(getSearchTeam);
const pluginSearch = useSelector(getSearchButtons);
const currentTeamId = useSelector(getCurrentTeamId);
const crossTeamSearchEnabled = useSelector((state: GlobalState) => getFeatureFlagValue(state, 'ExperimentalCrossTeamSearch')) === 'true';
const dispatch = useDispatch();
@@ -226,6 +230,10 @@ const NewSearch = (): JSX.Element => {
dispatch(updateSearchTeam(searchTeam));
if (searchType === '' || searchType === 'messages' || searchType === 'files') {
if (crossTeamSearchEnabled) {
trackCrossTeamSearch(currentTeamId, searchTeam);
}
dispatch(showSearchResults(false));
} else {
pluginSearch.forEach((pluginData: any) => {
@@ -236,9 +244,17 @@ const NewSearch = (): JSX.Element => {
}
setFocused(false);
setCurrentChannel('');
},
[pluginSearch],
);
}, [pluginSearch, currentTeamId, crossTeamSearchEnabled]);
const trackCrossTeamSearch = (currentTeamId: string, searchTeamId: string) => {
if (searchTeamId === '') {
trackFeatureEvent(TrackCrossTeamSearchFeature, TrackCrossTeamSearchAllTeamsEvent);
} else if (searchTeamId === currentTeamId) {
trackFeatureEvent(TrackCrossTeamSearchFeature, TrackCrossTeamSearchCurrentTeamEvent);
} else {
trackFeatureEvent(TrackCrossTeamSearchFeature, TrackCrossTeamSearchDifferentTeamEvent);
}
};
const onClose = useCallback((e: React.MouseEvent) => {
e.stopPropagation();

Просмотреть файл

@@ -9,10 +9,14 @@ export const TrackEnterpriseSKU = 'enterprise';
export const TrackGroupsFeature = 'custom_groups';
export const TrackPassiveKeywordsFeature = 'passive_keywords';
export const TrackScheduledPostsFeature = 'scheduled_posts';
export const TrackCrossTeamSearchFeature = 'cross_team_search';
// Events
export const TrackInviteGroupEvent = 'invite_group_to_channel__add_member';
export const TrackPassiveKeywordsEvent = 'update_passive_keywords';
export const TrackCrossTeamSearchCurrentTeamEvent = 'cross_team_search__current_team';
export const TrackCrossTeamSearchDifferentTeamEvent = 'cross_team_search__different_team';
export const TrackCrossTeamSearchAllTeamsEvent = 'cross_team_search__all_teams';
// Categories
export const TrackActionCategory = 'action';
@@ -30,4 +34,7 @@ export const eventSKUs: {[event: string]: string[]} = {
export const eventCategory: {[event: string]: string} = {
[TrackInviteGroupEvent]: TrackActionCategory,
[TrackPassiveKeywordsEvent]: TrackActionCategory,
[TrackCrossTeamSearchAllTeamsEvent]: TrackActionCategory,
[TrackCrossTeamSearchCurrentTeamEvent]: TrackActionCategory,
[TrackCrossTeamSearchDifferentTeamEvent]: TrackActionCategory,
};