.github
app
chewy
controllers
helpers
javascript
fonts
images
mastodon
actions
components
containers
features
locales
middleware
errors.js
loading_bar.js
sounds.js
reducers
selectors
service_worker
storage
store
.gitkeep
api.js
base_polyfills.js
extra_polyfills.js
initial_state.js
is_mobile.js
link_header.js
load_polyfills.js
main.js
performance.js
ready.js
rtl.js
scroll.js
settings.js
stream.js
test_setup.js
uuid.js
packs
styles
lib
mailers
models
policies
presenters
serializers
services
validators
views
workers
bin
config
db
docs
lib
log
nanobox
public
spec
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.editorconfig
.env.nanobox
.env.production.sample
.env.test
.env.vagrant
.eslintignore
.eslintrc.yml
.foreman
.gitattributes
.gitignore
.haml-lint.yml
.nanoignore
.nvmrc
.postcssrc.yml
.profile
.rspec
.rubocop.yml
.ruby-version
.scss-lint.yml
.slugignore
.travis.yml
.yarnclean
AUTHORS.md
Aptfile
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
LICENSE
Procfile
Procfile.dev
README.md
Rakefile
Vagrantfile
app.json
boxfile.yml
config.ru
docker-compose.yml
jest.config.js
package.json
scalingo.json
yarn.lock
* Replace browserify with webpack * Add react-intl-translations-manager * Do not minify in development, add offline-plugin for ServiceWorker background cache updates * Adjust tests and dependencies * Fix production deployments * Fix tests * More optimizations * Improve travis cache for npm stuff * Re-run travis * Add back support for custom.scss as before * Remove offline-plugin and babili * Fix issue with Immutable.List().unshift(...values) not working as expected * Make travis load schema instead of running all migrations in sequence * Fix missing React import in WarningContainer. Optimize rendering performance by using ImmutablePureComponent instead of React.PureComponent. ImmutablePureComponent uses Immutable.is() to compare props. Replace dynamic callback bindings in <UI /> * Add react definitions to places that use JSX * Add Procfile.dev for running rails, webpack and streaming API at the same time
26 lines
855 B
JavaScript
26 lines
855 B
JavaScript
import { showLoading, hideLoading } from 'react-redux-loading-bar';
|
|
|
|
const defaultTypeSuffixes = ['PENDING', 'FULFILLED', 'REJECTED'];
|
|
|
|
export default function loadingBarMiddleware(config = {}) {
|
|
const promiseTypeSuffixes = config.promiseTypeSuffixes || defaultTypeSuffixes;
|
|
|
|
return ({ dispatch }) => next => (action) => {
|
|
if (action.type && !action.skipLoading) {
|
|
const [PENDING, FULFILLED, REJECTED] = promiseTypeSuffixes;
|
|
|
|
const isPending = new RegExp(`${PENDING}$`, 'g');
|
|
const isFulfilled = new RegExp(`${FULFILLED}$`, 'g');
|
|
const isRejected = new RegExp(`${REJECTED}$`, 'g');
|
|
|
|
if (action.type.match(isPending)) {
|
|
dispatch(showLoading());
|
|
} else if (action.type.match(isFulfilled) || action.type.match(isRejected)) {
|
|
dispatch(hideLoading());
|
|
}
|
|
}
|
|
|
|
return next(action);
|
|
};
|
|
};
|