createAccountStore.js 1.55 KiB
Newer Older
// Copyright 2015-2018 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
Amaury Martiny's avatar
Amaury Martiny committed
// SPDX-License-Identifier: BSD-3-Clause

import { action, observable } from 'mobx';

import parityStore from './parityStore';

Amaury Martiny's avatar
Amaury Martiny committed
export class CreateAccountStore {
  @observable address = null;
  @observable isImport = false; // Are we creating a new account, or importing via phrase?
  @observable name = ''; // Account name
  @observable phrase = null; // The 12-word seed phrase

Amaury Martiny's avatar
Amaury Martiny committed
  /**
   * Reinitialize everything
   */
  clear () {
    this.setAddress(null);
    this.setName('');
  }

  generateNewAccount = () => {
    return parityStore.api.parity.generateSecretPhrase().then(this.setPhrase);
  saveAccountToParity = password => {
    return parityStore.api.parity
      .newAccountFromPhrase(this.phrase, password)
Amaury Martiny's avatar
Amaury Martiny committed
      .then(() =>
        parityStore.api.parity.setAccountName(this.address, this.name)
      )
      .then(() =>
        parityStore.api.parity.setAccountMeta(this.address, {
          timestamp: Date.now()
Amaury Martiny's avatar
Amaury Martiny committed
        })
      );
  };

  @action
  setAddress = address => {
    this.address = address;
  };

Amaury Martiny's avatar
Amaury Martiny committed
  @action
Amaury Martiny's avatar
Amaury Martiny committed
  setIsImport = isImport => {
    // First set address and phrase back to null
    this.address = null;
    this.phrase = null;

    this.isImport = isImport;
Amaury Martiny's avatar
Amaury Martiny committed
  };

  @action
  setName = name => {
    this.name = name;
  };

  @action
  setPhrase = phrase => {
    this.phrase = phrase;
    return parityStore.api.parity
Amaury Martiny's avatar
Amaury Martiny committed
      .phraseToAddress(phrase)
      .then(address => this.setAddress(address));
  };
}

export default new CreateAccountStore();