Skip to content
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

fix(email_verification): should refresh email verification is called once per second #125

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

AmanAgarwal041
Copy link

@AmanAgarwal041 AmanAgarwal041 commented Dec 12, 2024

Summary of change

Earlier email verification call was happening multiple times when the backend was not running. Now the email verification calls are restricted to once per second in the shouldRefresh function.

Related issues

supertokens/supertokens-auth-react#845

Test Plan

After the change 3 tests started failing in emailverificationclaim.test.js as the shouldRefresh was called multiple times in one second
Screenshot 2024-12-13 at 4 16 18 AM

After adding delay before each shouldRefresh calls, the tests started passing and one more test added to verify the shouldRefresh response when it is called twice in one second.
Screenshot 2024-12-13 at 4 16 44 AM

Documentation changes

(If relevant, please create a PR in our docs repo, or create a checklist here highlighting the necessary changes)

Checklist for important updates

  • Changelog has been updated
  • frontendDriverInterfaceSupported.json file has been updated (if needed)
    • Along with the associated array in lib/ts/version.ts
  • webJsInterfaceSupported.json file has been updated (if needed)
  • Changes to the version if needed
    • In package.json
    • In package-lock.json
    • In lib/ts/version.ts
  • Had run npm run build-pretty
  • Had installed and ran the pre-commit hook
  • Issue this PR against the latest non released version branch.
    • To know which one it is, run find the latest released tag (git tag) in the format vX.Y.Z, and then find the latest branch (git branch --all) whose X.Y is greater than the latest released tag.
    • If no such branch exists, then create one from the latest released branch.

Remaining TODOs for this PR

  • Item1
  • Item2

@@ -28,6 +28,13 @@ export class EmailVerificationClaimClass extends BooleanClaim {
refresh: this.refresh,
shouldRefresh: (payload, userContext) => {
const DateProvider = DateProviderReference.getReferenceOrThrow().dateProvider;
const currentTime = DateProvider.now();

if (this.shouldRefreshLastCalled && this.shouldRefreshLastCalled > currentTime - 1000) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please make this an explicit check for checking if shouldRefreshLastCalled is not undefined.

Comment on lines 20 to 33
/*
* Delay function is used in case of email verification claim as we have added a debouncing
* mechanism that shouldRefresh will return false if multiple calls are done in 1000ms.
* Hence adding delay after each email verification or shouldRefresh calls will result in
* correct tests.
* Test for checking when the shouldRefresh returning false when called multiple times in 1000ms
* is added.
*/
const delay = async () => {
return new Promise((resolve) => {
setTimeout(resolve, 1000);
});
};

Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd prefer if you did this through manipulating the DateProvider

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