Skip to content

Web SDK Refactor: Fix Session Tracking Logic #1301

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
May 30, 2025

Conversation

fadi-george
Copy link
Contributor

@fadi-george fadi-george commented May 28, 2025

1 Line Summary

Continuation of the Web SDK Refactor project.

Details

  • Fixes ServiceWorker logic for tracking session time. Note this was always breaking dev since Vite's define globals doesn't work for the ServiceWorker since its registered separately outside of Vite's scope. But production is fine since we have different entries for worker and page init.
  • Thus I created a EnvVariables util to grab the env vars and use a typeof check to see if it exists otherwise return a default value
  • Update spots where we use these env vars to use if statements for better DCE (dead code elimination)
  • Removed mock for RebuildService in the tests
  • Removed unneeded track start/end operations since we just have the logic in the session manager
  • Created new Database method to setPushToken and call it wherever when we also set push id

Systems Affected

  • WebSDK

Validation

Tests

Info

The changes include fixes to existing tests and aim to improve the reliability of identity and subscription management.

Checklist

  • All the automated tests pass or I explained why that is not possible
  • I have personally tested this on my machine or explained why that is not possible
  • I have included test coverage for these changes or explained why they are not needed

Programming Checklist
Interfaces:

  • Don't use default export
  • New interfaces are in model files

Functions:

  • Don't use default export
  • All function signatures have return types
  • Helpers should not access any data but rather be given the data to operate on.

Typescript:

  • No Typescript warnings
  • Avoid silencing null/undefined warnings with the exclamation point

Other:

  • Iteration: refrain from using elem of array syntax. Prefer forEach or use map
  • Avoid using global OneSignal accessor for context if possible. Instead, we can pass it to function/constructor so that we don't call OneSignal.context

Screenshots

Screenshot 2025-05-28 at 9 27 12 PM

Info

N/A

Checklist

  • I have included screenshots/recordings of the intended results or explained why they are not needed

Related Tickets



This change is Reviewable


@fadi-george fadi-george marked this pull request as draft May 28, 2025 07:48
@fadi-george fadi-george marked this pull request as ready for review May 29, 2025 04:19
@@ -80,31 +80,6 @@ export default class SdkEnvironment {
return WindowEnvironmentKind.Host;
}

/**
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unused

@fadi-george fadi-george merged commit 1705712 into web-refractor May 30, 2025
2 checks passed
@fadi-george fadi-george deleted the fg/session-time branch May 30, 2025 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants