// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { Button, Container } from '~/ui'; import ParityBackground from '~/ui/ParityBackground'; import { RefreshIcon } from '~/ui/Icons'; import { updateBackground } from '~/redux/providers/settings/actions'; import layout from '../layout.css'; import styles from './background.css'; let counter = 0; class Background extends Component { static contextTypes = { api: PropTypes.object.isRequired, muiTheme: PropTypes.object.isRequired } static propTypes = { settings: PropTypes.object.isRequired, updateBackground: PropTypes.func.isRequired } state = { seeds: [] } componentDidMount () { const { settings } = this.props; const seeds = new Array(20).fill(null); seeds[0] = settings.backgroundSeed; this.setState({ seeds }, () => this.generateSeeds()); } render () { return ( } >
{ this.renderBackgrounds() }
); } renderBackgrounds () { const { settings } = this.props; const { seeds } = this.state; return seeds.map((seed, index) => { return (
); }); } onSelect = (seed) => { const { muiTheme } = this.context; const { updateBackground } = this.props; return (event) => { muiTheme.parity.setBackgroundSeed(seed); updateBackground(seed); }; } generateSeeds = () => { const { seeds } = this.state; const current = this.props.settings.backgroundSeed; const newSeeds = seeds.map((seed) => { if (seed === current) { return seed; } return this.generateSeed(); }); this.setState({ seeds: newSeeds }); } generateSeed () { const { api, muiTheme } = this.context; return api.util.sha3.text(`${muiTheme.backgroundSeed}${Math.random()}${counter++}`); } } function mapStateToProps (state) { const { settings } = state; return { settings }; } function mapDispatchToProps (dispatch) { return bindActionCreators({ updateBackground }, dispatch); } export default connect( mapStateToProps, mapDispatchToProps )(Background);