Skip to content

Commit

Permalink
removed url sync on startup
Browse files Browse the repository at this point in the history
  • Loading branch information
neilff committed Jan 25, 2016
1 parent 77754dd commit 21d9698
Show file tree
Hide file tree
Showing 16 changed files with 224 additions and 79 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/__tests__/**
210 changes: 162 additions & 48 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,54 +1,168 @@
{
"env": {
"browser": true,
"node": true,
"mocha": true,
"es6": true
"parser": "babel-eslint", // https://github.com/babel/babel-eslint
"env": { // http://eslint.org/docs/user-guide/configuring.html#specifying-environments
"browser": true, // browser global variables
"node": true // Node.js global variables and Node.js-specific rules
},
"globals": {
"angular": true,
"moment": true,
"R": true,
"inject": true,
"Q": true,
"sinon": true,
"getService": true,
"expect": true,
"xit": true,
"dealoc": true,
"require": true
"ecmaFeatures": {
"arrowFunctions": true,
"blockBindings": true,
"classes": true,
"defaultParams": true,
"destructuring": true,
"forOf": true,
"generators": false,
"modules": true,
"objectLiteralComputedProperties": true,
"objectLiteralDuplicateProperties": false,
"objectLiteralShorthandMethods": true,
"objectLiteralShorthandProperties": true,
"spread": true,
"superInFunctions": true,
"templateStrings": true
},
"rules": {
"camelcase": 2,
"curly": 2,
"brace-style": [2, "1tbs"],
"quotes": [2, "single"],
"semi": [2, "always"],
"object-curly-spacing": [2, "always"],
"array-bracket-spacing": [2, "never"],
"computed-property-spacing": [2, "never"],
"space-infix-ops": 2,
"space-after-keywords": [2, "always"],
"dot-notation": 2,
"eqeqeq": [2, "smart"],
"no-use-before-define": 2,
"no-redeclare": 2,
"no-unused-vars": [2, {"vars": "all", "args": "after-used"}],
"no-floating-decimal": 2,
"no-spaced-func": 2,
"no-extra-parens": 1,
"no-underscore-dangle": 0,
"valid-jsdoc": 1,
"space-after-keywords": 2,
"max-len": [2, 120],
"no-use-before-define": [2, "nofunc"],
"no-warning-comments": 0,
"new-cap": 0,
"strict": 0,
"eol-last": 0,
"semi": 2
},
"ecmaFeatures": {
"modules": true
"no-undef": 0,
/**
* Strict mode
*/
"strict": [2, "never"], // http://eslint.org/docs/rules/strict

/**
* ES6
*/
"no-var": 2, // http://eslint.org/docs/rules/no-var
"prefer-const": 2, // http://eslint.org/docs/rules/prefer-const

/**
* Variables
*/
"no-shadow": 2, // http://eslint.org/docs/rules/no-shadow
"no-shadow-restricted-names": 2, // http://eslint.org/docs/rules/no-shadow-restricted-names
"no-unused-vars": [2, { // http://eslint.org/docs/rules/no-unused-vars
"vars": "local",
"args": "after-used"
}],
"no-use-before-define": 0, // http://eslint.org/docs/rules/no-use-before-define

/**
* Possible errors
*/
"comma-dangle": [2, "always-multiline"], // http://eslint.org/docs/rules/comma-dangle
"no-cond-assign": [2, "always"], // http://eslint.org/docs/rules/no-cond-assign
"no-console": 1, // http://eslint.org/docs/rules/no-console
"no-debugger": 1, // http://eslint.org/docs/rules/no-debugger
"no-alert": 1, // http://eslint.org/docs/rules/no-alert
"no-constant-condition": 1, // http://eslint.org/docs/rules/no-constant-condition
"no-dupe-keys": 2, // http://eslint.org/docs/rules/no-dupe-keys
"no-duplicate-case": 2, // http://eslint.org/docs/rules/no-duplicate-case
"no-empty": 2, // http://eslint.org/docs/rules/no-empty
"no-ex-assign": 2, // http://eslint.org/docs/rules/no-ex-assign
"no-extra-boolean-cast": 0, // http://eslint.org/docs/rules/no-extra-boolean-cast
"no-extra-semi": 2, // http://eslint.org/docs/rules/no-extra-semi
"no-func-assign": 2, // http://eslint.org/docs/rules/no-func-assign
"no-inner-declarations": 2, // http://eslint.org/docs/rules/no-inner-declarations
"no-invalid-regexp": 2, // http://eslint.org/docs/rules/no-invalid-regexp
"no-irregular-whitespace": 2, // http://eslint.org/docs/rules/no-irregular-whitespace
"no-obj-calls": 2, // http://eslint.org/docs/rules/no-obj-calls
"no-sparse-arrays": 2, // http://eslint.org/docs/rules/no-sparse-arrays
"no-unreachable": 2, // http://eslint.org/docs/rules/no-unreachable
"use-isnan": 2, // http://eslint.org/docs/rules/use-isnan
"block-scoped-var": 0, // http://eslint.org/docs/rules/block-scoped-var

/**
* Best practices
*/
"consistent-return": 2, // http://eslint.org/docs/rules/consistent-return
"curly": [2, "multi-line"], // http://eslint.org/docs/rules/curly
"default-case": 2, // http://eslint.org/docs/rules/default-case
"dot-notation": [2, { // http://eslint.org/docs/rules/dot-notation
"allowKeywords": true
}],
"eqeqeq": 2, // http://eslint.org/docs/rules/eqeqeq
"guard-for-in": 0, // http://eslint.org/docs/rules/guard-for-in
"no-caller": 2, // http://eslint.org/docs/rules/no-caller
"no-else-return": 2, // http://eslint.org/docs/rules/no-else-return
"no-eq-null": 2, // http://eslint.org/docs/rules/no-eq-null
"no-eval": 2, // http://eslint.org/docs/rules/no-eval
"no-extend-native": 2, // http://eslint.org/docs/rules/no-extend-native
"no-extra-bind": 2, // http://eslint.org/docs/rules/no-extra-bind
"no-fallthrough": 2, // http://eslint.org/docs/rules/no-fallthrough
"no-floating-decimal": 2, // http://eslint.org/docs/rules/no-floating-decimal
"no-implied-eval": 2, // http://eslint.org/docs/rules/no-implied-eval
"no-lone-blocks": 2, // http://eslint.org/docs/rules/no-lone-blocks
"no-loop-func": 2, // http://eslint.org/docs/rules/no-loop-func
"no-multi-str": 2, // http://eslint.org/docs/rules/no-multi-str
"no-native-reassign": 2, // http://eslint.org/docs/rules/no-native-reassign
"no-new": 2, // http://eslint.org/docs/rules/no-new
"no-new-func": 2, // http://eslint.org/docs/rules/no-new-func
"no-new-wrappers": 2, // http://eslint.org/docs/rules/no-new-wrappers
"no-octal": 2, // http://eslint.org/docs/rules/no-octal
"no-octal-escape": 2, // http://eslint.org/docs/rules/no-octal-escape
"no-param-reassign": 2, // http://eslint.org/docs/rules/no-param-reassign
"no-proto": 2, // http://eslint.org/docs/rules/no-proto
"no-redeclare": 2, // http://eslint.org/docs/rules/no-redeclare
"no-return-assign": 2, // http://eslint.org/docs/rules/no-return-assign
"no-script-url": 2, // http://eslint.org/docs/rules/no-script-url
"no-self-compare": 2, // http://eslint.org/docs/rules/no-self-compare
"no-sequences": 2, // http://eslint.org/docs/rules/no-sequences
"no-throw-literal": 2, // http://eslint.org/docs/rules/no-throw-literal
"no-with": 2, // http://eslint.org/docs/rules/no-with
"radix": 2, // http://eslint.org/docs/rules/radix
"vars-on-top": 2, // http://eslint.org/docs/rules/vars-on-top
"wrap-iife": [2, "any"], // http://eslint.org/docs/rules/wrap-iife
"yoda": 2, // http://eslint.org/docs/rules/yoda

/**
* Style
*/
"indent": [2, 2], // http://eslint.org/docs/rules/indent
"brace-style": [2, // http://eslint.org/docs/rules/brace-style
"1tbs", {
"allowSingleLine": true
}],
"quotes": [
2, "single", "avoid-escape" // http://eslint.org/docs/rules/quotes
],
"camelcase": [2, { // http://eslint.org/docs/rules/camelcase
"properties": "never"
}],
"comma-spacing": [2, { // http://eslint.org/docs/rules/comma-spacing
"before": false,
"after": true
}],
"comma-style": [2, "last"], // http://eslint.org/docs/rules/comma-style
"eol-last": 2, // http://eslint.org/docs/rules/eol-last
"func-names": 1, // http://eslint.org/docs/rules/func-names
"key-spacing": [2, { // http://eslint.org/docs/rules/key-spacing
"beforeColon": false,
"afterColon": true
}],
"new-cap": [2, { // http://eslint.org/docs/rules/new-cap
"newIsCap": true,
"capIsNew": false
}],
"no-multiple-empty-lines": [2, { // http://eslint.org/docs/rules/no-multiple-empty-lines
"max": 2
}],
"no-nested-ternary": 2, // http://eslint.org/docs/rules/no-nested-ternary
"no-new-object": 2, // http://eslint.org/docs/rules/no-new-object
"no-spaced-func": 2, // http://eslint.org/docs/rules/no-spaced-func
"no-trailing-spaces": 2, // http://eslint.org/docs/rules/no-trailing-spaces
"no-extra-parens": [2, "functions"], // http://eslint.org/docs/rules/no-extra-parens
"no-underscore-dangle": 0, // http://eslint.org/docs/rules/no-underscore-dangle
"one-var": [2, "never"], // http://eslint.org/docs/rules/one-var
"padded-blocks": [2, "never"], // http://eslint.org/docs/rules/padded-blocks
"semi": [2, "always"], // http://eslint.org/docs/rules/semi
"semi-spacing": [2, { // http://eslint.org/docs/rules/semi-spacing
"before": false,
"after": true
}],
"space-after-keywords": 2, // http://eslint.org/docs/rules/space-after-keywords
"space-before-blocks": 2, // http://eslint.org/docs/rules/space-before-blocks
"space-before-function-paren": [2, "never"], // http://eslint.org/docs/rules/space-before-function-paren
"space-infix-ops": 2, // http://eslint.org/docs/rules/space-infix-ops
"space-return-throw-case": 2, // http://eslint.org/docs/rules/space-return-throw-case
"spaced-comment": 2 // http://eslint.org/docs/rules/spaced-comment
}
}
36 changes: 36 additions & 0 deletions example/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export default angular
<li><a ui-sref="app.child1">Child View 1</a></li>
<li><a ui-sref="app.child2">Child View 2</a></li>
<li><a ui-sref="app.child3">Child View 3</a></li>
<li><a ui-sref="app.child4">Child View 4 (prohibited)</a></li>
</ul>
</li>
</ul>
Expand Down Expand Up @@ -129,6 +130,20 @@ export default angular
}
}
})
.state('app.child4', {
url: '/child4',
prohibited: true,
views: {
child: {
template: `
<div class="child-view">
<h2>Child View 4</h2>
<div>This state is prohibited. You should've been redirected to the root.</div>
</div>
`
}
}
})
})
.config(($ngReduxProvider) => {
const logger = createLogger({
Expand All @@ -142,4 +157,25 @@ export default angular

$ngReduxProvider.createStoreWith(reducers, ['ngUiRouterMiddleware', logger, thunk]);
})
.run(($rootScope, $state, $ngRedux, $urlRouter) => {

// If save something to the store, dispatch will force state change update
console.log('will do dispatch');
$ngRedux.dispatch({type: 'SOME_ACTION'});
console.log('did dispatch');

$rootScope.$on('$stateChangeStart', function(evt, to, params) {
if (to.prohibited) {
evt.preventDefault();
console.log('prohibited state change cancelled');
$state.go('app');
}
});

console.log('$stateChangeStart callback is ready');
console.log('enable $urlRouter listening');

$urlRouter.sync();
$urlRouter.listen();
})
.name;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "redux-ui-router",
"version": "0.4.3",
"version": "0.4.4",
"description": "Redux middleware for use with Angular UI Router",
"main": "./lib/index.js",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import stateChangeActions from './state-change-actions';

export default angular
.module('ng-ui-router-middleware', [
uiRouter
uiRouter,
])
.provider('ngUiStateChangeActions', stateChangeActions)
.factory('ngUiRouterMiddleware', routerMiddleware)
Expand All @@ -23,5 +23,5 @@ export const router = routerState;
export {
stateGo,
stateReload,
stateTransitionTo
stateTransitionTo,
};
9 changes: 3 additions & 6 deletions src/router-listener.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,13 @@
* @return {undefined} undefined
*/
export default function RouterListener($rootScope, $urlRouter, $stateParams, ngUiStateChangeActions) {

$rootScope.$on('$stateChangeStart', ngUiStateChangeActions.onStateChangeStart);

$rootScope.$on('$locationChangeSuccess', (evt) => {
evt.preventDefault();
$urlRouter.sync();
$rootScope.$on('$locationChangeSuccess', () => {
ngUiStateChangeActions.onStateChangeSuccess();
});

let unsubcribeStateChangeListener = $rootScope.$on('$stateChangeSuccess', () => {
const unsubcribeStateChangeListener = $rootScope.$on('$stateChangeSuccess', () => {
ngUiStateChangeActions.onStateChangeSuccess();
unsubcribeStateChangeListener();
});
Expand All @@ -30,5 +27,5 @@ RouterListener.$inject = [
'$rootScope',
'$urlRouter',
'$stateParams',
'ngUiStateChangeActions'
'ngUiStateChangeActions',
];
6 changes: 3 additions & 3 deletions src/router-middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {

export default function routerMiddleware($state) {
return ({ getState }) => next => action => {
let { payload } = action;
const { payload } = action;

switch (action.type) {
case STATE_GO:
Expand All @@ -29,8 +29,8 @@ export default function routerMiddleware($state) {
currentState: $state.current,
currentParams: $state.params,
prevState: getState().router.currentState,
prevParams: getState().router.currentParams
}
prevParams: getState().router.currentParams,
},
});

default:
Expand Down
2 changes: 1 addition & 1 deletion src/router-state-reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const INITIAL_STATE = {
currentState: {},
currentParams: {},
prevState: {},
prevParams: {}
prevParams: {},
};

/**
Expand Down
9 changes: 3 additions & 6 deletions src/state-change-actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,16 @@ import onStateNotFound from './state-not-found';
import { bindActionCreators } from 'redux';

export default function stateChangeActions() {

this.$get = function ($ngRedux) {

let actionCreator = {
this.$get = ($ngRedux) => {
const actionCreator = {
onStateChangeStart,
onStateChangeSuccess,
onStateChangeError,
onStateNotFound
onStateNotFound,
};

return bindActionCreators(actionCreator, $ngRedux.dispatch);
};

this.$get.$inject = ['$ngRedux'];

}
4 changes: 2 additions & 2 deletions src/state-change-error.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export default function onStateChangeError(evt, toState, toParams, fromState, fr
toParams,
fromState,
fromParams,
err
}
err,
},
};
}
4 changes: 2 additions & 2 deletions src/state-change-start.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export default function onStateChangeStart(evt, toState, toParams, fromState, fr
toState,
toParams,
fromState,
fromParams
}
fromParams,
},
};
}
Loading

0 comments on commit 21d9698

Please sign in to comment.