-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
chore(auth): debounce refreshAuthTokens #12845
Conversation
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.
Good to see timer is removed. Thank you!
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.
Ty for improving the impl.
@@ -279,7 +279,7 @@ class SubscriptionProcessor { | |||
|
|||
try { | |||
// retrieving current token info from Cognito UserPools | |||
const session = await await fetchAuthSession(); |
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.
😬
it('should allow to invoke the callback again after the promise has being resolved', async () => { | ||
const debouncedCallback = debounceCallback(mockServiceCallback); | ||
for (let i = 0; i < numberOfConcurrentCalls; i++) { | ||
debouncedCallback(); | ||
} | ||
|
||
await debouncedCallback(); | ||
|
||
debouncedCallback(); | ||
expect(mockServiceCallback).toHaveBeenCalledTimes(2); | ||
}); |
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.
This test may not be accurate - the mockServiceCallback
called times should increase after the promised returned by it resolves, and when debouncedCallback
gets called again, but in this test, the mockServiceCallback
doesn't even return a promise.
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.
the mockServiceCallback
doesn't return a promise but the deDupe
function does because it creates a promise on top of the callback
passed. What I'm trying to do is to call the deDuped
function concurrently and then calling it again when it was able to resolve.
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.
Looks good,
nit: why not have a unit for refreshAuthTokens calls are deduped?
This reverts commit 5fc446e.
This reverts commit 5fc446e.
This reverts commit 5fc446e.
* chore(auth): debounce refreshAuthTokens (#12845) * chore: add debounce callback helper * chore: add unit tests * chore: debounce fetchAuthSession * chore: fix unit test * chore: fix bundle size limits * chore: update debounce logic * chore: update dedup logic * chore: debounce refreshAuthTokens * chore: fix bundle size * chore: address feedback * chore: fix unit test * chore: address feedback * chore: update yarn.lock * chore: address feedbak * fix(data): update DataStore to send correct Control Messages when starting (#12861) * chore(release): Publish [ci skip] - @aws-amplify/adapter-nextjs@1.0.13 - @aws-amplify/analytics@7.0.13 - @aws-amplify/api@6.0.13 - @aws-amplify/api-graphql@4.0.13 - @aws-amplify/api-rest@4.0.13 - @aws-amplify/auth@6.0.13 - aws-amplify@6.0.13 - @aws-amplify/core@6.0.13 - @aws-amplify/datastore@5.0.13 - @aws-amplify/datastore-storage-adapter@2.1.13 - @aws-amplify/geo@3.0.13 - @aws-amplify/interactions@6.0.13 - @aws-amplify/notifications@2.0.13 - @aws-amplify/predictions@6.0.13 - @aws-amplify/pubsub@6.0.13 - @aws-amplify/react-native@1.0.13 - @aws-amplify/react-native-example@0.0.14 - @aws-amplify/rtn-push-notification@1.2.13 - @aws-amplify/rtn-web-browser@1.0.13 - @aws-amplify/storage@6.0.13 - tsc-compliance-test@0.1.13 * chore(release): update API docs [ci skip] * chore: enable codecov (#12876) * docs(auth,analytics): adding in-line docs for public apis (#12882) * docs(auth,analytics): adding in-line docs for public apis * fix: unblock the max length lint * chore(react-native): use react-native 0.71.0 as the dev dep * fix: Default branch resolution when running E2E tests (#12910) * fix: Lambda auth config value (#12922) * chore: renable caching the package list in GH actions * chore: remove unused codecov package (has been deprecated) * feat(api): expose HTTP response from API errors (#12835) --------- Co-authored-by: Hui Zhao <10602282+HuiSF@users.noreply.github.com> Co-authored-by: Jim Blanchard <jim.l.blanchard@gmail.com> * chore: temporarily disable codecov GH action integration (#12928) * ci: run flaky data e2es without retry (#12758) * ci: run flaky data e2es without retry * only run on chrome * restore workflow --------- Co-authored-by: Aaron S <94858815+stocaaro@users.noreply.github.com> * fix(core): Amplify.configure dispatches Hub event with unparsed config object (#12930) * chore(repo): use typescript 5.0.2 across workspace * chore(repo): refactor tsconfig hierarchy - move the base tsconfig into the root of the workspace - unifying tsconfig tsconfig.build tsconfig.test and tsconfig.watch settings * chore(repo): promote rollup dependencies into workspace - remove unused build.js script * chore(repo): add build:watch using rollup * chore(repo): setup eslint * chore(adapter-nextjs): migrate to eslint * fix(repo): test-github-actions using js-yaml already removed API * chore(repo): add Code Spell Checker to recommended extension list * chore(repo): add formatOn actions to formattingToggle controlables * fix: not appending notification configs * chore(release): Publish [ci skip] - @aws-amplify/adapter-nextjs@1.0.14 - @aws-amplify/analytics@7.0.14 - @aws-amplify/api@6.0.14 - @aws-amplify/api-graphql@4.0.14 - @aws-amplify/api-rest@4.0.14 - @aws-amplify/auth@6.0.14 - aws-amplify@6.0.14 - @aws-amplify/core@6.0.14 - @aws-amplify/datastore@5.0.14 - @aws-amplify/datastore-storage-adapter@2.1.14 - @aws-amplify/geo@3.0.14 - @aws-amplify/interactions@6.0.14 - @aws-amplify/notifications@2.0.14 - @aws-amplify/predictions@6.0.14 - @aws-amplify/pubsub@6.0.14 - @aws-amplify/react-native@1.0.14 - @aws-amplify/react-native-example@0.0.15 - @aws-amplify/rtn-push-notification@1.2.14 - @aws-amplify/rtn-web-browser@1.0.14 - @aws-amplify/storage@6.0.14 - tsc-compliance-test@0.1.14 * Revert "chore(repo): use typescript 5.0.2 across workspace" (#12941) * Revert "chore(repo): use typescript 5.0.2 across workspace" This reverts commit e20782e. * chore(api-graphql): temporarily install rollup to package * fix(repo): rollup generated sourcemap has wrong src path (#12947) * fix(datastore): Treat head as optional to avoid errors (#12936) * fix(datastore): Treat head as optional to avoid errors * Add testing and fix follow-on issue * fix(api-graphql): wrong arguments for GET operation of a CPK model * fix: Remove special e2e treatment for validated tests (#12946) fix: Remove special integ treament for validated tests * fix(datastore): Limit docs integ test to one browser to improve stability (#12937) * fix(api-graphql): same results returned for queries on the same model with different selection set - caused by the incomplete GraphQL documents caching * Update branch to work with merged updates from main --------- Co-authored-by: israx <70438514+israx@users.noreply.github.com> Co-authored-by: David McAfee <mcafd@amazon.com> Co-authored-by: Jim Blanchard <jim.l.blanchard@gmail.com> Co-authored-by: aws-amplify-bot <aws@amazon.com> Co-authored-by: Hui Zhao <10602282+HuiSF@users.noreply.github.com> Co-authored-by: AllanZhengYP <zheallan@amazon.com> Co-authored-by: Hui Zhao <zhohz@amazon.com> Co-authored-by: Ivan Artemiev <29709626+iartemiev@users.noreply.github.com> Co-authored-by: Aaron S <94858815+stocaaro@users.noreply.github.com> Co-authored-by: ManojNB <manojnb95@gmail.com> Co-authored-by: ManojNB <manojnb@amazon.com> Co-authored-by: Francisco Rodriguez <frodriguez.cs@gmail.com>
* chore(auth): debounce refreshAuthTokens (#12845) * chore: add debounce callback helper * chore: add unit tests * chore: debounce fetchAuthSession * chore: fix unit test * chore: fix bundle size limits * chore: update debounce logic * chore: update dedup logic * chore: debounce refreshAuthTokens * chore: fix bundle size * chore: address feedback * chore: fix unit test * chore: address feedback * chore: update yarn.lock * chore: address feedbak * fix(data): update DataStore to send correct Control Messages when starting (#12861) * chore(release): Publish [ci skip] - @aws-amplify/adapter-nextjs@1.0.13 - @aws-amplify/analytics@7.0.13 - @aws-amplify/api@6.0.13 - @aws-amplify/api-graphql@4.0.13 - @aws-amplify/api-rest@4.0.13 - @aws-amplify/auth@6.0.13 - aws-amplify@6.0.13 - @aws-amplify/core@6.0.13 - @aws-amplify/datastore@5.0.13 - @aws-amplify/datastore-storage-adapter@2.1.13 - @aws-amplify/geo@3.0.13 - @aws-amplify/interactions@6.0.13 - @aws-amplify/notifications@2.0.13 - @aws-amplify/predictions@6.0.13 - @aws-amplify/pubsub@6.0.13 - @aws-amplify/react-native@1.0.13 - @aws-amplify/react-native-example@0.0.14 - @aws-amplify/rtn-push-notification@1.2.13 - @aws-amplify/rtn-web-browser@1.0.13 - @aws-amplify/storage@6.0.13 - tsc-compliance-test@0.1.13 * chore(release): update API docs [ci skip] * chore: enable codecov (#12876) * docs(auth,analytics): adding in-line docs for public apis (#12882) * docs(auth,analytics): adding in-line docs for public apis * fix: unblock the max length lint * chore(react-native): use react-native 0.71.0 as the dev dep * fix: Default branch resolution when running E2E tests (#12910) * fix: Lambda auth config value (#12922) * chore: renable caching the package list in GH actions * chore: remove unused codecov package (has been deprecated) * feat(api): expose HTTP response from API errors (#12835) --------- Co-authored-by: Hui Zhao <10602282+HuiSF@users.noreply.github.com> Co-authored-by: Jim Blanchard <jim.l.blanchard@gmail.com> * chore: temporarily disable codecov GH action integration (#12928) * ci: run flaky data e2es without retry (#12758) * ci: run flaky data e2es without retry * only run on chrome * restore workflow --------- Co-authored-by: Aaron S <94858815+stocaaro@users.noreply.github.com> * fix(core): Amplify.configure dispatches Hub event with unparsed config object (#12930) * chore(repo): use typescript 5.0.2 across workspace * chore(repo): refactor tsconfig hierarchy - move the base tsconfig into the root of the workspace - unifying tsconfig tsconfig.build tsconfig.test and tsconfig.watch settings * chore(repo): promote rollup dependencies into workspace - remove unused build.js script * chore(repo): add build:watch using rollup * chore(repo): setup eslint * chore(adapter-nextjs): migrate to eslint * fix(repo): test-github-actions using js-yaml already removed API * chore(repo): add Code Spell Checker to recommended extension list * chore(repo): add formatOn actions to formattingToggle controlables * fix: not appending notification configs * chore(release): Publish [ci skip] - @aws-amplify/adapter-nextjs@1.0.14 - @aws-amplify/analytics@7.0.14 - @aws-amplify/api@6.0.14 - @aws-amplify/api-graphql@4.0.14 - @aws-amplify/api-rest@4.0.14 - @aws-amplify/auth@6.0.14 - aws-amplify@6.0.14 - @aws-amplify/core@6.0.14 - @aws-amplify/datastore@5.0.14 - @aws-amplify/datastore-storage-adapter@2.1.14 - @aws-amplify/geo@3.0.14 - @aws-amplify/interactions@6.0.14 - @aws-amplify/notifications@2.0.14 - @aws-amplify/predictions@6.0.14 - @aws-amplify/pubsub@6.0.14 - @aws-amplify/react-native@1.0.14 - @aws-amplify/react-native-example@0.0.15 - @aws-amplify/rtn-push-notification@1.2.14 - @aws-amplify/rtn-web-browser@1.0.14 - @aws-amplify/storage@6.0.14 - tsc-compliance-test@0.1.14 * Revert "chore(repo): use typescript 5.0.2 across workspace" (#12941) * Revert "chore(repo): use typescript 5.0.2 across workspace" This reverts commit e20782e. * chore(api-graphql): temporarily install rollup to package * fix(repo): rollup generated sourcemap has wrong src path (#12947) * fix(datastore): Treat head as optional to avoid errors (#12936) * fix(datastore): Treat head as optional to avoid errors * Add testing and fix follow-on issue * fix(api-graphql): wrong arguments for GET operation of a CPK model * fix: Remove special e2e treatment for validated tests (#12946) fix: Remove special integ treament for validated tests * fix(datastore): Limit docs integ test to one browser to improve stability (#12937) * fix(api-graphql): same results returned for queries on the same model with different selection set - caused by the incomplete GraphQL documents caching * Update branch to work with merged updates from main --------- Co-authored-by: israx <70438514+israx@users.noreply.github.com> Co-authored-by: David McAfee <mcafd@amazon.com> Co-authored-by: Jim Blanchard <jim.l.blanchard@gmail.com> Co-authored-by: aws-amplify-bot <aws@amazon.com> Co-authored-by: Hui Zhao <10602282+HuiSF@users.noreply.github.com> Co-authored-by: AllanZhengYP <zheallan@amazon.com> Co-authored-by: Hui Zhao <zhohz@amazon.com> Co-authored-by: Ivan Artemiev <29709626+iartemiev@users.noreply.github.com> Co-authored-by: Aaron S <94858815+stocaaro@users.noreply.github.com> Co-authored-by: ManojNB <manojnb95@gmail.com> Co-authored-by: ManojNB <manojnb@amazon.com> Co-authored-by: Francisco Rodriguez <frodriguez.cs@gmail.com>
Description of changes
The purpose of this PR is to debounce sync concurrent calls to the
fetchAuthSession
API. This approach is similar to the current debouncing logic implemented in v5Issue #, if available
Description of how you validated changes
Checklist
yarn test
passesBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.