{ "version": 3, "sources": ["libs/feedback/src/assets/en_devel.json", "libs/feedback/src/lib/feedback.service.ts", "libs/feedback/src/lib/feedback.module.ts"], "sourcesContent": ["{\n \"FEEDBACK\": {\n \"TOOLTIPS\": {\n \"HAPPY\": \"I like this feature\",\n \"NEUTRAL\": \"This feature is OK\",\n \"SAD\": \"I don't like this feature\"\n },\n \"PLEASE_LEAVE_FEEDBACK\": \"Please leave some feedback on this feature\",\n \"REMIND_ME_LATER\": \"Remind me later\",\n \"PLEASE_MAKE_SELECTION\": \"Please make a selection\",\n \"MESSAGE_PLACEHOLDER\": \"Feedback (Optional)\",\n \"DIALOG_TITLE\": \"Please leave some feedback about this feature\",\n \"PLEASE_GIVE_US_SOME_FEEDBACK\": \"Please leave some feedback on this feature\",\n \"YOU_WILL_BE_REMINDED\": \"You will be reminded in {{days}} days.\"\n }\n}\n", "import { Injectable } from '@angular/core';\nimport moment from 'moment/moment';\nimport { combineLatest, ReplaySubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { oneResultFrom, oneResultFromEach } from '@vendasta/rx-utils';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\n\nclass DataSchema {\n app_id: string;\n feedback_value: number;\n feedback_message: string;\n feedback_identifier: string;\n feedback_version: string;\n}\n\nexport interface IdentifierSchema {\n version: string;\n timesInteractedWith: number;\n feedbackReceivedForVersion: boolean;\n userClickedRemindLater: number;\n}\n\nexport const DEFAULT_TIMES_INTERACTED_TO_PROMPT = 15;\nexport const DAYS_TO_WAIT_BEFORE_REMINDING = 2;\nconst VERSION_REGEX = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\nexport const IDENTIFIER_MAX_LENGTH = 64;\nexport const IDENTIFIER_MIN_LENGTH = 20;\nexport type FEEDBACK_POSITION =\n | 'TOP_LEFT'\n | 'BOTTOM_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER'\n | 'TOP_CENTER';\nexport type FEEDBACK_SIZE = 'small' | 'medium' | 'large';\n\n@Injectable()\nexport class FeedbackService {\n private readonly feedbackIdentifier$$ = new ReplaySubject(1);\n\n set feedbackIdentifier(value: string) {\n this.feedbackIdentifier$$.next(value);\n }\n\n readonly feedbackIdentifier$ = this.feedbackIdentifier$$.asObservable();\n\n private readonly feedbackVersion$$ = new ReplaySubject(1);\n\n set feedbackVersion(value: string) {\n this.feedbackVersion$$.next(value);\n }\n\n readonly feedbackVersion$ = this.feedbackVersion$$.asObservable();\n\n interactionsToPrompt: number = DEFAULT_TIMES_INTERACTED_TO_PROMPT;\n\n private readonly feedbackReceived$$ = new ReplaySubject(1);\n readonly feedbackReceived$ = this.feedbackReceived$$.asObservable();\n\n private readonly versionValid$$ = new ReplaySubject(1);\n readonly versionValid$ = this.versionValid$$.asObservable();\n\n private readonly identifierValid$$ = new ReplaySubject(1);\n readonly identifierValid$ = this.identifierValid$$.asObservable();\n\n private readonly reachedInteractionThreshold$$ = new ReplaySubject(1);\n readonly reachedInteractionThreshold$ = this.reachedInteractionThreshold$$.asObservable();\n\n private readonly remindUserNow$$ = new ReplaySubject(1);\n readonly remindUserNow$ = this.remindUserNow$$.asObservable();\n\n constructor(private readonly productAnalyticsService: ProductAnalyticsService) {}\n\n initIdentifier(): void {\n this.checkVersionRegex();\n\n combineLatest([this.feedbackIdentifier$, this.feedbackVersion$])\n .pipe(take(1))\n .subscribe(([identifier, version]) => {\n this.checkRequiredFields(identifier, version);\n this.checkIdentifierLength(identifier);\n });\n\n this.initializeIdentifier().then((info) => {\n this.feedbackReceived$$.next(info.feedbackReceivedForVersion);\n this.reachedInteractionThreshold$$.next(info.timesInteractedWith >= this.interactionsToPrompt);\n\n if (info.userClickedRemindLater !== null) {\n const reminderSetDate = moment(new Date(info.userClickedRemindLater))\n .add(DAYS_TO_WAIT_BEFORE_REMINDING, 'days')\n .valueOf();\n this.remindUserNow$$.next(reminderSetDate < Date.now().valueOf() && info.feedbackReceivedForVersion === false);\n } else {\n this.remindUserNow$$.next(true);\n }\n });\n }\n\n /**\n * Submits user feedback to snowplow under the custom event `user_feedback_tracking`\n * @param feedbackValue: The value of the feedback from 1-3, where 3 is highest\n * @param feedbackMessage: The feedback message that the user entered\n * @param feedbackIdentifierOverride: The ID to associate the feedback with (Optional: to be used when bypassing the visible/delayed components)\n * @param feedbackVersionOverride: The version to associate the feedback with (Optional: to be used when bypassing the visible/delayed components)\n */\n submitFeedback(\n feedbackValue: number,\n feedbackMessage?: string,\n feedbackIdentifierOverride?: string,\n feedbackVersionOverride?: string,\n ): void {\n if (!!feedbackIdentifierOverride && !!feedbackVersionOverride) {\n const data = {\n feedback_message: feedbackMessage,\n feedback_version: feedbackVersionOverride,\n };\n this.productAnalyticsService.trackEvent(\n 'user-feedback-submitted',\n feedbackIdentifierOverride,\n 'submit-feedback',\n feedbackValue,\n data,\n );\n } else {\n this.feedbackIdentifier$$.pipe(take(1)).subscribe((feedbackIdentifier) => {\n const currentVersion = this.getFeedbackInfoFromStorage(feedbackIdentifier).version;\n const data = {\n feedback_message: feedbackMessage,\n feedback_version: currentVersion,\n };\n this.productAnalyticsService.trackEvent(\n 'user-feedback-submitted',\n feedbackIdentifier,\n 'submit-feedback',\n feedbackValue,\n data,\n );\n this.setFeedbackReceived(feedbackIdentifier);\n });\n }\n }\n\n checkVersionRegex(): void {\n oneResultFrom(this.feedbackVersion$).then((version) => {\n const found = version.match(VERSION_REGEX);\n\n if (!found) {\n throw new Error(\"feedbackVersion must match the format '0.0.0'\");\n }\n });\n }\n\n private async initializeIdentifier(): Promise {\n const results = oneResultFromEach([this.feedbackIdentifier$, this.feedbackVersion$]);\n return await Promise.all(results).then(([identifier, version]) => {\n let info: IdentifierSchema;\n if (this.identifierExists(identifier) === false) {\n info = this.writeNewIdentifierToStorage(identifier, version);\n } else {\n info = this.getFeedbackInfoFromStorage(identifier);\n if (info.version !== version) {\n info = this.updateFeedbackVersionInStorage(identifier, version);\n }\n }\n return info;\n });\n }\n\n incrementTimesInteracted(): void {\n oneResultFrom(this.feedbackIdentifier$).then((identifier) => {\n const currentValues = this.getFeedbackInfoFromStorage(identifier);\n\n currentValues.timesInteractedWith = currentValues.timesInteractedWith + 1;\n this.writeFeedbackInfoToStorage(identifier, currentValues);\n this.reachedInteractionThreshold$$.next(currentValues.timesInteractedWith >= this.interactionsToPrompt);\n });\n }\n\n private updateFeedbackVersionInStorage(feedbackIdentifier: string, version: string): IdentifierSchema {\n const currentValues = this.getFeedbackInfoFromStorage(feedbackIdentifier);\n\n currentValues.version = version;\n currentValues.timesInteractedWith = 0;\n currentValues.feedbackReceivedForVersion = false;\n currentValues.userClickedRemindLater = null;\n\n this.writeFeedbackInfoToStorage(feedbackIdentifier, currentValues);\n return currentValues;\n }\n\n private identifierExists(feedbackIdentifier: string): boolean {\n return localStorage.getItem(feedbackIdentifier) !== null;\n }\n\n private setFeedbackReceived(feedbackIdentifier: string): void {\n const currentValues = this.getFeedbackInfoFromStorage(feedbackIdentifier);\n currentValues.feedbackReceivedForVersion = true;\n this.writeFeedbackInfoToStorage(feedbackIdentifier, currentValues);\n this.feedbackReceived$$.next(true);\n }\n\n private writeNewIdentifierToStorage(feedbackIdentifier: string, version: string): IdentifierSchema {\n const json: IdentifierSchema = {\n version: version,\n timesInteractedWith: 0,\n feedbackReceivedForVersion: false,\n userClickedRemindLater: null,\n };\n\n this.writeFeedbackInfoToStorage(feedbackIdentifier, json);\n return json;\n }\n\n remindMeLater(): void {\n oneResultFrom(this.feedbackIdentifier$).then((identifier) => {\n const currentValues = this.getFeedbackInfoFromStorage(identifier);\n currentValues.userClickedRemindLater = Date.now();\n this.writeFeedbackInfoToStorage(identifier, currentValues);\n const reminderSetDate = moment(new Date(currentValues.userClickedRemindLater))\n .add(DAYS_TO_WAIT_BEFORE_REMINDING, 'days')\n .valueOf();\n this.remindUserNow$$.next(reminderSetDate < Date.now().valueOf());\n });\n }\n\n private writeFeedbackInfoToStorage(feedbackIdentifier: string, values: IdentifierSchema): void {\n localStorage.setItem(feedbackIdentifier, JSON.stringify(values));\n this.feedbackReceived$$.next(values.feedbackReceivedForVersion);\n }\n\n private getFeedbackInfoFromStorage(feedbackIdentifier: string): IdentifierSchema {\n const jsonString = localStorage.getItem(feedbackIdentifier);\n\n // Handle old values in localstorage\n if (jsonString?.match(VERSION_REGEX)) {\n localStorage.removeItem(feedbackIdentifier);\n this.writeNewIdentifierToStorage(feedbackIdentifier, jsonString);\n return JSON.parse(localStorage.getItem(feedbackIdentifier));\n }\n\n return JSON.parse(jsonString);\n }\n\n private checkRequiredFields(featureId: string, version: string): void {\n if (featureId === null) {\n this.identifierValid$$.next(false);\n }\n if (version === null || !version.match(VERSION_REGEX)) {\n this.versionValid$$.next(false);\n } else {\n this.versionValid$$.next(true);\n }\n }\n\n private checkIdentifierLength(identifier: string): void {\n if (identifier === null || identifier.length > IDENTIFIER_MAX_LENGTH || identifier.length < IDENTIFIER_MIN_LENGTH) {\n this.identifierValid$$.next(false);\n throw new Error(\n `featureID must be set and have a length of ${IDENTIFIER_MIN_LENGTH} to ` +\n `${IDENTIFIER_MAX_LENGTH} characters. ` +\n `(Found \"${identifier}\", length: [${identifier ? identifier.length : 0}])`,\n );\n } else {\n this.identifierValid$$.next(true);\n }\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FeedbackDialogComponent } from './feedback-dialog/feedback-dialog.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/en_devel.json';\nimport { VisibleFeedbackComponent } from './visible-feedback/visible-feedback.component';\nimport { DelayedFeedbackComponent } from './delayed-feedback/delayed-feedback.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { FeedbackService } from './feedback.service';\n\n@NgModule({\n declarations: [FeedbackDialogComponent, VisibleFeedbackComponent, DelayedFeedbackComponent],\n exports: [VisibleFeedbackComponent, DelayedFeedbackComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonToggleModule,\n MatDialogModule,\n ReactiveFormsModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/feedback',\n baseTranslation: baseTranslation,\n }),\n MatCardModule,\n MatProgressSpinnerModule,\n ],\n providers: [FeedbackService],\n})\nexport class FeedbackModule {}\n"], "mappings": "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", "names": ["en_devel_default", "import_moment", "DEFAULT_TIMES_INTERACTED_TO_PROMPT", "DAYS_TO_WAIT_BEFORE_REMINDING", "VERSION_REGEX", "IDENTIFIER_MAX_LENGTH", "IDENTIFIER_MIN_LENGTH", "FeedbackService", "feedbackIdentifier", "value", "feedbackIdentifier$$", "next", "feedbackVersion", "feedbackVersion$$", "constructor", "productAnalyticsService", "ReplaySubject", "feedbackIdentifier$", "asObservable", "feedbackVersion$", "interactionsToPrompt", "feedbackReceived$$", "feedbackReceived$", "versionValid$$", "versionValid$", "identifierValid$$", "identifierValid$", "reachedInteractionThreshold$$", "reachedInteractionThreshold$", "remindUserNow$$", "remindUserNow$", "initIdentifier", "checkVersionRegex", "combineLatest", "pipe", "take", "subscribe", "identifier", "version", "checkRequiredFields", "checkIdentifierLength", "initializeIdentifier", "then", "info", "feedbackReceivedForVersion", "timesInteractedWith", "userClickedRemindLater", "reminderSetDate", "moment", "Date", "add", "valueOf", "now", "submitFeedback", "feedbackValue", "feedbackMessage", "feedbackIdentifierOverride", "feedbackVersionOverride", "data", "feedback_message", "feedback_version", "trackEvent", "currentVersion", "getFeedbackInfoFromStorage", "setFeedbackReceived", "oneResultFrom", "match", "Error", "__async", "results", "oneResultFromEach", "Promise", "all", "identifierExists", "writeNewIdentifierToStorage", "updateFeedbackVersionInStorage", "incrementTimesInteracted", "currentValues", "writeFeedbackInfoToStorage", "localStorage", "getItem", "json", "remindMeLater", "values", "setItem", "JSON", "stringify", "jsonString", "removeItem", "parse", "featureId", "length", "\u0275\u0275inject", "ProductAnalyticsService", "factory", "\u0275fac", "_FeedbackService", "FeedbackModule", "FeedbackService", "imports", "CommonModule", "MatIconModule", "MatButtonModule", "MatTooltipModule", "MatFormFieldModule", "MatInputModule", "MatButtonToggleModule", "MatDialogModule", "ReactiveFormsModule", "TranslateModule", "LexiconModule", "forChild", "componentName", "baseTranslation", "MatCardModule", "MatProgressSpinnerModule", "_FeedbackModule"] }