Skip to content

Commit

Permalink
Lightbox (zulip#710)
Browse files Browse the repository at this point in the history
* Use react-native-simple-toast library.

* Add lightbox to view images.

* Fix layout issues on Android.

* Fix flow errors.

* Use a Toast to display completion notifications.

* Changes after code review.
  • Loading branch information
Sam1301 authored and borisyankov committed Jun 25, 2017
1 parent 8898fd8 commit 3f8ad4a
Show file tree
Hide file tree
Showing 30 changed files with 533 additions and 121 deletions.
3 changes: 2 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@
"dan", "abramov", "lang", "Crashlytics", "bool", "ionicons", "truthy", "bezier", "decrement", "js",
"jsonp", "otp", "Otp", "ascii", "Ascii", "substr", "Util", "actionsheet", "unmute",
"otp", "Otp", "ascii", "Ascii", "substr", "Util", "actionsheet", "jsonp", "actionsheet", "ionicons",
"denmark", "copenhagen", "unregister", "gcm", "unstarMessage", "Unstar", "wildcard_mentioned"
"denmark", "copenhagen", "unregister", "gcm", "unstarMessage", "Unstar", "wildcard_mentioned",
"lightbox", "resize"
],
"skipIfMatch": [
"http://[^s]*",
Expand Down
1 change: 1 addition & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ repositories {


dependencies {
compile project(':react-native-photo-view')
compile project(':react-native-fetch-blob')
compile project(':react-native-sound')
compile project(':react-native-fabric')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import android.util.Log;

import com.facebook.react.ReactApplication;
import com.wix.reactnativenotifications.RNNotificationsPackage;
import com.reactnative.photoview.PhotoViewPackage;
import com.RNFetchBlob.RNFetchBlobPackage;
import com.zmxv.RNSound.RNSoundPackage;
import com.facebook.react.ReactInstanceManager;
Expand Down
4 changes: 4 additions & 0 deletions android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
rootProject.name = 'ZulipMobile'
include ':react-native-notifications'
project(':react-native-notifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android')
include ':react-native-photo-view'
project(':react-native-photo-view').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-photo-view/android')
include ':react-native-fetch-blob'
project(':react-native-fetch-blob').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fetch-blob/android')
include ':react-native-sound'
Expand Down
54 changes: 15 additions & 39 deletions ios/ZulipMobile.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,10 @@
A14EA8771EACE522009D9E83 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A14EA85B1EACE4CF009D9E83 /* libRCTAnimation.a */; };
A155C0061DD8E7A800A8B695 /* libRCTCameraRoll.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A155BFEC1DD8E54100A8B695 /* libRCTCameraRoll.a */; };
A83E9861943143E6A10A689E /* libSafariViewManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E518466F398E458DA2C685AF /* libSafariViewManager.a */; };
AC8907C1FC1D41A2895679ED /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5340A2B6063464CABA5B5F8 /* libRNFetchBlob.a */; };
C2FB87564E22416A9EDEABD3 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AEF58326BC25479294083E9C /* EvilIcons.ttf */; };
C478B42A63D649EFA2CFD12D /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9E53FD60A6D0409A8E58DCB5 /* SimpleLineIcons.ttf */; };
CF15A6B21E5C0C8A003EA77F /* UIView+Tag.m in Sources */ = {isa = PBXBuildFile; fileRef = CF15A6B11E5C0C8A003EA77F /* UIView+Tag.m */; };
CF15A6B61E5C56E5003EA77F /* OptimizedGifDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CF15A6B51E5C56E5003EA77F /* OptimizedGifDecoder.m */; };
CF1624861EE4799800E7FA13 /* libRCTCameraRoll.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A155BFEC1DD8E54100A8B695 /* libRCTCameraRoll.a */; };
CF1953241E5BE67D00B14FF0 /* AnchorScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1953231E5BE67D00B14FF0 /* AnchorScrollView.m */; };
CF1953261E5BF2E000B14FF0 /* AnchorScrollViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1953251E5BF2E000B14FF0 /* AnchorScrollViewManager.m */; };
CF19532E1E5C062B00B14FF0 /* TaggedViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CF19532D1E5C062B00B14FF0 /* TaggedViewManager.m */; };
Expand Down Expand Up @@ -209,13 +207,6 @@
remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2;
remoteInfo = RNDeviceInfo;
};
CF1624801EE478ED00E7FA13 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F4990F2438CE41A291EDBCC9 /* RNFetchBlob.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A15C300E1CD25C330074CB35;
remoteInfo = RNFetchBlob;
};
CF68BE0D1E2CD177001D50C6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
Expand Down Expand Up @@ -272,6 +263,13 @@
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
remoteInfo = "jschelpers-tvOS";
};
CFA67D171EC232E70070048E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6DA76D9085EA458BB979ED8D /* RNVectorIcons.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A39873CE1EA65EE60051E01A;
remoteInfo = "RNVectorIcons-tvOS";
};
CFA67D1A1EC232E70070048E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 96B2280917D24AE692AD70FE /* SafariViewManager.xcodeproj */;
Expand Down Expand Up @@ -331,7 +329,6 @@
ACCD980949044096B1BAD249 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/RNDeviceInfo.xcodeproj"; sourceTree = "<group>"; };
AEF58326BC25479294083E9C /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
AF03F5DAC0924A13BDD49574 /* RNSound.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSound.xcodeproj; path = "../node_modules/react-native-sound/RNSound.xcodeproj"; sourceTree = "<group>"; };
B5340A2B6063464CABA5B5F8 /* libRNFetchBlob.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFetchBlob.a; sourceTree = "<group>"; };
BD9BD8DB981C415B9CD9C8B9 /* SMXCrashlytics.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = SMXCrashlytics.xcodeproj; path = "../node_modules/react-native-fabric/ios/SMXCrashlytics.xcodeproj"; sourceTree = "<group>"; };
C9B0BDEA40534DFA9BDC4C75 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
CA3376A965524CF8E47D2150 /* Pods-ZulipMobileTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ZulipMobileTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-ZulipMobileTests/Pods-ZulipMobileTests.release.xcconfig"; sourceTree = "<group>"; };
Expand All @@ -351,7 +348,6 @@
D5664A74FA8048439CBAB734 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNDeviceInfo.a; sourceTree = "<group>"; };
E518466F398E458DA2C685AF /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = "<group>"; };
EBE1731503514D0FBFEE11BF /* libSMXCrashlytics.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSMXCrashlytics.a; sourceTree = "<group>"; };
F4990F2438CE41A291EDBCC9 /* RNFetchBlob.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNFetchBlob.xcodeproj; path = "../node_modules/react-native-fetch-blob/ios/RNFetchBlob.xcodeproj"; sourceTree = "<group>"; };
F56CBB1B9A6449F895C858C6 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
FD9027BAF72ED45247660C16 /* Pods-ZulipMobileTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ZulipMobileTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ZulipMobileTests/Pods-ZulipMobileTests.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
Expand All @@ -371,7 +367,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CF1624861EE4799800E7FA13 /* libRCTCameraRoll.a in Frameworks */,
A14EA8771EACE522009D9E83 /* libRCTAnimation.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
Expand All @@ -389,7 +384,6 @@
78FA95D8058C4372AB199525 /* libRNSound.a in Frameworks */,
F6397C64C31B4108B66C0839 /* libSMXCrashlytics.a in Frameworks */,
A83E9861943143E6A10A689E /* libSafariViewManager.a in Frameworks */,
AC8907C1FC1D41A2895679ED /* libRNFetchBlob.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -563,7 +557,6 @@
AF03F5DAC0924A13BDD49574 /* RNSound.xcodeproj */,
BD9BD8DB981C415B9CD9C8B9 /* SMXCrashlytics.xcodeproj */,
96B2280917D24AE692AD70FE /* SafariViewManager.xcodeproj */,
F4990F2438CE41A291EDBCC9 /* RNFetchBlob.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
Expand Down Expand Up @@ -607,6 +600,7 @@
isa = PBXGroup;
children = (
A1198F071DD517CE007C3837 /* libRNVectorIcons.a */,
CFA67D181EC232E70070048E /* libRNVectorIcons-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
Expand Down Expand Up @@ -644,14 +638,6 @@
name = Products;
sourceTree = "<group>";
};
CF1624621EE478ED00E7FA13 /* Products */ = {
isa = PBXGroup;
children = (
CF1624811EE478ED00E7FA13 /* libRNFetchBlob.a */,
);
name = Products;
sourceTree = "<group>";
};
CFA67CF51EC232E70070048E /* Products */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -813,10 +799,6 @@
ProductGroup = A1F9F7411E1BE26300A70FA5 /* Products */;
ProjectRef = ACCD980949044096B1BAD249 /* RNDeviceInfo.xcodeproj */;
},
{
ProductGroup = CF1624621EE478ED00E7FA13 /* Products */;
ProjectRef = F4990F2438CE41A291EDBCC9 /* RNFetchBlob.xcodeproj */;
},
{
ProductGroup = A148FEDC1E9D8C9600479280 /* Products */;
ProjectRef = AF03F5DAC0924A13BDD49574 /* RNSound.xcodeproj */;
Expand Down Expand Up @@ -990,13 +972,6 @@
remoteRef = A1F9F7561E1BE26300A70FA5 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
CF1624811EE478ED00E7FA13 /* libRNFetchBlob.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNFetchBlob.a;
remoteRef = CF1624801EE478ED00E7FA13 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
CF68BE0E1E2CD177001D50C6 /* libRCTLinking-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
Expand Down Expand Up @@ -1053,6 +1028,13 @@
remoteRef = CF68BE2C1E2CD177001D50C6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
CFA67D181EC232E70070048E /* libRNVectorIcons-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNVectorIcons-tvOS.a";
remoteRef = CFA67D171EC232E70070048E /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
CFA67D1B1EC232E70070048E /* libSafariViewManager.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
Expand Down Expand Up @@ -1286,7 +1268,6 @@
"$(SRCROOT)/../node_modules/react-native-sound/RNSound",
"$(SRCROOT)/../node_modules/react-native-fabric/ios/SMXCrashlytics",
"$(SRCROOT)/../node_modules/react-native-safari-view",
"$(SRCROOT)/../node_modules/react-native-fetch-blob/ios/**",
);
INFOPLIST_FILE = ZulipMobileTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.2;
Expand All @@ -1299,7 +1280,6 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"$(inherited)",
Expand All @@ -1325,7 +1305,6 @@
"$(SRCROOT)/../node_modules/react-native-sound/RNSound",
"$(SRCROOT)/../node_modules/react-native-fabric/ios/SMXCrashlytics",
"$(SRCROOT)/../node_modules/react-native-safari-view",
"$(SRCROOT)/../node_modules/react-native-fetch-blob/ios/**",
);
INFOPLIST_FILE = ZulipMobileTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.2;
Expand All @@ -1338,7 +1317,6 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"$(inherited)",
Expand All @@ -1365,7 +1343,6 @@
"$(SRCROOT)/../node_modules/react-native-sound/RNSound",
"$(SRCROOT)/../node_modules/react-native-fabric/ios/SMXCrashlytics",
"$(SRCROOT)/../node_modules/react-native-safari-view",
"$(SRCROOT)/../node_modules/react-native-fetch-blob/ios/**",
);
INFOPLIST_FILE = ZulipMobile/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
Expand Down Expand Up @@ -1396,7 +1373,6 @@
"$(SRCROOT)/../node_modules/react-native-sound/RNSound",
"$(SRCROOT)/../node_modules/react-native-fabric/ios/SMXCrashlytics",
"$(SRCROOT)/../node_modules/react-native-safari-view",
"$(SRCROOT)/../node_modules/react-native-fetch-blob/ios/**",
);
INFOPLIST_FILE = ZulipMobile/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
Expand Down
54 changes: 27 additions & 27 deletions ios/ZulipMobile/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,33 @@
<string>0.7.1.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>org.zulip.Zulip</string>
<key>CFBundleURLSchemes</key>
<array>
<string>zulip</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>${FABRIC_API_KEY}</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
Expand All @@ -37,6 +62,8 @@
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
<key>UIAppFonts</key>
<array>
<string>Entypo.ttf</string>
Expand Down Expand Up @@ -64,32 +91,5 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>org.zulip.Zulip</string>
<key>CFBundleURLSchemes</key>
<array>
<string>zulip</string>
</array>
</dict>
</array>
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>${FABRIC_API_KEY}</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
</dict>
</plist>
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,10 @@
"react-native-fabric-crashlytics": "^0.1.8",
"react-native-notifications": "^1.1.10",
"react-native-fetch-blob": "^0.10.5",
"react-native-photo-view": "^1.2.0",
"react-native-safari-view": "^2.0.0",
"react-native-scrollable-tab-view": "^0.7.0",
"react-native-simple-toast": "0.0.6",
"react-native-sound": "^0.10.1",
"react-native-vector-icons": "^4.0.0",
"react-navigation": "^1.0.0-beta.7",
Expand Down
5 changes: 2 additions & 3 deletions src/api/downloadFile.ios.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { CameraRoll, AlertIOS } from 'react-native';
import { CameraRoll } from 'react-native';

export default (url: string) =>
CameraRoll.saveToCameraRoll(url).then(() => AlertIOS.alert('Download complete', 'File saved to CameraRoll.'));
export default (url: string) => CameraRoll.saveToCameraRoll(url);
8 changes: 6 additions & 2 deletions src/html/HtmlNodeTag.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import React from 'react';
import type { StyleObj } from 'react-native/Libraries/StyleSheet/StyleSheetTypes';

import { Auth } from '../types';
import { Auth, Message, PushRouteAction } from '../types';
import styles from './HtmlStyles';
import cascadingStyles from './cascadingStylesView';
import cascadingStylesText from './cascadingStylesText';
Expand Down Expand Up @@ -51,10 +51,12 @@ type Props = {
cascadingTextStyle: StyleObj,
childrenNodes: Object[],
onPress: () => void,
message: Message,
pushRoute: PushRouteAction,
};

export default ({ auth, attribs, name, cascadingStyle,
cascadingTextStyle, childrenNodes, onPress }: Props) => {
cascadingTextStyle, childrenNodes, onPress, pushRoute, message }: Props) => {
const style = [
styles[name],
...stylesFromClassNames(attribs.class, styles),
Expand Down Expand Up @@ -89,6 +91,8 @@ export default ({ auth, attribs, name, cascadingStyle,
cascadingTextStyle={newCascadingStylesText}
childrenNodes={childrenNodes}
onPress={onPress}
pushRoute={pushRoute}
message={message}
/>
);
};
17 changes: 14 additions & 3 deletions src/html/renderHtmlChildren.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import React from 'react';
import type { StyleObj } from 'react-native/Libraries/StyleSheet/StyleSheetTypes';

import { Auth } from '../types';
import { Auth, Message, PushRouteAction } from '../types';
import HtmlNode from './HtmlNode';

type Props = {
Expand All @@ -11,10 +11,19 @@ type Props = {
cascadingStyle?: StyleObj,
cascadingTextStyle?: StyleObj,
onPress: (html: string) => void,
message: Message,
pushRoute: PushRouteAction,
};

export default ({ auth, cascadingStyle, childrenNodes,
cascadingTextStyle, onPress }: Props) =>
export default ({
auth,
cascadingStyle,
childrenNodes,
cascadingTextStyle,
onPress,
pushRoute,
message,
}: Props) =>
childrenNodes &&
childrenNodes
.filter(x => x.data !== '\n')
Expand All @@ -30,5 +39,7 @@ export default ({ auth, cascadingStyle, childrenNodes,
attribs={node.attribs}
childrenNodes={node.children}
onPress={onPress}
pushRoute={pushRoute}
message={message}
/>
));
Loading

0 comments on commit 3f8ad4a

Please sign in to comment.