UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

174 lines 8.09 kB
import { ICurrentTenant, ICustomProperties, IIdentified, IUser } from '@c8y/client'; import { TranslateService } from '@ngx-translate/core'; import { BehaviorSubject, Subject } from 'rxjs'; import { CookieBannerService } from '../bootstrap/cookie-banner/cookie-banner.service'; import { OptionsService } from '../common/options.service'; import { AppStateService } from '../common/ui-state.service'; import { UserPreferencesService } from '../common/user-preferences/user-preferences.service'; import { PxEventData } from './product-experience.model'; import * as i0 from "@angular/core"; /** * @property user The user which is given to Gainsight. * @property tenant The tenant which is given to Gainsight. * @property instanceId Extracted domain part of an URL. * @property versionUI The UI version used. * @property versionBE The BE version used. */ interface IdentifyData { user: IUser; currentTenant: ICurrentTenant; instanceId: string; versionUI?: string; versionBE?: string; } /** * A service to manage the Gainsight integration. It allows to load the * tag and */ export declare class GainsightService { private appState; private options; private cookieBannerService; private userPreferencesService; private translateService; /** * A subject that emits the tag function as soon as a new tag is set. */ tagFunction$: BehaviorSubject<any>; trackingLoaded$: Subject<boolean>; /** * Gainsight is activated only when the cookie banner is present. If functional cookies are enabled, both personally identifiable information (PII) and required data are sent. * Otherwise, only the required data is transmitted during the identity step execution. */ readonly USER_PREFERENCES_GAINSIGHT_KEY = "gainsightEnabled"; /** * The name of the key remained unchanged, but applies to all engagements. */ readonly USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY = "gainsightBotEnabled"; readonly HIDE_GAINSIGHT_BOT_STYLE_ID = "hide-gs-bot"; private readonly GAINSIGHT_URL; private readonly GAINSIGHT_GLOBAL_SCOPE; private readonly SCRIPT_EXECUTION_WAIT_TIME; private readonly OPTIONS_KEY_CATEGORY; private readonly OPTIONS_KEY_NAME; private isScriptLoaded; private gainsightKey; private cachedRevertedTranslations; private cachedLanguage; constructor(appState: AppStateService, options: OptionsService, cookieBannerService: CookieBannerService, userPreferencesService: UserPreferencesService, translateService: TranslateService); /** * Checks if the specified Gainsight preference is disabled in user preferences. * @param preferenceName - Name of the Gainsight preference. * @returns A promise that resolves to `true` if the preference is disabled, otherwise `false`. */ isGainsightPreferenceDisabledInUserPreferences(preferenceName: string): Promise<boolean>; /** * Sets the state of the functional cookie. * @param value - A boolean value to indicate whether the functional cookie should be enabled (`true`) or disabled (`false`). */ setFunctionalCookie(value: boolean): void; getGainsightKey(): Promise<string>; /** * Returns the tag global function which can be used to identify user * or add special events. */ get tagFunction(): any; /** * Load the script tag and calls the identify function to start the tracking. * @param currentTenant The current tenant. * @param sendPiiData Flag for sending personally identifiable information (PII) during identification in Gainsight. */ loadTag(currentTenant: ICurrentTenant, sendPiiData: boolean): Promise<void>; /** * Identifies the user/account at Gainsight. * @param sendPiiData Flag for sending personally identifiable information. * @param identifyData Object containing identification data. */ identify(sendPiiData: boolean, identifyData: IdentifyData): void; /** * Triggers an event to be recorded by Gainsight PX. * This method calls the Gainsight PX's tracking mechanism to log a specific event * along with its associated properties. * @param eventName - Name of the event to be triggered. * @param props - Optional properties associated with the event. */ triggerEvent(eventName: string, props?: PxEventData): void; translateToEnglish(textToTranslate: string): string; /** * Determines whether personally identifiable information (PII) should be sent while loading a tag. * The decision to activate Gainsight and send PII relies on whether the cookiePreferences option is defined in the application settings, * if the functional cookie is enabled, and if the user grants permission. */ shouldSendPiiData(): Promise<boolean>; /** * Updates a specific user attribute in the Gainsight global scope. * This method interfaces with the Gainsight global object to set a user's specific attribute with a provided value. * @param name - Name of the user attribute to be updated. * @param value - Value to set for the specified user attribute. */ updateUserAttribute(name: string, value: string | Date | number | boolean): void; /** * Determines if the current user has the capability to modify Gainsight PX settings. * * This method checks multiple conditions: * 1. Whether tracking has been disabled globally via application options. * 2. Whether Gainsight is disabled at the tenant level through custom properties. * 3. Whether a Gainsight key is available, either currently loaded or fetched asynchronously. * 4. Whether cookie preferences are defined and available for the user. * * @returns Promise that resolves to a boolean. True indicates the user can edit product experience settings, and false otherwise. */ canEditProductExperienceSettings(): Promise<boolean>; hashGroupName(groupName: string): Promise<string>; /** * Sets the global context for Gainsight with the current application name. * The global context can be utilized by Gainsight for various purposes, such as segmenting users. */ setGlobalContext(): void; transformUserRolesToStr(userRoles?: IIdentified[]): string; /** * Checks if Gainsight is disabled based on tenant custom properties. * * @param customProperties - The custom properties of the tenant. * @returns {boolean} - True if Gainsight is disabled, false otherwise. */ isGainsightDisabledAtTenantCustomProperties(customProperties: ICustomProperties): boolean; /** * Determines if custom branding is enabled based on the presence of a brand logo. * * @returns {boolean} - True if custom branding is applied, false otherwise. */ isCustomBranding(): boolean; /** * Determines if tracking is disabled based on the application options. * @returns `true` if tracking is disabled, otherwise `false`. */ isTrackingDisabled(): boolean; private prepareEventName; private loadScriptTag; private getInstanceIdFromUrl; /** * Reverses the translation object. * * **Example** * { Add widget: "Widget hinzufügen" } * * will be changed to: * * { Widget hinzufügen: "Add widget" } * * @param currentLang Language whose translated values are to be placed in the object key. * @returns Returns an inverted object where the keys have been swapped with the values. */ private getRevertedTranslations; /**Translates string back into English. * If the current application language is set to English, the string passed as an argument is returned. * @param textToTranslate string to translate. * @returns Returns the string translated into English. */ private getEnTranslation; static ɵfac: i0.ɵɵFactoryDeclaration<GainsightService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<GainsightService>; } export {}; //# sourceMappingURL=gainsight.service.d.ts.map