import { ILocationService } from 'angular';
import { RouteParamsProvider } from '../core/navigation/patch/RouteParamsProvider';
import { RouteProvider } from '../core/navigation/patch/RouteProvider';
import { AngularLocationWrapper } from './AngularLocationWrapper';
import { coreModule } from './core_module';
// Neutralizing Angular’s location tampering
// https://stackoverflow.com/a/19825756
const tamperAngularLocation = () => {
coreModule.config([
'$provide',
($provide: any) => {
$provide.decorator('$browser', [
'$delegate',
($delegate: any) => {
$delegate.onUrlChange = () => {};
$delegate.url = () => '';
return $delegate;
},
]);
};
// Intercepting $location service with implementation based on history
const interceptAngularLocation = () => {
$provide.decorator('$location', [
($delegate: ILocationService) => {
$delegate = new AngularLocationWrapper() as unknown as ILocationService;
coreModule.provider('$route', RouteProvider);
coreModule.provider('$routeParams', RouteParamsProvider);
export function initAngularRoutingBridge() {
tamperAngularLocation();
interceptAngularLocation();
}