From d3fa4908eff7b3065aadc13f718daa5ff51f5560 Mon Sep 17 00:00:00 2001
From: Denis Bykhov <bykhov.denis@gmail.com>
Date: Tue, 16 Apr 2024 11:55:19 +0500
Subject: [PATCH] Add navigate method to Analytics provider (#5367)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
---
 packages/analytics/src/index.ts | 7 +++++++
 packages/ui/src/location.ts     | 2 ++
 server/front/src/index.ts       | 2 +-
 server/front/src/starter.ts     | 2 +-
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/packages/analytics/src/index.ts b/packages/analytics/src/index.ts
index f90fb6e16e..739e3c9b03 100644
--- a/packages/analytics/src/index.ts
+++ b/packages/analytics/src/index.ts
@@ -13,6 +13,7 @@ export interface AnalyticProvider {
   setWorkspace: (ws: string) => void
   handleEvent: (event: string) => void
   handleError: (error: Error) => void
+  navigate: (path: string) => void
 }
 
 export const Analytics = {
@@ -51,6 +52,12 @@ export const Analytics = {
     providers.forEach((provider) => {
       provider.handleError(error)
     })
+  },
+
+  navigate (path: string): void {
+    providers.forEach((provider) => {
+      provider.navigate(path)
+    })
   }
 }
 
diff --git a/packages/ui/src/location.ts b/packages/ui/src/location.ts
index 85d0a2d50a..ab7ddc5366 100644
--- a/packages/ui/src/location.ts
+++ b/packages/ui/src/location.ts
@@ -13,6 +13,7 @@
 // limitations under the License.
 //
 
+import { Analytics } from '@hcengineering/analytics'
 import { clone } from '@hcengineering/core'
 import { derived, get, writable } from 'svelte/store'
 import { closePopup } from './popups'
@@ -177,6 +178,7 @@ export function navigate (location: PlatformLocation, replace = false): boolean
   if (cur !== url) {
     const data = !embeddedPlatform ? null : { location }
     const _url = !embeddedPlatform ? url : undefined
+    Analytics.navigate(url)
     if (replace) {
       history.replaceState(data, '', _url)
     } else {
diff --git a/server/front/src/index.ts b/server/front/src/index.ts
index 4c9617d733..af1e7ad7a5 100644
--- a/server/front/src/index.ts
+++ b/server/front/src/index.ts
@@ -250,7 +250,7 @@ export function start (
     lastNameFirst?: string
   },
   port: number,
-  extraConfig?: Record<string, string>
+  extraConfig?: Record<string, string | undefined>
 ): () => void {
   const app = express()
 
diff --git a/server/front/src/starter.ts b/server/front/src/starter.ts
index 515d3a8b0f..8c62f44e18 100644
--- a/server/front/src/starter.ts
+++ b/server/front/src/starter.ts
@@ -21,7 +21,7 @@ import { StorageConfiguration } from '@hcengineering/server-core'
 import serverToken from '@hcengineering/server-token'
 import { start } from '.'
 
-export function startFront (ctx: MeasureContext, extraConfig?: Record<string, string>): void {
+export function startFront (ctx: MeasureContext, extraConfig?: Record<string, string | undefined>): void {
   const defaultLanguage = process.env.DEFAULT_LANGUAGE ?? 'en'
   const languages = process.env.LANGUAGES ?? 'en,ru'
   const SERVER_PORT = parseInt(process.env.SERVER_PORT ?? '8080')