UNPKG

react-native-1app

Version:

189 lines (168 loc) 5.57 kB
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 ( <View style={styles.page}> <TouchableOpacity style={styles.page} underlayColor = 'rgba(220,220,220,1)' onPress = {()=>{ EdiApi.playVideo(this.state.data.url_video); }} > <Image source={{uri: this.state.data.url_img}} style={[styles.page,{flex: 1, justifyContent: 'center', alignItems: 'center'}]} > <Image style={{ height: 50, resizeMode: 'contain', width:50 }} source={{uri: this.base64Icon, scale: 1}} /> </Image> </TouchableOpacity> </View> ) } } 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 ( <ImageVideo data={data} /> ); } return ( <View style={styles.page}> <Image zoom={this.props.zoom} resizeMode={this.props.resizeMode} source={{uri: data.url_img}} style={[styles.page,{overflow:"hidden"}]} /> </View> ); } render() { return ( <View style={this.props.style} > <ViewPager style={styles.box} dataSource={this.state.dataSource} renderPage={( data, pageID)=>{ return this._renderPage( data, pageID); }} isLoop={false} autoPlay={false} /> </View> ); } } 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 } });