Niedzielski has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/383406 )

Change subject: Update: add revision support to wiki endpoint
......................................................................

Update: add revision support to wiki endpoint

Change-Id: I3439048cc3094218f17edc107d1084aa484f841a
---
M src/common/pages/home.tsx
M src/common/pages/wiki.tsx
M src/common/routers/api.test.ts
M src/common/routers/api.ts
M src/common/routers/route.ts
5 files changed, 41 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/marvin refs/changes/06/383406/1

diff --git a/src/common/pages/home.tsx b/src/common/pages/home.tsx
index bb478eb..8e33bc6 100644
--- a/src/common/pages/home.tsx
+++ b/src/common/pages/home.tsx
@@ -45,6 +45,11 @@
     {
       title: "Carrot cake",
       text: "Encoding redirect"
+    },
+    {
+      title: "Ice_cream_cake",
+      revision: "24242119",
+      text: "An arbitrary revision"
     }
   ];
   return (
@@ -69,11 +74,21 @@
 
         <h3>Pages</h3>
         <ul>
-          {testPages.map(({ title, text }) => (
-            <li>
-              <Link href={wiki.toPath({ title })}>{text}</Link>
-            </li>
-          ))}
+          {testPages.map(
+            ({
+              title,
+              revision,
+              text
+            }: {
+              title: string;
+              revision?: string;
+              text: string;
+            }) => (
+              <li>
+                <Link href={wiki.toPath({ title, revision })}>{text}</Link>
+              </li>
+            )
+          )}
         </ul>
 
         <h3>Summaries</h3>
diff --git a/src/common/pages/wiki.tsx b/src/common/pages/wiki.tsx
index 3de8e71..3b008c0 100644
--- a/src/common/pages/wiki.tsx
+++ b/src/common/pages/wiki.tsx
@@ -15,14 +15,19 @@
    * an encoded PageTitlePath.
    */
   title: PageTitleID | PageTitlePath;
+
+  revision?: string;
 }
 
 export interface Props {
   page: PageModel;
 }
 
-export const getInitialProps = ({ title }: Params): Promise<Props> =>
-  requestPage({ titlePath: title }).then(page => ({ page }));
+export const getInitialProps = ({ title, revision }: Params): Promise<Props> =>
+  requestPage({
+    titlePath: title,
+    revision: (revision && parseInt(revision, 10)) || undefined
+  }).then(page => ({ page }));
 
 export const Component = ({ page }: Props): JSX.Element => (
   <App>
diff --git a/src/common/routers/api.test.ts b/src/common/routers/api.test.ts
index 95d778c..a349fe7 100644
--- a/src/common/routers/api.test.ts
+++ b/src/common/routers/api.test.ts
@@ -15,7 +15,8 @@
     const expected: RouteParams = {};
     Object.keys((params as RouteParams) || {}).forEach(name => {
       const value = (params as RouteParams)[name];
-      expected[name] = encodeURIComponent(value);
+      expected[name] =
+        value === undefined ? undefined : encodeURIComponent(value);
     });
 
     const path = route.toPath(params);
@@ -28,7 +29,16 @@
     [
       { name: "home", route: home, params: undefined },
       { name: "about", route: about, params: undefined },
-      { name: "wiki", route: wiki, params: { title: "title" } },
+      {
+        name: "wiki (latest)",
+        route: wiki,
+        params: { title: "title", revision: undefined }
+      },
+      {
+        name: "wiki (revision)",
+        route: wiki,
+        params: { title: "title", revision: "1" }
+      },
       { name: "summary", route: summary, params: { title: "title" } },
       { name: "styleGuide", route: styleGuide, params: undefined },
       { name: "notFound", route: notFound, params: { 0: "/404" } }
diff --git a/src/common/routers/api.ts b/src/common/routers/api.ts
index a420c31..0116c09 100644
--- a/src/common/routers/api.ts
+++ b/src/common/routers/api.ts
@@ -21,7 +21,7 @@
 });
 
 export const wiki: Route<PageParams, PageProps> = newRoute({
-  path: "/wiki/:title",
+  path: "/wiki/:title/:revision?",
   importModule: () =>
     import(/* webpackChunkName: "pages/wiki" */ "../pages/wiki"),
   chunkName: "pages/wiki"
diff --git a/src/common/routers/route.ts b/src/common/routers/route.ts
index fce500f..eeebcd5 100644
--- a/src/common/routers/route.ts
+++ b/src/common/routers/route.ts
@@ -7,7 +7,7 @@
  * Route.url().
  */
 export interface RouteParams {
-  [name: string]: string;
+  [name: string]: string | undefined;
 }
 
 /**

-- 
To view, visit https://gerrit.wikimedia.org/r/383406
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3439048cc3094218f17edc107d1084aa484f841a
Gerrit-PatchSet: 1
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to