@fluid-topics/ft-reader-context 2.0.9 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@ import { FtReaderPage, FtReaderScrollTarget, FtReaderTocNode } from "./model";
2
2
  import { ClusteringHelper, Optional } from "@fluid-topics/ft-wc-utils";
3
3
  import { FtReaderReduxStore } from "./redux";
4
4
  import type { FtReaderService } from "./utils/FtReaderService";
5
+ import { FtAnalyticsEventsService } from "@fluid-topics/ft-app-context";
5
6
  import { FtTranslationLocale, FtTranslationSettings } from "@fluid-topics/public-api";
6
7
  export declare class FtReaderStateManager {
7
8
  store: FtReaderReduxStore;
@@ -11,9 +12,10 @@ export declare class FtReaderStateManager {
11
12
  clusteringHelper?: ClusteringHelper;
12
13
  service?: FtReaderService;
13
14
  errorHandler?: (e: Error) => void;
15
+ analyticsEventsService: FtAnalyticsEventsService;
14
16
  private _loaded;
15
17
  loaded(): Promise<void>;
16
- constructor(store: FtReaderReduxStore, serviceProvider: () => Promise<FtReaderService>, clusteringHelperProvider?: (() => ClusteringHelper) | undefined);
18
+ constructor(store: FtReaderReduxStore, serviceProvider: () => Promise<FtReaderService>, clusteringHelperProvider?: (() => ClusteringHelper) | undefined, analyticsEventsService?: FtAnalyticsEventsService);
17
19
  initService(serviceProvider: () => Promise<FtReaderService>): Promise<void>;
18
20
  setMapId(mapId?: string): Promise<void>;
19
21
  setRenderedTopics(tocIds: string[]): void;
@@ -55,4 +57,6 @@ export declare class FtReaderStateManager {
55
57
  getTocNode(tocId: string): Promise<FtReaderTocNode>;
56
58
  getPage(targetPageNumber: number): Promise<FtReaderPage>;
57
59
  onMapAttachmentsUpdate(): void;
60
+ private sendDocumentOnDemandTranslateEvent;
61
+ private parseLanguageToAnalyticsFormat;
58
62
  }
@@ -2,7 +2,7 @@ import { FtReaderStoreEvents } from "./model";
2
2
  import { CanceledPromiseError, ClusteringHelper, Debouncer, waitFor, waitUntil } from "@fluid-topics/ft-wc-utils";
3
3
  import { createReaderStore } from "./redux";
4
4
  import { FtOfficialReaderService } from "./utils/FtOfficialReaderService";
5
- import { ftAppInfoStore } from "@fluid-topics/ft-app-context";
5
+ import { ftAppInfoStore, FtAnalyticsEventsService, } from "@fluid-topics/ft-app-context";
6
6
  export class FtReaderStateManager {
7
7
  static build(id, serviceProvider) {
8
8
  return new FtReaderStateManager(createReaderStore(id.trim() || "context"), serviceProvider !== null && serviceProvider !== void 0 ? serviceProvider : FtOfficialReaderService.build);
@@ -10,12 +10,13 @@ export class FtReaderStateManager {
10
10
  loaded() {
11
11
  return waitUntil(() => this._loaded);
12
12
  }
13
- constructor(store, serviceProvider, clusteringHelperProvider) {
13
+ constructor(store, serviceProvider, clusteringHelperProvider, analyticsEventsService) {
14
14
  this.store = store;
15
15
  this.clusteringHelperProvider = clusteringHelperProvider;
16
16
  this.metadataForSwitchToRelatives = new Set();
17
17
  this._loaded = false;
18
18
  this.loadDebouncer = new Debouncer(10);
19
+ this.analyticsEventsService = analyticsEventsService !== null && analyticsEventsService !== void 0 ? analyticsEventsService : new FtAnalyticsEventsService();
19
20
  this.initService(serviceProvider);
20
21
  }
21
22
  async initService(serviceProvider) {
@@ -202,6 +203,9 @@ export class FtReaderStateManager {
202
203
  }
203
204
  async setTranslationDestinationLanguage(destinationLanguage) {
204
205
  this.store.actions.setTranslationDestinationLanguage(destinationLanguage);
206
+ if (destinationLanguage) {
207
+ this.sendDocumentOnDemandTranslateEvent(destinationLanguage);
208
+ }
205
209
  await this.loadDebouncer.run(() => this.fetchData(this.getTranslationSettings()));
206
210
  }
207
211
  async setTranslationSourceLanguage(sourceLanguage) {
@@ -286,4 +290,47 @@ export class FtReaderStateManager {
286
290
  (_a = this.service) === null || _a === void 0 ? void 0 : _a.clearMapAttachments();
287
291
  this.store.dispatchEvent(new Event(FtReaderStoreEvents.mapAttachmentsUpdate));
288
292
  }
293
+ sendDocumentOnDemandTranslateEvent(destinationLanguage) {
294
+ const { editorMode, apiIntegrationIdentifier, apiIntegrationAppVersion } = ftAppInfoStore.getState();
295
+ const state = this.store.getState();
296
+ const map = state.map;
297
+ const profileId = state.translation.profileId;
298
+ if (editorMode || !map || !apiIntegrationIdentifier || !apiIntegrationAppVersion || !profileId) {
299
+ return;
300
+ }
301
+ try {
302
+ const document = this.analyticsEventsService.convertMapToAnalyticsDocument(map);
303
+ this.analyticsEventsService.sendDocumentAiTranslateEvent({
304
+ name: "DOCUMENT__ON_DEMAND_TRANSLATE",
305
+ offline: false,
306
+ appName: apiIntegrationIdentifier,
307
+ appVersion: apiIntegrationAppVersion,
308
+ sourceLanguage: this.parseLanguageToAnalyticsFormat(map.lang),
309
+ destinationLanguage: this.parseLanguageToAnalyticsFormat(destinationLanguage.code),
310
+ profileId,
311
+ document,
312
+ });
313
+ }
314
+ catch (error) {
315
+ console.warn("Failed to send on-demand document translate event:", error);
316
+ }
317
+ }
318
+ parseLanguageToAnalyticsFormat(languageString) {
319
+ if (!languageString) {
320
+ return undefined;
321
+ }
322
+ const parts = languageString.split("-");
323
+ if (parts.length === 2) {
324
+ return {
325
+ languageCode: parts[0],
326
+ countryCode: parts[1],
327
+ };
328
+ }
329
+ else {
330
+ return {
331
+ languageCode: parts[0],
332
+ countryCode: "",
333
+ };
334
+ }
335
+ }
289
336
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/ft-reader-context",
3
- "version": "2.0.9",
3
+ "version": "2.0.11",
4
4
  "description": "Context block for integrated reader components",
5
5
  "keywords": [
6
6
  "Lit"
@@ -19,13 +19,13 @@
19
19
  "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
20
  },
21
21
  "dependencies": {
22
- "@fluid-topics/ft-app-context": "2.0.9",
23
- "@fluid-topics/ft-wc-utils": "2.0.9",
22
+ "@fluid-topics/ft-app-context": "2.0.11",
23
+ "@fluid-topics/ft-wc-utils": "2.0.11",
24
24
  "@reduxjs/toolkit": "^1.6.2",
25
25
  "lit": "3.1.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@fluid-topics/public-api": "1.0.116"
28
+ "@fluid-topics/public-api": "1.0.117"
29
29
  },
30
- "gitHead": "0c31a55662f9e366ecd36cbb4d10d93ee5433b5c"
30
+ "gitHead": "aedc97fb65c7bafd16b7adef8218a58f59fea690"
31
31
  }