/* eslint-disable */
import React from 'react'
import {
Text,
View,
Button,
TextInput,
TouchableOpacity,
TouchableHighlight,
Image } from 'react-native'
// import FilePicker from './file-picker.js'
import testUploadFileWithTus from './tus-test.js'
import ImagePicker from 'react-native-image-picker'
export default class App extends React.Component {
constructor () {
super()
this.state = {
progress: 0,
total: 0,
file: null,
isFilePickerVisible: false
}
this.isReactNative = (typeof navigator !== 'undefined' &&
typeof navigator.product === 'string' &&
navigator.product.toLowerCase() === 'reactnative')
this.startUpload = this.startUpload.bind(this)
this.selectPhotoTapped = this.selectPhotoTapped.bind(this)
this.addFile = this.addFile.bind(this)
this.showFilePicker = this.showFilePicker.bind(this)
}
createAndUploadTextFileWithTus () {
const string = 'Hello, how are you doing? ' + Date.now()
Expo.FileSystem.writeAsStringAsync(Expo.FileSystem.documentDirectory + '/myfile.txt', string)
.then(() => {
const path = Expo.FileSystem.documentDirectory + '/myfile.txt'
const file = {
uri: path
}
testUploadFileWithTus(file)
.then((url) => {
this.setState({
status: `Upload successful: ${url}`
})
})
.catch((err) => {
this.setState({
status: `Error: ${err}`
})
})
})
}
componentDidMount () {
console.log('is this React Native?', this.isReactNative)
// this.createAndUploadTextFileWithTus()
// this.uppy = Uppy({ autoProceed: false, debug: true })
// this.uppy.use(XHRUpload, {
// // endpoint: 'http://192.168.1.7:7000/',
// endpoint: 'http://api2.transloadit.com/',
// })
// // this.uppy.use(Tus, { endpoint: 'https://master.tus.io/files/' })
// this.uppy.on('upload-progress', (file, progress) => {
// this.setState({
// progress: progress.bytesUploaded,
// total: progress.bytesTotal
// })
// })
// this.uppy.on('complete', (ev) => {
// this.setState({
// status: 'Upload complete ✅'
// })
// console.log('tadada!')
// console.log(this.uppy.state.files)
// })
}
addFile (file) {
console.log(file)
var photo = {
uri: file.uri,
type: file.type,
name: 'photo.jpg',
}
this.setState({
status: 'Uploading...'
})
testUploadFileWithTus(photo)
.then((url) => {
this.setState({
status: `Upload successful: ${url}`
})
})
.catch((err) => {
this.setState({
status: `Error: ${err}`
})
})
// this.uppy.addFile({
// source: 'React Native',
// name: 'photo.jpg',
// type: file.type,
// data: photo
// })
}
selectPhotoTapped () {
console.log('Selecting photo...')
// Permissions.askAsync(Permissions.CAMERA_ROLL).then((isAllowed) => {
// if (!isAllowed) return
// ImagePicker.launchImageLibraryAsync({
// mediaTypes: 'All'
// })
// .then((result) => {
// console.log(result)
// if (!result.cancelled) {
// this.setState({ file: result })
// this.addFile(result)
// }
// })
// })
ImagePicker.showImagePicker({}, (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 {
const source = {
uri: response.uri
}
// You can also display the image using data:
// const source = { uri: 'data:image/jpeg;base64,' + response.data };
this.setState({
file: source,
})
this.addFile(source)
}
});
}
startUpload () {
this.setState({
status: 'Uploading...'
})
// this.uppy.upload()
}
showFilePicker (visible) {
this.setState({
isFilePickerVisible: visible
})
}
render () {
return (
{/* */}
)
}
}
function SelectAndUploadFileWithUppy (props) {
return (
Uppy running in React Native
{ props.state.file === null
? Select a Photo
:
}
Status: {props.state.status}
{props.state.progress} of {props.state.total}
{/* */}
{
props.showFilePicker(true)
}}>
Select files from Uppy
)
}
// const styles = StyleSheet.create({
// container: {
// flex: 1,
// backgroundColor: '#fff',
// alignItems: 'center',
// justifyContent: 'center'
// }
// })