diff --git a/mobile/android/app/app.iml b/mobile/android/app/app.iml index d5b763e..9379f70 100644 --- a/mobile/android/app/app.iml +++ b/mobile/android/app/app.iml @@ -150,5 +150,6 @@ + \ No newline at end of file diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle index 91603a9..f10634d 100644 --- a/mobile/android/app/build.gradle +++ b/mobile/android/app/build.gradle @@ -164,6 +164,7 @@ dependencies { compile 'com.amazonaws:aws-android-sdk-cognito:2.2.+' compile 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.2.+' compile project(':react-native-maps') + compile project(':react-native-image-picker') } // Run this once to be able to run the application with BUCK diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml index 890a954..89e4f1b 100644 --- a/mobile/android/app/src/main/AndroidManifest.xml +++ b/mobile/android/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ + getPackages() { return Arrays.asList( + new MainReactPackage(), new ReactViroPackage(ReactViroPackage.ViroPlatform.GVR), new MapsPackage(), - new MainReactPackage() + new ImagePickerPackage() ); } diff --git a/mobile/android/settings.gradle b/mobile/android/settings.gradle index 99a09ad..8278951 100644 --- a/mobile/android/settings.gradle +++ b/mobile/android/settings.gradle @@ -10,3 +10,6 @@ project(':react_viro').projectDir = new File('../node_modules/react-viro/android include ':react-native-maps' project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android') + +include ':react-native-image-picker' +project(':react-native-image-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-picker/android') diff --git a/mobile/package-lock.json b/mobile/package-lock.json index 4925812..1800f8f 100644 --- a/mobile/package-lock.json +++ b/mobile/package-lock.json @@ -5418,6 +5418,11 @@ "prop-types": "15.6.1" } }, + "react-native-image-picker": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-0.26.7.tgz", + "integrity": "sha1-rS7pV/f2zAE5aJPqA9hMsq2y43Y=" + }, "react-native-iphone-x-helper": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.0.2.tgz", diff --git a/mobile/package.json b/mobile/package.json index 7e6d708..362252e 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -26,6 +26,7 @@ "react": "^16.2.0", "react-form-binder": "^1.2.0", "react-native": "^0.49.3", + "react-native-image-picker": "^0.26.7", "react-native-iphone-x-helper": "^1.0.2", "react-native-keyboard-spacer": "^0.4.1", "react-native-maps": "^0.20.1", diff --git a/mobile/src/Home/Home.js b/mobile/src/Home/Home.js index 1b44c6a..e3e35f9 100644 --- a/mobile/src/Home/Home.js +++ b/mobile/src/Home/Home.js @@ -47,6 +47,7 @@ export class Home extends React.Component { [ PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, PermissionsAndroid.PERMISSIONS.CAMERA, + PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, ], { title: versionInfo.title, diff --git a/mobile/src/ui/PhotoButton.js b/mobile/src/ui/PhotoButton.js deleted file mode 100644 index e69de29..0000000 diff --git a/mobile/src/ui/PhotoPanel.js b/mobile/src/ui/PhotoPanel.js index e06d41f..78a7364 100644 --- a/mobile/src/ui/PhotoPanel.js +++ b/mobile/src/ui/PhotoPanel.js @@ -8,6 +8,7 @@ import { Dimensions, } from "react-native" import { Icon } from "." +import ImagePicker from "react-native-image-picker" import autobind from "autobind-decorator" const getScreenPortraitDimensions = () => { @@ -20,6 +21,36 @@ const getScreenPortraitDimensions = () => { } export class PhotoPanel extends Component { + @autobind + handlePhotoPress() { + ImagePicker.showImagePicker( + { + title: "Select Photo", + storageOptions: { + skipBackup: true, + path: "photos", + }, + }, + (response) => { + console.log("Response = ", response) + + if (response.didCancel) { + console.log("User cancelled image picker") + } else if (response.error) { + console.log("ImagePicker Error: ", response.error) + } else if (response.customButton) { + console.log("User tapped custom button: ", response.customButton) + } else { + let source = { uri: response.uri } + + // You can also display the image using data: + // let source = { uri: 'data:image/jpeg;base64,' + response.data }; + console.log(source) + } + } + ) + } + render() { const { screenWidth, screenHeight } = getScreenPortraitDimensions() const photoWidth = screenHeight / 4 @@ -62,7 +93,8 @@ export class PhotoPanel extends Component { borderColor: "gray", borderRadius: 4, justifyContent: "center", - }}> + }} + onPress={this.handlePhotoPress}> ))}