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

[BUG] update scroll position should only be called once #242

Merged
merged 12 commits into from
Feb 26, 2020

Conversation

snewcomer
Copy link
Collaborator

@snewcomer snewcomer commented Feb 25, 2020

routeDidChange is called more than once indeterminately. scheduleOnce will run once IFF the same callback ref is given to it. This PR fixes that and is the easy part of this PR.

The difficult part of this PR - whenRouteIdle needs to be resolved and scroll position updated when we are done calling routeDidChange. Effectively the last call is the last argument. We don't want to update the scroll position somewhere in the middle. So the difficult part of this is when to resolve. We do this with requestAnimationFrame and a counter.

In algorithmic terms, this is a stack (and more like a deferred stack because the producer of the items does not know when it done pushing new items onto the stack. It only attempts to pop the last item from the stack when it is done pushing new items on the stack and an arbitrary count gets back to 0).

@snewcomer snewcomer added the bug label Feb 25, 2020
@snewcomer snewcomer self-assigned this Feb 25, 2020
addon/index.js Outdated
} else {
// as described in ember-app-scheduler, this addon can be used to delay rendering until after the route is idle
whenRouteIdle().then(CALLBACK.bind(this, transition));
whenRouteIdle().then(() => {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Need some sort of deferred queue that allows this case to be updated with latest

@snewcomer snewcomer requested a review from Ravenstine February 26, 2020 02:26
@snewcomer snewcomer changed the title Unique functions to scheduleOnce...follow up [BUG] update scroll position should only be called once Feb 26, 2020
@snewcomer snewcomer merged commit 34db46a into master Feb 26, 2020
@snewcomer snewcomer deleted the sn/unique-functions branch February 26, 2020 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants