<commit_before>import React from 'react'
import {call, put, select} from 'redux-saga/effects';
import once from 'lodash/once'
import {connect} from 'react-redux'
import transaction from 'app/redux/Transaction'
import LoadingIndicator from 'app/components/elements/LoadingIndicator'
import {PrivateKey} from 'shared/ecc'
import {key_utils} from 'shared/ecc'
import Apis from 'shared/api_client/ApiInstances'
import { translate, translateHtml } from '../../Translator';

import o2j from 'shared/clash/object2json'
//import {test as o2jtest} from 'shared/clash/object2json'

/*
	Логика компонента:
	Если пользователь находится на своей странице, и если у него нет Btc адреса, то должна отображаться кнопка генерации адреса.
	Если у пользователя есть BTC адрес, то необходимо отразить аддрес, qr code и табличку с предыдущими транзакциями.
	Если пользователь находится НЕ на своей странице, то отобразить предыдущие транзакции, если они есть.
*/



class BuyGolos extends React.Component {

	state = {
		icoAddress: '',
		transactions: [],
        error: '',
		loading: false,
		checkboxesClicked: [false, false, false]
	}

	handleCheckBoxClick(checkboxNumber, value, e) {
		e.preventDefault()
		console.log('value', value)
		console.log('checkboxNumber', checkboxNumber)
		const {checkboxesClicked} = this.state
		checkboxesClicked[checkboxNumber] = !value
		console.log('checkboxesClicked', checkboxesClicked)
		this.setState({ checkboxesClicked })
	}

	generateAddress = event => {
		event && event.preventDefault()

		function isTrue(item) {
			console.log('true', true)
			return item === true
		}
		console.log('this.state.checkboxesClicked.every(isTrue)', this.state.checkboxesClicked.every(isTrue))
		if (!this.state.checkboxesClicked.every(isTrue)) {
			console.log('error will occure')
			this.setState({
				error: 'Чтобы продолжить, установите этот флажок. Просим Вас внимательно отнестиcь к данной информации во избежание недопонимания.'
			})
			return
		}

		let {metaData, accountname, account} = this.props

		this.setState({ loading: true })

		fetch('/api/v1/generate_ico_address', {
			method: 'post',
			mode: 'no-cors',
			credentials: 'same-origin',
			headers: {
				Accept: 'application/json',
				'Content-type': 'application/json'
			},
			body: JSON.stringify({csrf: $STM_csrf})
		})
		.then(function(data) { return data.json() })
		.then(({icoAddress}) => {
			console.log('icoAddress', icoAddress)
			if (metaData == '{created_at: \'GENESIS\'}') metaData = {created_at: "GENESIS"}
			if (metaData == "") metaData = {}
			metaData.ico_address = icoAddress
			metaData = o2j.ifObjectToJSON(metaData);
			this.props.updateMeta({
					json_metadata: metaData,
					account: accountname,
					memo_key: account.memo_key,
					onError: () => this.setState({
						loading: false,
						error: 'server returned error'
					}),
					onSuccess: () => this.setState({
						icoAddress,
						loading: false,
					})
			})
		})
		.catch(error => {
			// TODO dont forget to add error display for user<commit_msg> fixed metadata parsing a bit<commit_after>import React from 'react'
import {call, put, select} from 'redux-saga/effects';
import once from 'lodash/once'
import {connect} from 'react-redux'
import transaction from 'app/redux/Transaction'
import LoadingIndicator from 'app/components/elements/LoadingIndicator'
import {PrivateKey} from 'shared/ecc'
import {key_utils} from 'shared/ecc'
import Apis from 'shared/api_client/ApiInstances'
import { translate, translateHtml } from '../../Translator';

import o2j from 'shared/clash/object2json'
//import {test as o2jtest} from 'shared/clash/object2json'

/*
	Логика компонента:
	Если пользователь находится на своей странице, и если у него нет Btc адреса, то должна отображаться кнопка генерации адреса.
	Если у пользователя есть BTC адрес, то необходимо отразить аддрес, qr code и табличку с предыдущими транзакциями.
	Если пользователь находится НЕ на своей странице, то отобразить предыдущие транзакции, если они есть.
*/



class BuyGolos extends React.Component {

	state = {
		icoAddress: '',
		transactions: [],
        error: '',
		loading: false,
		checkboxesClicked: [false, false, false]
	}

	handleCheckBoxClick(checkboxNumber, value, e) {
		e.preventDefault()
		console.log('value', value)
		console.log('checkboxNumber', checkboxNumber)
		const {checkboxesClicked} = this.state
		checkboxesClicked[checkboxNumber] = !value
		console.log('checkboxesClicked', checkboxesClicked)
		this.setState({ checkboxesClicked })
	}

	generateAddress = event => {
		event && event.preventDefault()

		function isTrue(item) {
			console.log('true', true)
			return item === true
		}
		console.log('this.state.checkboxesClicked.every(isTrue)', this.state.checkboxesClicked.every(isTrue))
		if (!this.state.checkboxesClicked.every(isTrue)) {
			console.log('error will occure')
			this.setState({
				error: 'Чтобы продолжить, установите этот флажок. Просим Вас внимательно отнестиcь к данной информации во избежание недопонимания.'
			})
			return
		}

		let {metaData, accountname, account} = this.props

		this.setState({ loading: true })

		fetch('/api/v1/generate_ico_address', {
			method: 'post',
			mode: 'no-cors',
			credentials: 'same-origin',
			headers: {
				Accept: 'application/json',
				'Content-type': 'application/json'
			},
			body: JSON.stringify({csrf: $STM_csrf})
		})
		.then(function(data) { return data.json() })
		.then(({icoAddress}) => {
			console.log('icoAddress', icoAddress)
			if (metaData == '{created_at: \'GENESIS\'}') metaData = {created_at: "GENESIS"}
			if (typeof metaData === 'string') metaData = {}
			metaData.ico_address = icoAddress
			metaData = o2j.ifObjectToJSON(metaData);
			this.props.updateMeta({
					json_metadata: metaData,
					account: accountname,
					memo_key: account.memo_key,
					onError: () => this.setState({
						loading: false,
						error: 'server returned error'
					}),
					onSuccess: () => this.setState({
						icoAddress,
						loading: false,
					})
			})
		})
		.catch(error => {
			// TODO dont forget to add error display for user
{'fraction_non_alphanumeric': 0.1257396449704142, 'fraction_numerical': 0.0019723865877712033, 'mean_word_length': 4.135021097046414, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2998132', 'n_tokens_mistral': 2313, 'n_tokens_neox': 2151, 'n_words': 496}