react-native-1app
Version:
161 lines (153 loc) • 4.05 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import React, { Component } from "react";
import { View, Modal } from "react-native";
import SnackBar from "react-native-snackbar-component";
export default class NavigatorView extends Component {
constructor(props) {
super(props);
this.state = {
modal: false
};
}
componentDidMount() {}
alert(text, wait) {
this.setState({
alert: text,
openAlert: true,
loadAlert: wait ? true : false,
wait: wait
});
setTimeout(() => {
this.setState({
openAlert: false,
loadAlert: false,
wait: false,
alert: "---"
});
}, 3000);
}
closeAlert() {
this.setState({
openAlert: false,
loadAlert: false,
wait: false
});
setTimeout(() => {
this.setState({
openAlert: false,
loadAlert: false,
wait: false,
alert: "---"
});
}, 500);
}
openModal(options) {
this.setState({
modal: options.component,
propsModal: options.props
});
}
closeModal() {
this.setState({
modal: false,
propsModal: null
});
}
render() {
return React.createElement(
View,
{ style: this.props.style },
this.props.children,
React.createElement(
Modal,
{
animationType: "fade",
transparent: true,
onRequestClose: () => {
this.setState({ modal: false });
},
visible: this.state.modal ? true : false
},
this.state.modal ? React.createElement(this.state.modal, _extends({
navigator: this,
navigation: this.props.navigation,
screenProps: this.props.screenProps
}, this.props.screenProps, this.state.propsModal)) : null
),
React.createElement(SnackBar, {
visible: this.state.openAlert,
textMessage: this.state.alert,
backgroundColor: "#444",
actionHandler: () => {
this.setState({ openAlert: false });
},
actionText: "OK"
})
);
}
}
NavigatorView.cloneState = function (page) {
if (!page || !page.props) {
return;
}
var copia = page.state;
var original = page.props;
if (page.props.navigation && page.props.navigation.state && page.props.navigation.state.params) {
var foco = page.props.navigation.state.params;
if (foco.oldState) {
var old = foco.oldState;
var list = Object.keys(old);
for (var i = 0; i < list.length; i++) {
var nome = list[i];
copia[nome] = old[nome];
}
}
var list = Object.keys(foco);
for (var i = 0; i < list.length; i++) {
var nome = list[i];
if (nome == "oldState") {
continue;
}
copia[nome] = foco[nome];
}
}
if (page.props.oldState) {
var foco = page.props.oldState;
var list = Object.keys(foco);
for (var i = 0; i < list.length; i++) {
var nome = list[i];
copia[nome] = foco[nome];
}
}
if (page.props.screenProps) {
var foco = page.props.screenProps;
var list = Object.keys(foco);
for (var i = 0; i < list.length; i++) {
var nome = list[i];
copia[nome] = foco[nome];
}
}
if (copia.store && copia.store.getState) {
var state = copia.store.getState();
var lista = Object.keys(state);
for (var i = 0; i < lista.length; i++) {
var nome = lista[i];
if (state[nome]) {
copia[nome] = state[nome];
}
}
}
var lista = Object.keys(page.props);
for (var i = 0; i < lista.length; i++) {
var nome = lista[i];
copia[nome] = page.props[nome];
}
};
NavigatorView.updateState = function (original, copia) {
if (original && copia) {
NavigatorView.cloneState({
props: original,
state: copia
});
}
};