react-native-1app
Version:
173 lines (159 loc) • 5.66 kB
JavaScript
import React, { Component } from 'react';
import { View, Platform, StyleSheet, TouchableOpacity } from 'react-native';
import ViewPager from '../pageview/ViewPager';
// var EdiApi = require('edi-api');
import ApiUteis from '../api/uteis.js';
import Image from './Image';
class ImageVideo extends Component {
constructor(props) {
super(props);
this.state = { data: props.data };
if (!this.state.data) {
this.state.data = {};
}
this.base64Icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QAA' + 'AAAAAD5Q7t/AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAAC3ElEQVRo3u2ZzUtUURjGf68M4UdYu' + 'yJEojRaFApZUpEQBK7CaGUfi9oYuHLnPxG4NsiWRgt30cJFi4hIE60wKFtJlKFgH2NFlE+LuUPDnTvO/TjHCZpnee+c9/6e933vmX' + 'vOgbrq+r9lrgJJagC6gB7gELAP2BnczgPvgdfAM+CFmW3W2nwRvE/SHUlriq81Sbcl9dUSfEDSXALoSpqVdH47wfdLeuAAPKz7ktp9' + 'w1+QtO4Bvqh1SQO+4EckbXqEL2pT0ohr+NFtAA9r1BX8lW3KfFQlLlfjsyrwR4CnQLPTksbXN+C4mb1KbEBSDpgFumsEX9QC0GNmv6N' + 'uNmwxcPgfgCdgGE40QlKTpJWUvTvp4X34IKkpSQWuA3vSpMvMLgE3gB8Oq7AXuJakArNpU1USo1vSG4dVmIkLfzDLU0KxWuW2pQ7EaaF' + 'zrupuZl8ct1QZW5SBk64MlBi5FcRdyhjqVBwDh10bCEwsUFjs3M0Qpjqb0k+fZe/AFs8YkvQ9RfiVOME3fBsInpNmltoIx4lqocYMJY6' + 'toKVuJhxWxhZl4KtveEmNksaB8YRDy9hyET9aBXZ5hO8E7pHuO2s1fCGqAm89wg9S2FZJAx/JFmXgpQfwYstMAq0ZQpWxRRl46Bi+E3gCD' + 'DkIV51NUoukvItpVNKgpM9ZpuUS5SW1VK2AmW0AUxmz7qplSjUVsMUC6M2QqU5J846yXqrepFmcTvkgVy1TqulKnFst6rsoTHk5aqtfFBb1' + 'z6NuVlzUBwPGagwPMFYJHqrvC+0AHgEnagQ/A5wxs5+pDAQm2oDHgN+d43ItA6fN7F3mSJI6JC17eDkraVlSh9N0SGqXtLgN8IvydU4gqVn' + 'ShEf4CUn+92El9Utacgi+JKnfO3jIRE7SVWX7150PYqT+r3FyzCrpKHAROAsc4+/xalh5YI7CV+WUmWX+dHd2Thwy1EZhb3V3cOkT8NHJlFh' + 'XXW71B6r6aEqQ+pyPAAAAAElFTkSuQmCC';
}
componentDidMount() {
ApiUteis.getYouTube(this.state.data.video, v => {
this.state.data.url_video = v.url;
if (v.image) {
this.state.data.url_img = v.image;
}
this.setState({ data: this.state.data });
});
}
render() {
return React.createElement(
View,
{ style: styles.page },
React.createElement(
TouchableOpacity,
{ style: styles.page, underlayColor: 'rgba(220,220,220,1)',
onPress: () => {
EdiApi.playVideo(this.state.data.url_video);
} },
React.createElement(
Image,
{ source: { uri: this.state.data.url_img }, style: [styles.page, { flex: 1, justifyContent: 'center', alignItems: 'center' }] },
React.createElement(Image, { style: { height: 50, resizeMode: 'contain', width: 50 }, source: { uri: this.base64Icon, scale: 1 } })
)
)
);
}
}
export default class Fotos extends Component {
constructor(props) {
super(props);
this.state = { dataSource: new ViewPager.DataSource({ pageHasChanged: (p1, p2) => p1 !== p2 }), lista: [] };
if (props.list) {
var resultado = this.montarLista(props.list);
this.state.lista = resultado;
this.state.dataSource = this.state.dataSource.cloneWithPages(resultado);
}
}
componentWillUnmount() {
// console.log("delete componte FOTOS");
}
montarLista(lista, tag) {
if (!lista) {
return [];
}
this.state.lista = lista;
var tag_foto = "url_img";
var tag_video = "video";
let resultado = [];
if (lista) {
for (var i = 0; i < lista.length; i++) {
let item = lista[i];
if (item[tag_foto] || item.url || item[tag_video]) {
if (item.url) {
item.url_img = item.url;
}
resultado.push(item);
}
}
}
return resultado;
}
shouldComponentUpdate(nextProps, nextState) {
if (nextProps != this.props) {
nextState.lista = this.montarLista(nextProps.list);
// this.state.dataSource =this.state.dataSource.cloneWithPages(this.state.lista) ;
nextState.dataSource = this.state.dataSource.cloneWithPages(nextState.lista);
}
return true;
}
_renderPage(data, pageID) {
if (data.video) {
return React.createElement(ImageVideo, { data: data });
}
return React.createElement(
View,
{ style: styles.page },
React.createElement(Image, { zoom: this.props.zoom, resizeMode: this.props.resizeMode, source: { uri: data.url_img },
style: [styles.page, { overflow: "hidden" }] })
);
}
render() {
return React.createElement(
View,
{ style: this.props.style },
React.createElement(ViewPager, { style: styles.box, dataSource: this.state.dataSource, renderPage: (data, pageID) => {
return this._renderPage(data, pageID);
}, isLoop: false, autoPlay: false
})
);
}
}
var styles = StyleSheet.create({
"view_tela": {
"backgroundColor": "rgba(0,0,0,1)",
"alignSelf": "stretch",
"flex": 1,
"flexDirection": "column",
"justifyContent": "flex-start",
"alignItems": "center"
},
"bt_back": {
"position": "absolute",
"borderRadius": 5,
"flexDirection": "column",
"alignItems": "center",
"justifyContent": "center",
"backgroundColor": "rgba(0,0,0,1)",
"width": 40,
"height": 40,
"left": 5,
"top": 5
},
"image_back": {
"width": 30,
"height": 30,
"marginLeft": 0,
"marginTop": 0
},
page: {
flex: 1,
"backgroundColor": "rgba(0,0,0,0.5)",
"alignSelf": "stretch"
},
box: {
"alignSelf": "stretch",
flex: 1
},
group: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center'
},
group_item: {
margin: 2,
flex: 1,
alignItems: 'center',
justifyContent: 'center'
},
gridview_1: {
"alignSelf": "stretch",
"flex": 1
}
});