Repository: kiwicom/mobile
Pull request #1196 (2018-10-08 09:29:13)

MMB: Add android mobile tickets


Patch:
diff --git a/app/MMB/src/scenes/tickets/__generated__/TicketRefetchQuery.graphql.js b/app/MMB/src/scenes/tickets/__generated__/TicketRefetchQuery.graphql.js
index f4c80343..dce4621b 100644
--- a/app/MMB/src/scenes/tickets/__generated__/TicketRefetchQuery.graphql.js
+++ b/app/MMB/src/scenes/tickets/__generated__/TicketRefetchQuery.graphql.js
@@ -1,6 +1,6 @@
 /**
  * @flow
- * @relayHash 4ad00dd273374184be49c8e128b4958d
+ * @relayHash 87e8e5afc048618c3f90b6e10b304389
  */
 
 /* eslint-disable */
@@ -124,7 +124,7 @@ fragment FlightFromTo on Leg {
   }
   boardingPass {
     ...DownloadButton
-    ...AppleWallet
+    ...TicketList
   }
 }
 
@@ -134,16 +134,16 @@ fragment DownloadButton on BoardingPass {
   ...BoardingPassInformation
 }
 
-fragment AppleWallet on BoardingPass {
+fragment TicketList on BoardingPass {
   pkpasses {
-    ...AppleWalletPassenger
+    ...WalletPassenger
     passenger {
       databaseId
     }
   }
 }
 
-fragment AppleWalletPassenger on Pkpass {
+fragment WalletPassenger on Pkpass {
   url
   passenger {
     fullName
@@ -373,7 +373,7 @@ return {
   "operationKind": "query",
   "name": "TicketRefetchQuery",
   "id": null,
-  "text": "query TicketRefetchQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...TicketRefetch\n    id\n  }\n}\n\nfragment TicketRefetch on BookingInterface {\n  databaseId\n  authToken\n  ...BoardingPasses\n  assets {\n    ...ETicket\n  }\n}\n\nfragment BoardingPasses on Node {\n  __typename\n  ... on BookingReturn {\n    ...BoardingPassReturn\n  }\n  ... on BookingOneWay {\n    ...BoardingPassOneWay\n  }\n  ... on BookingMulticity {\n    ...BoardingPassMultiCity\n  }\n}\n\nfragment ETicket on BookingAssets {\n  ticketUrl\n}\n\nfragment BoardingPassReturn on BookingReturn {\n  outbound {\n    ...FlightSegments\n  }\n  inbound {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassOneWay on BookingOneWay {\n  trip {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassMultiCity on BookingMulticity {\n  trips {\n    arrival {\n      airport {\n        city {\n          name\n        }\n        id\n      }\n    }\n    ...FlightSegments\n  }\n}\n\nfragment FlightSegments on Trip {\n  legs {\n    id\n    ...FlightFromTo\n  }\n}\n\nfragment FlightFromTo on Leg {\n  id\n  airline {\n    logoUrl\n  }\n  departure {\n    localTime\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  boardingPass {\n    ...DownloadButton\n    ...AppleWallet\n  }\n}\n\nfragment DownloadButton on BoardingPass {\n  flightNumber\n  boardingPassUrl\n  ...BoardingPassInformation\n}\n\nfragment AppleWallet on BoardingPass {\n  pkpasses {\n    ...AppleWalletPassenger\n    passenger {\n      databaseId\n    }\n  }\n}\n\nfragment AppleWalletPassenger on Pkpass {\n  url\n  passenger {\n    fullName\n  }\n}\n\nfragment BoardingPassInformation on BoardingPass {\n  availableAt\n  boardingPassUrl\n  ...FutureBookingInformation\n}\n\nfragment FutureBookingInformation on BoardingPass {\n  boardingPassUrl\n}\n",
+  "text": "query TicketRefetchQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...TicketRefetch\n    id\n  }\n}\n\nfragment TicketRefetch on BookingInterface {\n  databaseId\n  authToken\n  ...BoardingPasses\n  assets {\n    ...ETicket\n  }\n}\n\nfragment BoardingPasses on Node {\n  __typename\n  ... on BookingReturn {\n    ...BoardingPassReturn\n  }\n  ... on BookingOneWay {\n    ...BoardingPassOneWay\n  }\n  ... on BookingMulticity {\n    ...BoardingPassMultiCity\n  }\n}\n\nfragment ETicket on BookingAssets {\n  ticketUrl\n}\n\nfragment BoardingPassReturn on BookingReturn {\n  outbound {\n    ...FlightSegments\n  }\n  inbound {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassOneWay on BookingOneWay {\n  trip {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassMultiCity on BookingMulticity {\n  trips {\n    arrival {\n      airport {\n        city {\n          name\n        }\n        id\n      }\n    }\n    ...FlightSegments\n  }\n}\n\nfragment FlightSegments on Trip {\n  legs {\n    id\n    ...FlightFromTo\n  }\n}\n\nfragment FlightFromTo on Leg {\n  id\n  airline {\n    logoUrl\n  }\n  departure {\n    localTime\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  boardingPass {\n    ...DownloadButton\n    ...TicketList\n  }\n}\n\nfragment DownloadButton on BoardingPass {\n  flightNumber\n  boardingPassUrl\n  ...BoardingPassInformation\n}\n\nfragment TicketList on BoardingPass {\n  pkpasses {\n    ...WalletPassenger\n    passenger {\n      databaseId\n    }\n  }\n}\n\nfragment WalletPassenger on Pkpass {\n  url\n  passenger {\n    fullName\n  }\n}\n\nfragment BoardingPassInformation on BoardingPass {\n  availableAt\n  boardingPassUrl\n  ...FutureBookingInformation\n}\n\nfragment FutureBookingInformation on BoardingPass {\n  boardingPassUrl\n}\n",
   "metadata": {},
   "fragment": {
     "kind": "Fragment",
diff --git a/app/MMB/src/scenes/tickets/__generated__/TicketSceneQuery.graphql.js b/app/MMB/src/scenes/tickets/__generated__/TicketSceneQuery.graphql.js
index 9a89b717..2f474bcc 100644
--- a/app/MMB/src/scenes/tickets/__generated__/TicketSceneQuery.graphql.js
+++ b/app/MMB/src/scenes/tickets/__generated__/TicketSceneQuery.graphql.js
@@ -1,6 +1,6 @@
 /**
  * @flow
- * @relayHash fe6e4188dda4a3459be1dcb4210291a9
+ * @relayHash 8e01113ea4dd997ab2b7bede9e08b17b
  */
 
 /* eslint-disable */
@@ -124,7 +124,7 @@ fragment FlightFromTo on Leg {
   }
   boardingPass {
     ...DownloadButton
-    ...AppleWallet
+    ...TicketList
   }
 }
 
@@ -134,16 +134,16 @@ fragment DownloadButton on BoardingPass {
   ...BoardingPassInformation
 }
 
-fragment AppleWallet on BoardingPass {
+fragment TicketList on BoardingPass {
   pkpasses {
-    ...AppleWalletPassenger
+    ...WalletPassenger
     passenger {
       databaseId
     }
   }
 }
 
-fragment AppleWalletPassenger on Pkpass {
+fragment WalletPassenger on Pkpass {
   url
   passenger {
     fullName
@@ -373,7 +373,7 @@ return {
   "operationKind": "query",
   "name": "TicketSceneQuery",
   "id": null,
-  "text": "query TicketSceneQuery(\n  $bookingId: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $bookingId, authToken: $authToken) {\n    __typename\n    ...TicketRefetch\n    id\n  }\n}\n\nfragment TicketRefetch on BookingInterface {\n  databaseId\n  authToken\n  ...BoardingPasses\n  assets {\n    ...ETicket\n  }\n}\n\nfragment BoardingPasses on Node {\n  __typename\n  ... on BookingReturn {\n    ...BoardingPassReturn\n  }\n  ... on BookingOneWay {\n    ...BoardingPassOneWay\n  }\n  ... on BookingMulticity {\n    ...BoardingPassMultiCity\n  }\n}\n\nfragment ETicket on BookingAssets {\n  ticketUrl\n}\n\nfragment BoardingPassReturn on BookingReturn {\n  outbound {\n    ...FlightSegments\n  }\n  inbound {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassOneWay on BookingOneWay {\n  trip {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassMultiCity on BookingMulticity {\n  trips {\n    arrival {\n      airport {\n        city {\n          name\n        }\n        id\n      }\n    }\n    ...FlightSegments\n  }\n}\n\nfragment FlightSegments on Trip {\n  legs {\n    id\n    ...FlightFromTo\n  }\n}\n\nfragment FlightFromTo on Leg {\n  id\n  airline {\n    logoUrl\n  }\n  departure {\n    localTime\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  boardingPass {\n    ...DownloadButton\n    ...AppleWallet\n  }\n}\n\nfragment DownloadButton on BoardingPass {\n  flightNumber\n  boardingPassUrl\n  ...BoardingPassInformation\n}\n\nfragment AppleWallet on BoardingPass {\n  pkpasses {\n    ...AppleWalletPassenger\n    passenger {\n      databaseId\n    }\n  }\n}\n\nfragment AppleWalletPassenger on Pkpass {\n  url\n  passenger {\n    fullName\n  }\n}\n\nfragment BoardingPassInformation on BoardingPass {\n  availableAt\n  boardingPassUrl\n  ...FutureBookingInformation\n}\n\nfragment FutureBookingInformation on BoardingPass {\n  boardingPassUrl\n}\n",
+  "text": "query TicketSceneQuery(\n  $bookingId: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $bookingId, authToken: $authToken) {\n    __typename\n    ...TicketRefetch\n    id\n  }\n}\n\nfragment TicketRefetch on BookingInterface {\n  databaseId\n  authToken\n  ...BoardingPasses\n  assets {\n    ...ETicket\n  }\n}\n\nfragment BoardingPasses on Node {\n  __typename\n  ... on BookingReturn {\n    ...BoardingPassReturn\n  }\n  ... on BookingOneWay {\n    ...BoardingPassOneWay\n  }\n  ... on BookingMulticity {\n    ...BoardingPassMultiCity\n  }\n}\n\nfragment ETicket on BookingAssets {\n  ticketUrl\n}\n\nfragment BoardingPassReturn on BookingReturn {\n  outbound {\n    ...FlightSegments\n  }\n  inbound {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassOneWay on BookingOneWay {\n  trip {\n    ...FlightSegments\n  }\n}\n\nfragment BoardingPassMultiCity on BookingMulticity {\n  trips {\n    arrival {\n      airport {\n        city {\n          name\n        }\n        id\n      }\n    }\n    ...FlightSegments\n  }\n}\n\nfragment FlightSegments on Trip {\n  legs {\n    id\n    ...FlightFromTo\n  }\n}\n\nfragment FlightFromTo on Leg {\n  id\n  airline {\n    logoUrl\n  }\n  departure {\n    localTime\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    airport {\n      city {\n        name\n      }\n      id\n    }\n  }\n  boardingPass {\n    ...DownloadButton\n    ...TicketList\n  }\n}\n\nfragment DownloadButton on BoardingPass {\n  flightNumber\n  boardingPassUrl\n  ...BoardingPassInformation\n}\n\nfragment TicketList on BoardingPass {\n  pkpasses {\n    ...WalletPassenger\n    passenger {\n      databaseId\n    }\n  }\n}\n\nfragment WalletPassenger on Pkpass {\n  url\n  passenger {\n    fullName\n  }\n}\n\nfragment BoardingPassInformation on BoardingPass {\n  availableAt\n  boardingPassUrl\n  ...FutureBookingInformation\n}\n\nfragment FutureBookingInformation on BoardingPass {\n  boardingPassUrl\n}\n",
   "metadata": {},
   "fragment": {
     "kind": "Fragment",
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/FlightFromTo.js b/app/MMB/src/scenes/tickets/boardingPasses/FlightFromTo.js
index 680d3f13..c01cc870 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/FlightFromTo.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/FlightFromTo.js
@@ -1,7 +1,7 @@
 // @flow strict
 
 import * as React from 'react';
-import { View, Platform } from 'react-native';
+import { View } from 'react-native';
 import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
 import { Translation, DateFormatter } from '@kiwicom/mobile-localization';
 import { TextIcon, StyleSheet, Text } from '@kiwicom/mobile-shared';
@@ -9,7 +9,7 @@ import idx from 'idx';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
 import BoardingPassRow from '../components/BoardingPassRow';
-import AppleWallet from './appleWallet/AppleWallet';
+import TicketList from './mobileTicket/TicketList';
 import DownloadButton from './DownloadButton';
 import type { FlightFromTo as RouteStopType } from './__generated__/FlightFromTo.graphql';
 import WalletContext, { type Segment } from '../../../context/WalletContext';
@@ -75,14 +75,13 @@ export class FlightFromTo extends React.Component<PropsWithContext> {
                 data={idx(this.props.data, _ => _.boardingPass)}
               />
             </View>
-            {Platform.OS === 'ios' && (
-              <View style={styles.appleWalletContainer}>
-                <AppleWallet
-                  segmentId={idx(this.props.data, _ => _.id)}
-                  data={idx(this.props.data, _ => _.boardingPass)}
-                />
-              </View>
-            )}
+
+            <View style={styles.appleWalletContainer}>
+              <TicketList
+                segmentId={idx(this.props.data, _ => _.id)}
+                data={idx(this.props.data, _ => _.boardingPass)}
+              />
+            </View>
           </View>
         }
       />
@@ -127,7 +126,7 @@ export default createFragmentContainer(
       }
       boardingPass {
         ...DownloadButton
-        ...AppleWallet
+        ...TicketList
       }
     }
   `,
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/__generated__/FlightFromTo.graphql.js b/app/MMB/src/scenes/tickets/boardingPasses/__generated__/FlightFromTo.graphql.js
index 97a9333f..e062b9c6 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/__generated__/FlightFromTo.graphql.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/__generated__/FlightFromTo.graphql.js
@@ -8,8 +8,8 @@
 
 /*::
 import type { ConcreteFragment } from 'relay-runtime';
-type AppleWallet$ref = any;
 type DownloadButton$ref = any;
+type TicketList$ref = any;
 import type { FragmentReference } from "relay-runtime";
 declare export opaque type FlightFromTo$ref: FragmentReference;
 export type FlightFromTo = {|
@@ -33,7 +33,7 @@ export type FlightFromTo = {|
     |}
   |},
   +boardingPass: ?{|
-    +$fragmentRefs: DownloadButton$ref & AppleWallet$ref
+    +$fragmentRefs: DownloadButton$ref & TicketList$ref
   |},
   +$refType: FlightFromTo$ref,
 |};
@@ -149,7 +149,7 @@ return {
         },
         {
           "kind": "FragmentSpread",
-          "name": "AppleWallet",
+          "name": "TicketList",
           "args": null
         }
       ]
@@ -158,5 +158,5 @@ return {
 };
 })();
 // prettier-ignore
-(node/*: any*/).hash = 'c7701218d5d881a8c7be56c05b35dfae';
+(node/*: any*/).hash = '80f21ea513427632f8bed9ad111b1e2b';
 module.exports = node;
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWallet.js b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/TicketList.js
similarity index 53%
rename from app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWallet.js
rename to app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/TicketList.js
index d7fe0177..5f7b92be 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWallet.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/TicketList.js
@@ -1,22 +1,22 @@
 // @flow strict
 
 import * as React from 'react';
-import { View } from 'react-native';
+import { View, Platform } from 'react-native';
 import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
 import { Translation } from '@kiwicom/mobile-localization';
 import { Text, StyleSheet } from '@kiwicom/mobile-shared';
 import idx from 'idx';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
-import AppleWalletPassenger from './AppleWalletPassenger';
-import type { AppleWallet as Pkpasses } from './__generated__/AppleWallet.graphql';
+import WalletPassenger from './WalletPassenger';
+import type { AppleWallet as Pkpasses } from './__generated__/TicketList.graphql';
 
 type Props = {|
   +data: Pkpasses,
   +segmentId: ?string,
 |};
 
-const AppleWallet = (props: Props) => {
+const TicketList = (props: Props) => {
   const pkpasses = idx(props.data, _ => _.pkpasses) || [];
 
   if (pkpasses.length === 0) {
@@ -24,15 +24,29 @@ const AppleWallet = (props: Props) => {
   }
   return (
     <React.Fragment>
-      <Text style={[styles.title, styles.text]}>
-        <Translation id="mmb.boarding_passes.apple_wallet.title" />
-      </Text>
-      <Text style={[styles.text, styles.infoText]}>
-        <Translation id="mmb.boarding_passes.apple_wallet.information_text" />
-      </Text>
+      {Platform.select({
+        ios: (
+          <React.Fragment>
+            <Text style={[styles.title, styles.text]}>
+              <Translation id="mmb.boarding_passes.apple_wallet.title" />
+            </Text>
+            <Text style={[styles.text, styles.infoText]}>
+              <Translation id="mmb.boarding_passes.apple_wallet.information_text" />
+            </Text>
+          </React.Fragment>
+        ),
+        android: (
+          <Text style={[styles.title, styles.text, styles.androidTitle]}>
+            <Translation
+              id="mmb.boarding_passes.android_wallet.title"
+              textTransform="uppercase"
+            />
+          </Text>
+        ),
+      })}
       <View style={styles.passengerContainer}>
         {pkpasses.map(item => (
-          <AppleWalletPassenger
+          <WalletPassenger
             key={idx(item, _ => _.passenger.databaseId)}
             data={item}
             segmentId={props.segmentId}
@@ -44,11 +58,11 @@ const AppleWallet = (props: Props) => {
 };
 
 export default createFragmentContainer(
-  AppleWallet,
+  TicketList,
   graphql`
-    fragment AppleWallet on BoardingPass {
+    fragment TicketList on BoardingPass {
       pkpasses {
-        ...AppleWalletPassenger
+        ...WalletPassenger
         passenger {
           databaseId
         }
@@ -71,4 +85,7 @@ const styles = StyleSheet.create({
     borderTopWidth: 1,
     borderTopColor: defaultTokens.paletteCloudLight,
   },
+  androidTitle: {
+    fontWeight: '600',
+  },
 });
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWalletPassenger.js b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/WalletPassenger.js
similarity index 58%
rename from app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWalletPassenger.js
rename to app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/WalletPassenger.js
index 1b573a28..008ff587 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/AppleWalletPassenger.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/WalletPassenger.js
@@ -1,9 +1,10 @@
 // @flow strict
 
 import * as React from 'react';
+import { Platform } from 'react-native';
 import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
 import { Translation } from '@kiwicom/mobile-localization';
-import { Icon, StyleSheet, Touchable } from '@kiwicom/mobile-shared';
+import { TextIcon, StyleSheet, Touchable } from '@kiwicom/mobile-shared';
 import idx from 'idx';
 import {
   type NavigationType,
@@ -11,7 +12,7 @@ import {
 } from '@kiwicom/mobile-navigation';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
-import type { AppleWalletPassenger as AppleWalletType } from './__generated__/AppleWalletPassenger.graphql';
+import type { AppleWalletPassenger as AppleWalletType } from './__generated__/WalletPassenger.graphql';
 import WalletContext from './../../../../context/WalletContext';
 
 type PropsWithContext = {|
@@ -24,8 +25,8 @@ type PropsWithContext = {|
   ) => void,
 |};
 
-class AppleWalletPassenger extends React.Component<PropsWithContext> {
-  onPress = () => {
+class WalletPassenger extends React.Component<PropsWithContext> {
+  onPressIos = () => {
     const name = idx(this.props.data, _ => _.passenger.fullName) || '';
     const url = idx(this.props.data, _ => _.url) || '';
 
@@ -37,20 +38,30 @@ class AppleWalletPassenger extends React.Component<PropsWithContext> {
     }
   };
 
-  render = () => (
-    <Touchable onPress={this.onPress} style={styles.row}>
-      <React.Fragment>
-        <Translation
-          passThrough={idx(this.props.data, _ => _.passenger.fullName)}
-        />
-        <Icon
-          name="chevron-right"
-          size={26}
-          color={defaultTokens.paletteProductNormal}
-        />
-      </React.Fragment>
-    </Touchable>
-  );
+  onPressAndroid = () => {
+    console.warn('TODO');
+  };
+
+  render = () => {
+    const onPress = Platform.select({
+      ios: this.onPressIos,
+      android: this.onPressAndroid,
+    });
+
+    return (
+      <Touchable onPress={onPress} style={styles.row}>
+        <React.Fragment>
+          <Translation
+            passThrough={idx(this.props.data, _ => _.passenger.fullName)}
+          />
+          {Platform.select({
+            android: <TextIcon code="&#xe014;" style={styles.icon} />,
+            ios: <TextIcon code="&#xe01F;" style={styles.icon} />,
+          })}
+        </React.Fragment>
+      </Touchable>
+    );
+  };
 }
 
 type Props = {|
@@ -59,18 +70,18 @@ type Props = {|
   +segmentId: ?string,
 |};
 
-const AppleWalletPassengerWithContext = (props: Props) => (
+const WalletPassengerWithContext = (props: Props) => (
   <WalletContext.Consumer>
     {({ actions: { addPkpassData } }) => (
-      <AppleWalletPassenger {...props} addPkpassData={addPkpassData} />
+      <WalletPassenger {...props} addPkpassData={addPkpassData} />
     )}
   </WalletContext.Consumer>
 );
 
 export default createFragmentContainer(
-  withNavigation(AppleWalletPassengerWithContext),
+  withNavigation(WalletPassengerWithContext),
   graphql`
-    fragment AppleWalletPassenger on Pkpass {
+    fragment WalletPassenger on Pkpass {
       url
       passenger {
         fullName
@@ -88,4 +99,8 @@ const styles = StyleSheet.create({
     borderBottomColor: defaultTokens.paletteCloudLight,
     paddingVertical: 20,
   },
+  icon: {
+    fontSize: 26,
+    color: defaultTokens.paletteProductNormal,
+  },
 });
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWallet.graphql.js b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/TicketList.graphql.js
similarity index 78%
rename from app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWallet.graphql.js
rename to app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/TicketList.graphql.js
index 93f2e7a7..015f8042 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWallet.graphql.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/TicketList.graphql.js
@@ -8,24 +8,24 @@
 
 /*::
 import type { ConcreteFragment } from 'relay-runtime';
-type AppleWalletPassenger$ref = any;
+type WalletPassenger$ref = any;
 import type { FragmentReference } from "relay-runtime";
-declare export opaque type AppleWallet$ref: FragmentReference;
-export type AppleWallet = {|
+declare export opaque type TicketList$ref: FragmentReference;
+export type TicketList = {|
   +pkpasses: ?$ReadOnlyArray<?{|
     +passenger: ?{|
       +databaseId: ?number
     |},
-    +$fragmentRefs: AppleWalletPassenger$ref,
+    +$fragmentRefs: WalletPassenger$ref,
   |}>,
-  +$refType: AppleWallet$ref,
+  +$refType: TicketList$ref,
 |};
 */
 
 
 const node/*: ConcreteFragment*/ = {
   "kind": "Fragment",
-  "name": "AppleWallet",
+  "name": "TicketList",
   "type": "BoardingPass",
   "metadata": null,
   "argumentDefinitions": [],
@@ -41,7 +41,7 @@ const node/*: ConcreteFragment*/ = {
       "selections": [
         {
           "kind": "FragmentSpread",
-          "name": "AppleWalletPassenger",
+          "name": "WalletPassenger",
           "args": null
         },
         {
@@ -67,5 +67,5 @@ const node/*: ConcreteFragment*/ = {
   ]
 };
 // prettier-ignore
-(node/*: any*/).hash = '2cb43254bbc6c734f085a85c7b264914';
+(node/*: any*/).hash = '0304d8d8eba00570c06ba26a38fc4b91';
 module.exports = node;
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWalletPassenger.graphql.js b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/WalletPassenger.graphql.js
similarity index 79%
rename from app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWalletPassenger.graphql.js
rename to app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/WalletPassenger.graphql.js
index 81170769..acd5859f 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/appleWallet/__generated__/AppleWalletPassenger.graphql.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/mobileTicket/__generated__/WalletPassenger.graphql.js
@@ -9,20 +9,20 @@
 /*::
 import type { ConcreteFragment } from 'relay-runtime';
 import type { FragmentReference } from "relay-runtime";
-declare export opaque type AppleWalletPassenger$ref: FragmentReference;
-export type AppleWalletPassenger = {|
+declare export opaque type WalletPassenger$ref: FragmentReference;
+export type WalletPassenger = {|
   +url: ?string,
   +passenger: ?{|
     +fullName: ?string
   |},
-  +$refType: AppleWalletPassenger$ref,
+  +$refType: WalletPassenger$ref,
 |};
 */
 
 
 const node/*: ConcreteFragment*/ = {
   "kind": "Fragment",
-  "name": "AppleWalletPassenger",
+  "name": "WalletPassenger",
   "type": "Pkpass",
   "metadata": null,
   "argumentDefinitions": [],
@@ -55,5 +55,5 @@ const node/*: ConcreteFragment*/ = {
   ]
 };
 // prettier-ignore
-(node/*: any*/).hash = '61c60dd20c79385de68ba4be12f67a04';
+(node/*: any*/).hash = 'fd0cebd051bc50e5cf19ba7451755c4c';
 module.exports = node;
diff --git a/app/core/src/navigation/index.js b/app/core/src/navigation/index.js
index 425906ed..48f1bb05 100644
--- a/app/core/src/navigation/index.js
+++ b/app/core/src/navigation/index.js
@@ -31,7 +31,7 @@ export default createBottomTabNavigator(
         backgroundColor: defaultTokens.paletteProductNormal,
       },
     },
-    initialRouteName: 'Search',
+    initialRouteName: 'Bookings',
     tabBarPosition: 'bottom',
   },
 );
diff --git a/packages/localization/src/vocabularies/ManageMyBooking.js b/packages/localization/src/vocabularies/ManageMyBooking.js
index fef88f5c..a5672ac7 100644
--- a/packages/localization/src/vocabularies/ManageMyBooking.js
+++ b/packages/localization/src/vocabularies/ManageMyBooking.js
@@ -51,6 +51,7 @@ export default {
   'mmb.boarding_passes.future_booking_information.available':
     "We've provided you with a digital boarding pass but you should print it out because some airlines require a physical copy.",
   'mmb.boarding_passes.apple_wallet.title': 'Apple Wallet boarding pass',
+  'mmb.boarding_passes.android_wallet.title': 'Mobile tickets',
   'mmb.boarding_passes.apple_wallet.information_text':
     'Board the plane with an electronic boarding pass from your Apple Wallet',
 


Test patch:
diff --git a/app/MMB/src/scenes/tickets/boardingPasses/__tests__/FlightFromTo.test.js b/app/MMB/src/scenes/tickets/boardingPasses/__tests__/FlightFromTo.test.js
index ed8dadef..a0a202cc 100644
--- a/app/MMB/src/scenes/tickets/boardingPasses/__tests__/FlightFromTo.test.js
+++ b/app/MMB/src/scenes/tickets/boardingPasses/__tests__/FlightFromTo.test.js
@@ -119,7 +119,7 @@ describe('FlightFromTo', () => {
           }
         }
       >
-        <ForwardRef(Relay(AppleWallet)) />
+        <ForwardRef(Relay(TicketList)) />
       </Component>
     </Component>
   }
@@ -230,6 +230,15 @@ describe('FlightFromTo', () => {
       >
         <ForwardRef(Relay(withNavigation(DownloadButton))) />
       </Component>
+      <Component
+        style={
+          Object {
+            "marginTop": 20,
+          }
+        }
+      >
+        <ForwardRef(Relay(TicketList)) />
+      </Component>
     </Component>
   }
 />