@@ -4,7 +4,6 @@ import log from './utils/log';
44import StackParser from './modules/stackParser' ;
55import type { CatcherMessage , HawkInitialSettings , BreadcrumbsAPI , Transport } from './types' ;
66import { VueIntegration } from './integrations/vue' ;
7- import { id } from './utils/id' ;
87import type {
98 AffectedUser ,
109 EventContext ,
@@ -19,6 +18,8 @@ import { isErrorProcessed, markErrorAsProcessed } from './utils/event';
1918import { ConsoleCatcher } from './addons/consoleCatcher' ;
2019import { BreadcrumbManager } from './addons/breadcrumbs' ;
2120import { validateUser , validateContext , isValidEventPayload } from './utils/validation' ;
21+ import { StorageUserManager , UserManager } from "@hawk.so/core" ;
22+ import { HawkLocalStorage } from "./modules/local-storage" ;
2223
2324/**
2425 * Allow to use global VERSION, that will be overwritten by Webpack
@@ -62,11 +63,6 @@ export default class Catcher {
6263 */
6364 private readonly release : string | undefined ;
6465
65- /**
66- * Current authenticated user
67- */
68- private user : AffectedUser ;
69-
7066 /**
7167 * Any additional data passed by user for sending with all messages
7268 */
@@ -111,6 +107,11 @@ export default class Catcher {
111107 */
112108 private readonly breadcrumbManager : BreadcrumbManager | null ;
113109
110+ /**
111+ * Current authenticated user manager instance
112+ */
113+ private readonly userManager : UserManager = new StorageUserManager ( new HawkLocalStorage ( ) ) ;
114+
114115 /**
115116 * Catcher constructor
116117 *
@@ -126,7 +127,9 @@ export default class Catcher {
126127 this . token = settings . token ;
127128 this . debug = settings . debug || false ;
128129 this . release = settings . release !== undefined ? String ( settings . release ) : undefined ;
129- this . setUser ( settings . user || Catcher . getGeneratedUser ( ) ) ;
130+ if ( settings . user ) {
131+ this . setUser ( settings . user ) ;
132+ }
130133 this . setContext ( settings . context || undefined ) ;
131134 this . beforeSend = settings . beforeSend ;
132135 this . disableVueErrorHandler =
@@ -189,27 +192,6 @@ export default class Catcher {
189192 }
190193 }
191194
192- /**
193- * Generates user if no one provided via HawkCatcher settings
194- * After generating, stores user for feature requests
195- */
196- private static getGeneratedUser ( ) : AffectedUser {
197- let userId : string ;
198- const LOCAL_STORAGE_KEY = 'hawk-user-id' ;
199- const storedId = localStorage . getItem ( LOCAL_STORAGE_KEY ) ;
200-
201- if ( storedId ) {
202- userId = storedId ;
203- } else {
204- userId = id ( ) ;
205- localStorage . setItem ( LOCAL_STORAGE_KEY , userId ) ;
206- }
207-
208- return {
209- id : userId ,
210- } ;
211- }
212-
213195 /**
214196 * Send test event from client
215197 */
@@ -272,14 +254,14 @@ export default class Catcher {
272254 return ;
273255 }
274256
275- this . user = user ;
257+ this . userManager . setUser ( user ) ;
276258 }
277259
278260 /**
279- * Clear current user information (revert to generated user)
261+ * Clear current user information
280262 */
281263 public clearUser ( ) : void {
282- this . user = Catcher . getGeneratedUser ( ) ;
264+ this . userManager . clear ( )
283265 }
284266
285267 /**
@@ -533,7 +515,7 @@ export default class Catcher {
533515 private getIntegrationId ( ) : string {
534516 try {
535517 const decodedIntegrationToken : DecodedIntegrationToken = JSON . parse ( atob ( this . token ) ) ;
536- const { integrationId } = decodedIntegrationToken ;
518+ const { integrationId} = decodedIntegrationToken ;
537519
538520 if ( ! integrationId || integrationId === '' ) {
539521 throw new Error ( ) ;
@@ -568,7 +550,7 @@ export default class Catcher {
568550 * Current authenticated user
569551 */
570552 private getUser ( ) : HawkJavaScriptEvent [ 'user' ] {
571- return this . user || null ;
553+ return this . userManager . getUser ( ) ;
572554 }
573555
574556 /**
@@ -635,7 +617,7 @@ export default class Catcher {
635617 * @param {Error|string } error — caught error
636618 */
637619 private getAddons ( error : Error | string ) : HawkJavaScriptEvent [ 'addons' ] {
638- const { innerWidth, innerHeight } = window ;
620+ const { innerWidth, innerHeight} = window ;
639621 const userAgent = window . navigator . userAgent ;
640622 const location = window . location . href ;
641623 const getParams = this . getGetParams ( ) ;
0 commit comments