-
Notifications
You must be signed in to change notification settings - Fork 11
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
base: master
Are you sure you want to change the base?
fix(email_verification): should refresh email verification is called once per second #125
Conversation
@@ -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) { |
There was a problem hiding this comment.
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.
/* | ||
* 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); | ||
}); | ||
}; | ||
|
There was a problem hiding this comment.
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
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 secondAfter 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.
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
frontendDriverInterfaceSupported.json
file has been updated (if needed)lib/ts/version.ts
webJsInterfaceSupported.json
file has been updated (if needed)package.json
package-lock.json
lib/ts/version.ts
npm run build-pretty
git tag
) in the formatvX.Y.Z
, and then find the latest branch (git branch --all
) whoseX.Y
is greater than the latest released tag.Remaining TODOs for this PR