Exemple #1
0
        public static void AddWithAmp(this DotvvmRouteTable routeTable, string routeName, string url, DotvvmConfiguration dotvvmConfiguration, Func <IServiceProvider, IDotvvmPresenter> dotvvmPagePresenterFactory = null, Func <IServiceProvider, IAmpPresenter> ampPagePresenterFactory = null, object dotvvmPageDefaultValues = null, object ampPageDefaultValues = null)
        {
            var ampRouteManager = GetAmpConfiguration(dotvvmConfiguration).RouteManager;

            var ampPageRoute = ampRouteManager.BuildAmpRouteName(routeName);

            if (ampPageDefaultValues == null)
            {
                ampPageDefaultValues = dotvvmPageDefaultValues;
            }

            Func <IServiceProvider, IDotvvmPresenter> defaultPresenterFactory;

            if (dotvvmPagePresenterFactory == null)
            {
                defaultPresenterFactory = provider =>
                {
                    var dotvvmPresenter = routeTable.GetDefaultPresenter(provider);
                    return(new DotvvmAmpLinkPresenter(dotvvmPresenter, ampRouteManager));
                };
            }
            else
            {
                defaultPresenterFactory = provider =>
                {
                    var dotvvmPresenter = dotvvmPagePresenterFactory(provider);
                    return(new DotvvmAmpLinkPresenter(dotvvmPresenter, ampRouteManager));
                };
            }

            routeTable.Add(routeName, url, defaultPresenterFactory, dotvvmPageDefaultValues);
            routeTable.Add(ampPageRoute, ampRouteManager.BuildAmpUrl(url), ampPagePresenterFactory ?? new Func <IServiceProvider, IDotvvmPresenter>(GetDefaultAmpPresenter), ampPageDefaultValues);

            ampRouteManager.RegisterRoute(routeTable[ampPageRoute], routeTable[routeName]);
        }