From 751d84bf13aa63f4706843318e45e8ca8401eba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Vay=C3=A1?= Date: Tue, 5 Nov 2024 16:26:18 +0100 Subject: [PATCH] [MM-59363] Shared channel event telemetry (#29024) * shared channel event tracking * Update notification.go Co-authored-by: Miguel de la Cruz --------- Co-authored-by: Miguel de la Cruz --- server/channels/app/channel.go | 11 +++++++++++ server/channels/app/notification.go | 3 +++ server/channels/app/post.go | 15 +++++++++++++++ server/platform/services/telemetry/telemetry.go | 14 ++++++++------ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/server/channels/app/channel.go b/server/channels/app/channel.go index 8e06b5d9bb..0d5186e18b 100644 --- a/server/channels/app/channel.go +++ b/server/channels/app/channel.go @@ -2698,6 +2698,17 @@ func (a *App) SetActiveChannel(c request.CTX, userID string, channelID string) * }, ) } + isShared, shErr := a.Srv().Store().SharedChannel().HasChannel(channelID) + if shErr == nil && isShared { + a.Srv().telemetryService.SendTelemetryForFeature( + telemetry.TrackSharedChannelsFeature, + "shared_channel_viewed", + map[string]any{ + telemetry.TrackPropertyUser: userID, + telemetry.TrackPropertyChannel: channelID, + }, + ) + } } return nil diff --git a/server/channels/app/notification.go b/server/channels/app/notification.go index 5ee27a25d2..5095ac22ba 100644 --- a/server/channels/app/notification.go +++ b/server/channels/app/notification.go @@ -879,6 +879,9 @@ func (a *App) SendNotifications(c request.CTX, post *model.Post, team *model.Tea ) } } + if user.IsRemote() { + a.Srv().telemetryService.SendTelemetryForFeature(telemetry.TrackSharedChannelsFeature, "mentioned_remote_user", map[string]any{telemetry.TrackPropertyUser: user.Id, telemetry.TrackPropertyPostAuthor: sender.Id}) + } } for groupId := range mentions.GroupMentions { a.Srv().telemetryService.SendTelemetryForFeature(telemetry.TrackGroupsFeature, "post_mentioned_custom_group", map[string]any{telemetry.TrackPropertyUser: sender.Id, telemetry.TrackPropertyGroup: groupId, "group_size": groups[groupId].MemberCount}) diff --git a/server/channels/app/post.go b/server/channels/app/post.go index e5a6e387a9..c45846aac4 100644 --- a/server/channels/app/post.go +++ b/server/channels/app/post.go @@ -97,6 +97,21 @@ func (a *App) CreatePostAsUser(c request.CTX, post *model.Post, currentSessionId } } + if channel.IsShared() { + // if not marked as shared we don't try to reach the store, but needs double checking as it might not be truly shared + isShared, shErr := a.Srv().Store().SharedChannel().HasChannel(channel.Id) + if shErr == nil && isShared { + a.Srv().telemetryService.SendTelemetryForFeature( + telemetry.TrackSharedChannelsFeature, + "shared_channel_posted", + map[string]any{ + telemetry.TrackPropertyUser: post.UserId, + telemetry.TrackPropertyChannel: channel.Id, + }, + ) + } + } + return rp, nil } diff --git a/server/platform/services/telemetry/telemetry.go b/server/platform/services/telemetry/telemetry.go index bca9d27e24..00930e5595 100644 --- a/server/platform/services/telemetry/telemetry.go +++ b/server/platform/services/telemetry/telemetry.go @@ -103,9 +103,10 @@ const ( type TrackFeature string const ( - TrackGuestFeature TrackFeature = "guest_accounts" - TrackGroupsFeature TrackFeature = "custom_groups" - TrackReadOnlyFeature TrackFeature = "read_only_channels" + TrackGuestFeature TrackFeature = "guest_accounts" + TrackGroupsFeature TrackFeature = "custom_groups" + TrackReadOnlyFeature TrackFeature = "read_only_channels" + TrackSharedChannelsFeature TrackFeature = "shared_channels" ) const ( @@ -147,9 +148,10 @@ type EventFeature struct { } var featureSKUS = map[TrackFeature][]TrackSKU{ - TrackGuestFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, - TrackGroupsFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, - TrackReadOnlyFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, + TrackGuestFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, + TrackGroupsFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, + TrackReadOnlyFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, + TrackSharedChannelsFeature: {TrackProfessionalSKU, TrackEnterpriseSKU}, } func New(srv ServerIface, dbStore store.Store, searchEngine *searchengine.Broker, log *mlog.Logger, verbose bool) (*TelemetryService, error) {