Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 0fbd007

Browse files
pavelgjrkirov
authored andcommitted
feat(routing): upgraded route_hierachical to 0.6.0 and added support for watchQueryParameters
1 parent bf0aec4 commit 0fbd007

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

lib/routing/routing.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class RouteViewFactory {
6262
}
6363
},
6464
leave: cfg.leave,
65+
watchQueryParameters: cfg.watchQueryParameters,
6566
mount: (Route mountRoute) {
6667
if (cfg.mount != null) {
6768
_configure(mountRoute, cfg.mount);
@@ -83,10 +84,11 @@ NgRouteCfg ngRoute({String path, String view, String viewHtml,
8384
Map<String, NgRouteCfg> mount, modules(), bool defaultRoute: false,
8485
RoutePreEnterEventHandler preEnter, RouteEnterEventHandler enter,
8586
RoutePreLeaveEventHandler preLeave, RouteLeaveEventHandler leave,
86-
dontLeaveOnParamChanges: false}) =>
87+
dontLeaveOnParamChanges: false, List<Pattern> watchQueryParameters}) =>
8788
new NgRouteCfg(path: path, view: view, viewHtml: viewHtml, mount: mount,
8889
modules: modules, defaultRoute: defaultRoute, preEnter: preEnter, preLeave: preLeave,
89-
enter: enter, leave: leave, dontLeaveOnParamChanges: dontLeaveOnParamChanges);
90+
enter: enter, leave: leave, dontLeaveOnParamChanges: dontLeaveOnParamChanges,
91+
watchQueryParameters: watchQueryParameters);
9092
/**
9193
* Object containing route configuration parameters. Typically this class
9294
* is not used directly, but rather constructed via [ngRoute] factory function.
@@ -103,9 +105,11 @@ class NgRouteCfg {
103105
final RoutePreEnterEventHandler preEnter;
104106
final RoutePreLeaveEventHandler preLeave;
105107
final RouteLeaveEventHandler leave;
108+
final List<Pattern> watchQueryParameters;
106109

107110
NgRouteCfg({this.view, this.viewHtml, this.path, this.mount, this.modules, this.defaultRoute,
108-
this.enter, this.preEnter, this.preLeave, this.leave, this.dontLeaveOnParamChanges});
111+
this.enter, this.preEnter, this.preLeave, this.leave, this.dontLeaveOnParamChanges,
112+
this.watchQueryParameters});
109113
}
110114

111115
/**

pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ packages:
9292
route_hierarchical:
9393
description: route_hierarchical
9494
source: hosted
95-
version: "0.5.0"
95+
version: "0.6.0"
9696
smoke:
9797
description: smoke
9898
source: hosted

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ dependencies:
2525
intl: '>=0.8.7 <0.12.0'
2626
observe: '>=0.10.0+1 <0.11.0'
2727
perf_api: '>=0.0.9 <0.1.0'
28-
route_hierarchical: '>=0.5.0 <0.6.0'
28+
route_hierarchical: '>=0.6.0 <0.7.0'
2929
dev_dependencies:
3030
benchmark_harness: '>=1.0.0 <2.0.0'
3131
guinness: '>=0.1.9 <0.2.0'

test/routing/routing_spec.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,34 @@ main() {
298298
}));
299299

300300

301+
it('should use watchQueryParameters patterns for query params', async(() {
302+
int preEnterCount = 0;
303+
initRouter((Router router, RouteViewFactory views) {
304+
views.configure({
305+
'foo': ngRoute(
306+
path: '/foo',
307+
preEnter: (_) => preEnterCount++,
308+
watchQueryParameters: ['foo']
309+
),
310+
});
311+
});
312+
313+
router.route('/foo');
314+
microLeap();
315+
316+
expect(preEnterCount).toBe(1);
317+
318+
router.route('/foo?foo=bar');
319+
microLeap();
320+
321+
expect(preEnterCount).toBe(2);
322+
323+
router.route('/foo?foo=bar&bar=baz');
324+
microLeap();
325+
326+
expect(preEnterCount).toBe(2);
327+
}));
328+
301329
it('should clear view on leave an call leave callback', async(() {
302330
int leaveCount = 0;
303331
initRouter((Router router, RouteViewFactory views) {

0 commit comments

Comments
 (0)