/* eslint-disable react/jsx-indent-props */ /* eslint-disable import/no-absolute-path */ /* eslint-disable react/jsx-indent */ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Alert } from 'react-bootstrap'; import { Meteor } from 'meteor/meteor'; import { withTracker } from 'meteor/react-meteor-data'; import { Trans, translate } from 'react-i18next'; import { Bert } from 'meteor/themeteorchef:bert'; import UserSubsToFiresCollection from '/imports/api/Subscriptions/Subscriptions'; import SelectionMap, { action } from '/imports/ui/components/SelectionMap/SelectionMap'; import confirm from '/imports/ui/components/Prompt/Confirm'; import Loading from '../../components/Loading/Loading'; import './Subscriptions.scss'; class Subscriptions extends Component { constructor(props) { super(props); this.t = props.t; if (props.location.state) { const received = props.location.state; props.history.push(`${this.props.match.url}/new`, { location: received.location, distance: received.distance, center: [received.location.lat, received.location.lon] }); } this.state = {}; this.state.action = action.view; this.onViewportChanged = this.onViewportChanged.bind(this); this.onFstBtn = this.onFstBtn.bind(this); this.onSndBtn = this.onSndBtn.bind(this); } onFstBtn() { // console.log(this.state); if (this.state.action === action.view) { this.props.history.push(`${this.props.match.url}/new`, { center: this.state.center, zoom: this.state.zoom }); } else if (this.state.action === action.edit) { this.setState({ action: action.view }); } } onSndBtn() { this.setState({ action: action.edit }); } onViewportChanged(viewport) { this.state.center = viewport.center; this.state.zoom = viewport.zoom; } handleRemove(subscriptionId) { const { t, subscriptions } = this.props; confirm(t('Dejarás de recibir notificaciones de fuegos en esa área ¿Estás seguro/a? '), { okBtn: t('Sí'), cancelBtn: t('No') }).then( () => { // `proceed` callback const num = subscriptions.length; Meteor.call('subscriptions.remove', subscriptionId, (error) => { if (error) { Bert.alert(error.reason, 'danger'); } else { Bert.alert('Subscription deleted!', 'success'); if (num === 1) { // it was 1, now deleted this.setState({ action: action.view }); } } }); }, () => { // `cancel` callback } ); } render() { const { loading, t, subscriptions } = this.props; const firstBtnTitle = ['Añadir zona', '', 'Terminar']; // view, add, edit return (!loading ? (

Suscripciones a alertas de fuegos en zonas de mi interés

{ subscriptions.length === 0 ? No estás suscrito a fuegos en ninguna zona : En verde, áreas de las que recibirás alertas de fuegos }
this.onFstBtn(state)} sndBtn={this.state.action === action.view && this.props.subscriptions.length >= 1 ? t('Editar') : null} onSndBtn={() => this.onSndBtn()} onViewportChanged={viewport => this.onViewportChanged(viewport)} loadingSubs={this.props.loading} currentSubs={this.props.subscriptions} onRemove={(id) => { this.handleRemove(id); }} />
) : ); } } Subscriptions.propTypes = { loading: PropTypes.bool.isRequired, subscriptions: PropTypes.arrayOf(PropTypes.object).isRequired, match: PropTypes.object.isRequired, t: PropTypes.func.isRequired, history: PropTypes.object.isRequired, location: PropTypes.object }; export default translate([], { wait: true })(withTracker(() => { const subscription = Meteor.subscribe('mysubscriptions'); // console.log(UserSubsToFiresCollection.find().fetch()); return { loading: !subscription.ready(), subscriptions: UserSubsToFiresCollection.find({ owner: Meteor.userId() }).fetch() }; })(Subscriptions));