diff --git a/samples/react/MusicStore/ReactApp/store/AlbumDetails.ts b/samples/react/MusicStore/ReactApp/store/AlbumDetails.ts index 247c947a..ad3f458e 100644 --- a/samples/react/MusicStore/ReactApp/store/AlbumDetails.ts +++ b/samples/react/MusicStore/ReactApp/store/AlbumDetails.ts @@ -1,4 +1,4 @@ -import { fetch } from 'domain-task/fetch'; +import { fetch, addTask } from 'domain-task'; import { typeName, isActionType, Action, Reducer } from 'redux-typed'; import { ActionCreator } from './'; import { Genre } from './GenreList'; @@ -51,7 +51,7 @@ export const actionCreators = { requestAlbumDetails: (albumId: number): ActionCreator => (dispatch, getState) => { // Only load if it's not already loaded (or currently being loaded) if (albumId !== getState().albumDetails.requestedAlbumId) { - fetch(`/api/albums/${ albumId }`) + let fetchTask = fetch(`/api/albums/${ albumId }`) .then(results => results.json()) .then(album => { // Only replace state if it's still the most recent request @@ -60,6 +60,7 @@ export const actionCreators = { } }); + addTask(fetchTask); // Ensure server-side prerendering waits for this to complete dispatch(new RequestAlbumDetails(albumId)); } } diff --git a/samples/react/MusicStore/ReactApp/store/FeaturedAlbums.ts b/samples/react/MusicStore/ReactApp/store/FeaturedAlbums.ts index a3d13b15..f9e78282 100644 --- a/samples/react/MusicStore/ReactApp/store/FeaturedAlbums.ts +++ b/samples/react/MusicStore/ReactApp/store/FeaturedAlbums.ts @@ -1,4 +1,4 @@ -import { fetch } from 'domain-task/fetch'; +import { fetch, addTask } from 'domain-task'; import { typeName, isActionType, Action, Reducer } from 'redux-typed'; import { ActionCreator } from './'; @@ -39,10 +39,11 @@ class ReceiveFeaturedAlbums extends Action { export const actionCreators = { requestFeaturedAlbums: (): ActionCreator => (dispatch, getState) => { if (!getState().featuredAlbums.isLoaded) { - fetch('/api/albums/mostPopular') + let fetchTask = fetch('/api/albums/mostPopular') .then(results => results.json()) .then(albums => dispatch(new ReceiveFeaturedAlbums(albums))); + addTask(fetchTask); // Ensure server-side prerendering waits for this to complete return dispatch(new RequestFeaturedAlbums()); } } diff --git a/samples/react/MusicStore/ReactApp/store/GenreDetails.ts b/samples/react/MusicStore/ReactApp/store/GenreDetails.ts index 2a5f8ff0..24848a10 100644 --- a/samples/react/MusicStore/ReactApp/store/GenreDetails.ts +++ b/samples/react/MusicStore/ReactApp/store/GenreDetails.ts @@ -1,4 +1,4 @@ -import { fetch } from 'domain-task/fetch'; +import { fetch, addTask } from 'domain-task'; import { typeName, isActionType, Action, Reducer } from 'redux-typed'; import { ActionCreator } from './'; import { Album } from './FeaturedAlbums'; @@ -39,7 +39,7 @@ export const actionCreators = { requestGenreDetails: (genreId: number): ActionCreator => (dispatch, getState) => { // Only load if it's not already loaded (or currently being loaded) if (genreId !== getState().genreDetails.requestedGenreId) { - fetch(`/api/genres/${ genreId }/albums`) + let fetchTask = fetch(`/api/genres/${ genreId }/albums`) .then(results => results.json()) .then(albums => { // Only replace state if it's still the most recent request @@ -48,6 +48,7 @@ export const actionCreators = { } }); + addTask(fetchTask); // Ensure server-side prerendering waits for this to complete dispatch(new RequestGenreDetails(genreId)); } } diff --git a/samples/react/MusicStore/ReactApp/store/GenreList.ts b/samples/react/MusicStore/ReactApp/store/GenreList.ts index e24e32cd..8843f22e 100644 --- a/samples/react/MusicStore/ReactApp/store/GenreList.ts +++ b/samples/react/MusicStore/ReactApp/store/GenreList.ts @@ -1,4 +1,4 @@ -import { fetch } from 'domain-task/fetch'; +import { fetch, addTask } from 'domain-task'; import { typeName, isActionType, Action, Reducer } from 'redux-typed'; import { ActionCreator } from './'; @@ -34,9 +34,10 @@ class ReceiveGenresList extends Action { export const actionCreators = { requestGenresList: (): ActionCreator => (dispatch, getState) => { if (!getState().genreList.isLoaded) { - fetch('/api/genres') + let fetchTask = fetch('/api/genres') .then(results => results.json()) .then(genres => dispatch(new ReceiveGenresList(genres))); + addTask(fetchTask); // Ensure server-side prerendering waits for this to complete } } }; diff --git a/samples/react/MusicStore/package.json b/samples/react/MusicStore/package.json index 448f1c9f..084f8ee9 100644 --- a/samples/react/MusicStore/package.json +++ b/samples/react/MusicStore/package.json @@ -25,7 +25,7 @@ "aspnet-webpack-react": "^1.0.1", "bootstrap": "^3.3.6", "domain-context": "^0.5.1", - "domain-task": "^1.0.0", + "domain-task": "^2.0.0", "history": "^2.0.0", "isomorphic-fetch": "^2.2.1", "memory-fs": "^0.3.0", diff --git a/samples/react/ReactGrid/package.json b/samples/react/ReactGrid/package.json index a2de71cd..123cc473 100644 --- a/samples/react/ReactGrid/package.json +++ b/samples/react/ReactGrid/package.json @@ -4,7 +4,7 @@ "dependencies": { "babel-core": "^6.4.5", "bootstrap": "^3.3.5", - "domain-task": "^1.0.0", + "domain-task": "^2.0.0", "formsy-react": "^0.17.0", "formsy-react-components": "^0.6.3", "griddle-react": "^0.3.1", diff --git a/templates/ReactReduxSpa/ClientApp/store/WeatherForecasts.ts b/templates/ReactReduxSpa/ClientApp/store/WeatherForecasts.ts index b3e6b32a..3101a7dd 100644 --- a/templates/ReactReduxSpa/ClientApp/store/WeatherForecasts.ts +++ b/templates/ReactReduxSpa/ClientApp/store/WeatherForecasts.ts @@ -1,4 +1,4 @@ -import { fetch } from 'domain-task/fetch'; +import { fetch, addTask } from 'domain-task'; import { typeName, isActionType, Action, Reducer } from 'redux-typed'; import { ActionCreator } from './'; @@ -45,12 +45,13 @@ export const actionCreators = { requestWeatherForecasts: (startDateIndex: number): ActionCreator => (dispatch, getState) => { // Only load data if it's something we don't already have (and are not already loading) if (startDateIndex !== getState().weatherForecasts.startDateIndex) { - fetch(`/api/SampleData/WeatherForecasts?startDateIndex=${ startDateIndex }`) + let fetchTask = fetch(`/api/SampleData/WeatherForecasts?startDateIndex=${ startDateIndex }`) .then(response => response.json()) .then((data: WeatherForecast[]) => { dispatch(new ReceiveWeatherForecasts(startDateIndex, data)); }); + addTask(fetchTask); // Ensure server-side prerendering waits for this to complete dispatch(new RequestWeatherForecasts(startDateIndex)); } } diff --git a/templates/ReactReduxSpa/package.json b/templates/ReactReduxSpa/package.json index 1e7c3e4a..4070c8af 100644 --- a/templates/ReactReduxSpa/package.json +++ b/templates/ReactReduxSpa/package.json @@ -23,7 +23,7 @@ "aspnet-prerendering": "^1.0.2", "aspnet-webpack": "^1.0.2", "babel-core": "^6.5.2", - "domain-task": "^1.0.0", + "domain-task": "^2.0.0", "react": "^15.0.1", "react-dom": "^15.0.1", "react-redux": "^4.4.4", diff --git a/templates/yeoman/src/generator/package.json b/templates/yeoman/src/generator/package.json index 2a340a9d..ad60454d 100644 --- a/templates/yeoman/src/generator/package.json +++ b/templates/yeoman/src/generator/package.json @@ -1,6 +1,6 @@ { "name": "generator-aspnetcore-spa", - "version": "0.2.1", + "version": "0.2.2", "description": "Single-Page App templates for ASP.NET Core", "author": "Microsoft", "license": "Apache-2.0",