Posthog load settings on startup (#734)
Signed-off-by: Timo K <timok@element.io> Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								85959046a5
							
						
					
				
			
			
				commit
				
					
						01244c1873
					
				
			
		
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -18,7 +18,7 @@ import posthog, { CaptureOptions, PostHog, Properties } from "posthog-js"; | ||||||
| import { logger } from "matrix-js-sdk/src/logger"; | import { logger } from "matrix-js-sdk/src/logger"; | ||||||
| 
 | 
 | ||||||
| import { widget } from "./widget"; | import { widget } from "./widget"; | ||||||
| import { settingsBus } from "./settings/useSetting"; | import { getSetting, settingsBus } from "./settings/useSetting"; | ||||||
| import { | import { | ||||||
|   CallEndedTracker, |   CallEndedTracker, | ||||||
|   CallStartedTracker, |   CallStartedTracker, | ||||||
|  | @ -97,7 +97,7 @@ export class PosthogAnalytics { | ||||||
|   private static internalInstance = null; |   private static internalInstance = null; | ||||||
| 
 | 
 | ||||||
|   private readonly enabled: boolean = false; |   private readonly enabled: boolean = false; | ||||||
|   private anonymity = Anonymity.Pseudonymous; |   private anonymity = Anonymity.Disabled; | ||||||
|   private platformSuperProperties = {}; |   private platformSuperProperties = {}; | ||||||
|   private registrationType: RegistrationType = RegistrationType.Guest; |   private registrationType: RegistrationType = RegistrationType.Guest; | ||||||
| 
 | 
 | ||||||
|  | @ -132,6 +132,8 @@ export class PosthogAnalytics { | ||||||
|     } else { |     } else { | ||||||
|       this.enabled = false; |       this.enabled = false; | ||||||
|     } |     } | ||||||
|  |     const optInAnalytics = getSetting("opt-in-analytics", false); | ||||||
|  |     this.updateAnonymityFromSettingsAndIdentifyUser(optInAnalytics); | ||||||
|     this.startListeningToSettingsChanges(); |     this.startListeningToSettingsChanges(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -270,10 +272,11 @@ export class PosthogAnalytics { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private userRegisteredInThisSession(): boolean { |   private userRegisteredInThisSession(): boolean { | ||||||
|  |     // only if the signup end got tracked the end time is set. Otherwise its default value is Date(0).
 | ||||||
|     return this.eventSignup.getSignupEndTime() > new Date(0); |     return this.eventSignup.getSignupEndTime() > new Date(0); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async updateAnonymityFromSettings( |   public async updateAnonymityFromSettingsAndIdentifyUser( | ||||||
|     pseudonymousOptIn: boolean |     pseudonymousOptIn: boolean | ||||||
|   ): Promise<void> { |   ): Promise<void> { | ||||||
|     // Update this.anonymity based on the user's analytics opt-in settings
 |     // Update this.anonymity based on the user's analytics opt-in settings
 | ||||||
|  | @ -315,7 +318,7 @@ export class PosthogAnalytics { | ||||||
|     // Note that for new accounts, pseudonymousAnalyticsOptIn won't be set, so updateAnonymityFromSettings
 |     // Note that for new accounts, pseudonymousAnalyticsOptIn won't be set, so updateAnonymityFromSettings
 | ||||||
|     // won't be called (i.e. this.anonymity will be left as the default, until the setting changes)
 |     // won't be called (i.e. this.anonymity will be left as the default, until the setting changes)
 | ||||||
|     settingsBus.on("opt-in-analytics", (optInAnalytics) => { |     settingsBus.on("opt-in-analytics", (optInAnalytics) => { | ||||||
|       this.updateAnonymityFromSettings(optInAnalytics); |       this.updateAnonymityFromSettingsAndIdentifyUser(optInAnalytics); | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -51,6 +51,12 @@ const useSetting = <T>( | ||||||
|     ), |     ), | ||||||
|   ]; |   ]; | ||||||
| }; | }; | ||||||
|  | export const getSetting = <T>(name: string, defaultValue: T): T => { | ||||||
|  |   const key = `matrix-setting-${name}`; | ||||||
|  | 
 | ||||||
|  |   const item = localStorage.getItem(key); | ||||||
|  |   return item === null ? defaultValue : JSON.parse(item); | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| export const useSpatialAudio = () => useSetting("spatial-audio", false); | export const useSpatialAudio = () => useSetting("spatial-audio", false); | ||||||
| export const useShowInspector = () => useSetting("show-inspector", false); | export const useShowInspector = () => useSetting("show-inspector", false); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue