Skip to content
This repository has been archived by the owner on Sep 20, 2023. It is now read-only.

Commit

Permalink
fix: reset pages promises after transitions when using the new trigge…
Browse files Browse the repository at this point in the history
…r prop
  • Loading branch information
Tyler Barnes committed Mar 27, 2019
1 parent 9d69a8e commit 6654337
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 21 deletions.
22 changes: 2 additions & 20 deletions src/context/InternalProvider.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { Component } from "react";
import PropTypes from "prop-types";
import { Provider } from "./createTransitionContext";
import getPagesPromises from "../utils/getPagesPromises";

class InternalProvider extends Component {
state = {
Expand All @@ -25,26 +26,7 @@ class InternalProvider extends Component {
};

componentDidMount() {
let exitResolve;
const exitPromise = new Promise(resolve => {
exitResolve = resolve;
});

let entryResolve;
const entryPromise = new Promise(resolve => {
entryResolve = resolve;
});

this.state.updateContext({
triggerResolve: {
entry: entryResolve,
exit: exitResolve
},
pages: {
exit: exitPromise,
entry: entryPromise
}
});
this.state.updateContext(getPagesPromises());
}

render() {
Expand Down
22 changes: 22 additions & 0 deletions src/utils/getPagesPromises.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
export default function getPagesPromises() {
let exitResolve;
const exitPromise = new Promise(resolve => {
exitResolve = resolve;
});

let entryResolve;
const entryPromise = new Promise(resolve => {
entryResolve = resolve;
});

return {
triggerResolve: {
entry: entryResolve,
exit: exitResolve
},
pages: {
exit: exitPromise,
entry: entryPromise
}
};
}
5 changes: 4 additions & 1 deletion src/utils/triggerTransition.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { navigate } from "gatsby";
import random from "lodash/random";
import { setTimeout } from "requestanimationframe-timer";
import { getMs } from "./secondsMs";
import getPagesPromises from "./getPagesPromises";

const triggerTransition = ({
to,
Expand Down Expand Up @@ -100,7 +101,9 @@ const triggerTransition = ({
exitDelay: 0,
exitLength: 0,
// Once all animation is finished, it's safe to start a new animation since we're no longer inTransition.
inTransition: false
inTransition: false,
// create new page promises for the trigger prop
...getPagesPromises()
});
}, getMs(finalResetSeconds) + 1);
};
Expand Down

0 comments on commit 6654337

Please sign in to comment.