[MediaWiki-commits] [Gerrit] marvin[master]: New: add wiki page route
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/377374 ) Change subject: New: add wiki page route .. New: add wiki page route - New: add route for wiki articles and pages. - Fix: off by one error in route parameter name to value mapping. - Fix: Route.initialProperties() signature. Bug: T173323 Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4 --- M src/common/components/app/index.tsx A src/common/components/pages/wiki.tsx M src/common/routers/api.ts M src/common/routers/route.ts M src/common/routers/router.ts 5 files changed, 50 insertions(+), 7 deletions(-) Approvals: Jhernandez: Looks good to me, approved jenkins-bot: Verified diff --git a/src/common/components/app/index.tsx b/src/common/components/app/index.tsx index 82f20c8..79372ef 100644 --- a/src/common/components/app/index.tsx +++ b/src/common/components/app/index.tsx @@ -12,6 +12,12 @@ About +Banana + + +Cucumber + + 404 diff --git a/src/common/components/pages/wiki.tsx b/src/common/components/pages/wiki.tsx new file mode 100644 index 000..45f77b1 --- /dev/null +++ b/src/common/components/pages/wiki.tsx @@ -0,0 +1,23 @@ +import App from "../app"; +import { RouteParameters } from "../../routers/route"; +import { h } from "preact"; + +export interface Parameters extends RouteParameters { + title: string +} + +export interface Properties { + title: string +} + +export const initialProperties = ({ + title +}: Parameters): Promise => { + return Promise.resolve({ title }); +}; + +export const component = ({ title }: Properties): JSX.Element => ( + +{title} + +); diff --git a/src/common/routers/api.ts b/src/common/routers/api.ts index dc2fd96..7aa655a 100644 --- a/src/common/routers/api.ts +++ b/src/common/routers/api.ts @@ -1,4 +1,5 @@ import { Route } from "./route"; +import { Properties as WikiProperties } from "../components/pages/wiki"; export const index: Route= { path: "/", @@ -18,7 +19,18 @@ status: 200 }; +export const wiki: Route = { + path: "/wiki/:title", + endpoint: () => +import(/* webpackChunkName: "components/pages/wiki" */ +"../components/pages/wiki"), + chunkName: "components/pages/wiki", + status: 200 +}; + export const notFound: Route = { + // `(.*)` is the new `*`. See + // https://github.com/pillarjs/path-to-regexp/issues/37. path: "(.*)", endpoint: () => import(/* webpackChunkName: "components/pages/not-found" */ @@ -27,4 +39,4 @@ status: 404 }; -export const routes: Route [] = [index, about, notFound]; +export const routes: Route [] = [index, about, wiki, notFound]; diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts index b68d45b..4f82ad0 100644 --- a/src/common/routers/route.ts +++ b/src/common/routers/route.ts @@ -12,9 +12,7 @@ * A function that returns a Promise for the dependencies needed to construct * the view component such as a remote resource. */ - initialProperties?: (parameters: { parameters: RouteParameters }) => Promise< -Properties - > + initialProperties?: (parameters: RouteParameters) => Promise } export interface Route { diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts index 19c0b30..86eb3fd 100644 --- a/src/common/routers/router.ts +++ b/src/common/routers/router.ts @@ -35,7 +35,7 @@ const newRouteParameters = ( parameterNames: pathToRegExp.Key[], - parameterValues: RegExpExecArray + parameterValues: string[] ): RouteParameters => parameterNames.reduce( ( @@ -54,7 +54,7 @@ parameters: RouteParameters ): Promise { if (endpoint.initialProperties) { -return endpoint.initialProperties({ parameters }); +return endpoint.initialProperties(parameters); } return Promise.resolve({}); } @@ -87,7 +87,11 @@ for (const route of parsedRoutes) { const matches = route.regularExpression.exec(url); if (matches) { - const parameters = newRouteParameters(route.parameterNames, matches); + const [url, ...parameterValues] = matches; + const parameters = newRouteParameters( +route.parameterNames, +parameterValues + ); return respond(route, url, parameters); } } -- To view, visit https://gerrit.wikimedia.org/r/377374 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4 Gerrit-PatchSet: 1 Gerrit-Project: marvin Gerrit-Branch: master Gerrit-Owner: Niedzielski Gerrit-Reviewer: Jhernandez Gerrit-Reviewer: Sniedzielski Gerrit-Reviewer: jenkins-bot <>
[MediaWiki-commits] [Gerrit] marvin[master]: New: add wiki page route
Niedzielski has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/377374 ) Change subject: New: add wiki page route .. New: add wiki page route - New: add route for wiki articles and pages. - Fix: off by one error in route parameter name to value mapping. - Fix: Route.initialProperties() signature. Bug: T173323 Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4 --- M src/common/components/app/index.tsx A src/common/components/pages/wiki.tsx M src/common/routers/api.ts M src/common/routers/route.ts M src/common/routers/router.ts 5 files changed, 50 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/marvin refs/changes/74/377374/1 diff --git a/src/common/components/app/index.tsx b/src/common/components/app/index.tsx index 82f20c8..79372ef 100644 --- a/src/common/components/app/index.tsx +++ b/src/common/components/app/index.tsx @@ -12,6 +12,12 @@ About +Banana + + +Cucumber + + 404 diff --git a/src/common/components/pages/wiki.tsx b/src/common/components/pages/wiki.tsx new file mode 100644 index 000..45f77b1 --- /dev/null +++ b/src/common/components/pages/wiki.tsx @@ -0,0 +1,23 @@ +import App from "../app"; +import { RouteParameters } from "../../routers/route"; +import { h } from "preact"; + +export interface Parameters extends RouteParameters { + title: string +} + +export interface Properties { + title: string +} + +export const initialProperties = ({ + title +}: Parameters): Promise => { + return Promise.resolve({ title }); +}; + +export const component = ({ title }: Properties): JSX.Element => ( + +{title} + +); diff --git a/src/common/routers/api.ts b/src/common/routers/api.ts index dc2fd96..7aa655a 100644 --- a/src/common/routers/api.ts +++ b/src/common/routers/api.ts @@ -1,4 +1,5 @@ import { Route } from "./route"; +import { Properties as WikiProperties } from "../components/pages/wiki"; export const index: Route= { path: "/", @@ -18,7 +19,18 @@ status: 200 }; +export const wiki: Route = { + path: "/wiki/:title", + endpoint: () => +import(/* webpackChunkName: "components/pages/wiki" */ +"../components/pages/wiki"), + chunkName: "components/pages/wiki", + status: 200 +}; + export const notFound: Route = { + // `(.*)` is the new `*`. See + // https://github.com/pillarjs/path-to-regexp/issues/37. path: "(.*)", endpoint: () => import(/* webpackChunkName: "components/pages/not-found" */ @@ -27,4 +39,4 @@ status: 404 }; -export const routes: Route [] = [index, about, notFound]; +export const routes: Route [] = [index, about, wiki, notFound]; diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts index b68d45b..4f82ad0 100644 --- a/src/common/routers/route.ts +++ b/src/common/routers/route.ts @@ -12,9 +12,7 @@ * A function that returns a Promise for the dependencies needed to construct * the view component such as a remote resource. */ - initialProperties?: (parameters: { parameters: RouteParameters }) => Promise< -Properties - > + initialProperties?: (parameters: RouteParameters) => Promise } export interface Route { diff --git a/src/common/routers/router.ts b/src/common/routers/router.ts index 19c0b30..86eb3fd 100644 --- a/src/common/routers/router.ts +++ b/src/common/routers/router.ts @@ -35,7 +35,7 @@ const newRouteParameters = ( parameterNames: pathToRegExp.Key[], - parameterValues: RegExpExecArray + parameterValues: string[] ): RouteParameters => parameterNames.reduce( ( @@ -54,7 +54,7 @@ parameters: RouteParameters ): Promise { if (endpoint.initialProperties) { -return endpoint.initialProperties({ parameters }); +return endpoint.initialProperties(parameters); } return Promise.resolve({}); } @@ -87,7 +87,11 @@ for (const route of parsedRoutes) { const matches = route.regularExpression.exec(url); if (matches) { - const parameters = newRouteParameters(route.parameterNames, matches); + const [url, ...parameterValues] = matches; + const parameters = newRouteParameters( +route.parameterNames, +parameterValues + ); return respond(route, url, parameters); } } -- To view, visit https://gerrit.wikimedia.org/r/377374 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6a90d39fa1feb39011ece7ecc00db37125d8ebc4 Gerrit-PatchSet: 1 Gerrit-Project: marvin Gerrit-Branch: master Gerrit-Owner: Niedzielski Gerrit-Reviewer: Sniedzielski ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org