move logic to model
This commit is contained in:
parent
81a478d797
commit
ff25fc818a
|
@ -13,93 +13,6 @@ import uuids
|
|||
import eventemitter
|
||||
import view
|
||||
|
||||
proc storeAccountAndLogin(model: AccountModel, selectedAccountIndex: int, password: string): string =
|
||||
# let account = to(json.parseJson(selectedAccount), Models.GeneratedAccount)
|
||||
echo "account index selected is "
|
||||
echo selectedAccountIndex
|
||||
|
||||
let account: GeneratedAccount = model.generatedAddresses[selectedAccountIndex]
|
||||
echo "account selected is "
|
||||
echo account
|
||||
let password = "0x" & $keccak_256.digest(password)
|
||||
let multiAccount = %* {
|
||||
"accountID": account.id,
|
||||
"paths": [constants.PATH_WALLET_ROOT, constants.PATH_EIP_1581, constants.PATH_WHISPER,
|
||||
constants.PATH_DEFAULT_WALLET],
|
||||
"password": password
|
||||
}
|
||||
let storeResult = $libstatus.multiAccountStoreDerivedAccounts($multiAccount);
|
||||
let multiAccounts = storeResult.parseJson
|
||||
let whisperPubKey = account.derived[constants.PATH_WHISPER]["publicKey"].getStr
|
||||
let alias = $libstatus.generateAlias(whisperPubKey.toGoString)
|
||||
let identicon = $libstatus.identicon(whisperPubKey.toGoString)
|
||||
let accountData = %* {
|
||||
"name": alias,
|
||||
"address": account.address,
|
||||
"photo-path": identicon,
|
||||
"key-uid": account.keyUid,
|
||||
"keycard-pairing": nil
|
||||
}
|
||||
var nodeConfig = constants.NODE_CONFIG
|
||||
let defaultNetworks = constants.DEFAULT_NETWORKS
|
||||
let settingsJSON = %* {
|
||||
"key-uid": account.keyUid,
|
||||
"mnemonic": account.mnemonic,
|
||||
"public-key": multiAccounts[constants.PATH_WHISPER]["publicKey"].getStr,
|
||||
"name": alias,
|
||||
"address": account.address,
|
||||
"eip1581-address": multiAccounts[constants.PATH_EIP_1581]["address"].getStr,
|
||||
"dapps-address": multiAccounts[constants.PATH_DEFAULT_WALLET]["address"].getStr,
|
||||
"wallet-root-address": multiAccounts[constants.PATH_WALLET_ROOT]["address"].getStr,
|
||||
"preview-privacy?": true,
|
||||
"signing-phrase": generateSigningPhrase(3),
|
||||
"log-level": "INFO",
|
||||
"latest-derived-path": 0,
|
||||
"networks/networks": $defaultNetworks,
|
||||
"currency": "usd",
|
||||
"photo-path": identicon,
|
||||
"waku-enabled": true,
|
||||
"wallet/visible-tokens": {
|
||||
"mainnet": ["SNT"]
|
||||
},
|
||||
"appearance": 0,
|
||||
"networks/current-network": "mainnet_rpc",
|
||||
"installation-id": $genUUID()
|
||||
}
|
||||
|
||||
let subaccountData = %* [
|
||||
{
|
||||
"public-key": multiAccounts[constants.PATH_DEFAULT_WALLET]["publicKey"],
|
||||
"address": multiAccounts[constants.PATH_DEFAULT_WALLET]["address"],
|
||||
"color": "#4360df",
|
||||
"wallet": true,
|
||||
"path": constants.PATH_DEFAULT_WALLET,
|
||||
"name": "Status account"
|
||||
},
|
||||
{
|
||||
"public-key": multiAccounts[constants.PATH_WHISPER]["publicKey"],
|
||||
"address": multiAccounts[constants.PATH_WHISPER]["address"],
|
||||
"name": alias,
|
||||
"photo-path": identicon,
|
||||
"path": constants.PATH_WHISPER,
|
||||
"chat": true
|
||||
}
|
||||
]
|
||||
|
||||
result = $libstatus.saveAccountAndLogin($accountData, password, $settingsJSON,
|
||||
$nodeConfig, $subaccountData)
|
||||
|
||||
let saveResult = result.parseJson
|
||||
|
||||
if saveResult["error"].getStr == "":
|
||||
model.events.emit("node:ready", Args())
|
||||
echo "Account saved succesfully"
|
||||
|
||||
# TODO: this is temporary and will be removed once accounts import and creation is working
|
||||
proc generateRandomAccountAndLogin*(events: EventEmitter) =
|
||||
discard status_test.setupNewAccount()
|
||||
events.emit("node:ready", Args())
|
||||
|
||||
type OnboardingController* = ref object of SignalSubscriber
|
||||
view*: OnboardingView
|
||||
variant*: QVariant
|
||||
|
@ -109,7 +22,8 @@ proc newController*(events: EventEmitter): OnboardingController =
|
|||
result = OnboardingController()
|
||||
# TODO: events should be specific to the model itself
|
||||
result.model = newAccountModel(events)
|
||||
result.view = newOnboardingView(result.model, storeAccountAndLogin, generateRandomAccountAndLogin)
|
||||
# result.view = newOnboardingView(result.model, storeAccountAndLogin, generateRandomAccountAndLogin)
|
||||
result.view = newOnboardingView(result.model)
|
||||
result.variant = newQVariant(result.view)
|
||||
|
||||
proc delete*(self: OnboardingController) =
|
||||
|
|
|
@ -26,8 +26,8 @@ QtObject:
|
|||
addresses*: seq[Address]
|
||||
model: AccountModel
|
||||
# m_generatedAddresses: string
|
||||
doStoreAccountAndLogin: proc(model: AccountModel, selectedAccount: int, password: string): string
|
||||
doGenerateRandomAccountAndLogin: proc(events: EventEmitter)
|
||||
# doStoreAccountAndLogin: proc(model: AccountModel, selectedAccount: int, password: string): string
|
||||
# doGenerateRandomAccountAndLogin: proc(events: EventEmitter)
|
||||
|
||||
proc setup(self: OnboardingView) =
|
||||
self.QAbstractListModel.setup
|
||||
|
@ -38,11 +38,12 @@ QtObject:
|
|||
address.delete
|
||||
self.addresses = @[]
|
||||
|
||||
proc newOnboardingView*(model: AccountModel, doStoreAccountAndLogin: proc, doGenerateRandomAccountAndLogin: proc(events: EventEmitter)): OnboardingView =
|
||||
# proc newOnboardingView*(model: AccountModel, doStoreAccountAndLogin: proc, doGenerateRandomAccountAndLogin: proc(events: EventEmitter)): OnboardingView =
|
||||
proc newOnboardingView*(model: AccountModel): OnboardingView =
|
||||
new(result, delete)
|
||||
result.model = model
|
||||
result.doStoreAccountAndLogin = doStoreAccountAndLogin
|
||||
result.doGenerateRandomAccountAndLogin = doGenerateRandomAccountAndLogin
|
||||
# result.doStoreAccountAndLogin = doStoreAccountAndLogin
|
||||
# result.doGenerateRandomAccountAndLogin = doGenerateRandomAccountAndLogin
|
||||
result.addresses = @[]
|
||||
result.setup
|
||||
|
||||
|
@ -109,8 +110,8 @@ QtObject:
|
|||
echo "--------------------"
|
||||
echo "--------------------"
|
||||
# var selectedAccountIndex = self.addresses
|
||||
result = self.doStoreAccountAndLogin(self.model, selectedAccountIndex, password)
|
||||
result = self.model.storeAccountAndLogin(selectedAccountIndex, password)
|
||||
|
||||
# TODO: this is temporary and will be removed once accounts import and creation is working
|
||||
proc generateRandomAccountAndLogin*(self: OnboardingView) {.slot.} =
|
||||
self.doGenerateRandomAccountAndLogin(self.model.events)
|
||||
self.model.generateRandomAccountAndLogin()
|
||||
|
|
|
@ -2,8 +2,16 @@ import json
|
|||
import eventemitter
|
||||
import ../status/libstatus
|
||||
import ../status/accounts as status_accounts
|
||||
import ../status/test as status_test
|
||||
import ../constants/constants
|
||||
import ../status/utils
|
||||
import nimcrypto
|
||||
import ../status/utils
|
||||
import ../status/libstatus
|
||||
import ../constants/constants
|
||||
# import "../../status/core" as status
|
||||
import ../app/signals/types
|
||||
import uuids
|
||||
|
||||
type
|
||||
GeneratedAccount* = object
|
||||
|
@ -59,3 +67,90 @@ proc generateAddresses*(self: AccountModel): seq[GeneratedAccount] =
|
|||
self.generatedAddresses.add(generatedAccount)
|
||||
|
||||
self.generatedAddresses
|
||||
|
||||
# TODO: this is temporary and will be removed once accounts import and creation is working
|
||||
proc generateRandomAccountAndLogin*(self: AccountModel) =
|
||||
discard status_test.setupNewAccount()
|
||||
self.events.emit("node:ready", Args())
|
||||
|
||||
proc storeAccountAndLogin*(self: AccountModel, selectedAccountIndex: int, password: string): string =
|
||||
# let account = to(json.parseJson(selectedAccount), Models.GeneratedAccount)
|
||||
echo "account index selected is "
|
||||
echo selectedAccountIndex
|
||||
|
||||
let account: GeneratedAccount = self.generatedAddresses[selectedAccountIndex]
|
||||
echo "account selected is "
|
||||
echo account
|
||||
let password = "0x" & $keccak_256.digest(password)
|
||||
let multiAccount = %* {
|
||||
"accountID": account.id,
|
||||
"paths": [constants.PATH_WALLET_ROOT, constants.PATH_EIP_1581, constants.PATH_WHISPER,
|
||||
constants.PATH_DEFAULT_WALLET],
|
||||
"password": password
|
||||
}
|
||||
let storeResult = $libstatus.multiAccountStoreDerivedAccounts($multiAccount);
|
||||
let multiAccounts = storeResult.parseJson
|
||||
let whisperPubKey = account.derived[constants.PATH_WHISPER]["publicKey"].getStr
|
||||
let alias = $libstatus.generateAlias(whisperPubKey.toGoString)
|
||||
let identicon = $libstatus.identicon(whisperPubKey.toGoString)
|
||||
let accountData = %* {
|
||||
"name": alias,
|
||||
"address": account.address,
|
||||
"photo-path": identicon,
|
||||
"key-uid": account.keyUid,
|
||||
"keycard-pairing": nil
|
||||
}
|
||||
var nodeConfig = constants.NODE_CONFIG
|
||||
let defaultNetworks = constants.DEFAULT_NETWORKS
|
||||
let settingsJSON = %* {
|
||||
"key-uid": account.keyUid,
|
||||
"mnemonic": account.mnemonic,
|
||||
"public-key": multiAccounts[constants.PATH_WHISPER]["publicKey"].getStr,
|
||||
"name": alias,
|
||||
"address": account.address,
|
||||
"eip1581-address": multiAccounts[constants.PATH_EIP_1581]["address"].getStr,
|
||||
"dapps-address": multiAccounts[constants.PATH_DEFAULT_WALLET]["address"].getStr,
|
||||
"wallet-root-address": multiAccounts[constants.PATH_WALLET_ROOT]["address"].getStr,
|
||||
"preview-privacy?": true,
|
||||
"signing-phrase": generateSigningPhrase(3),
|
||||
"log-level": "INFO",
|
||||
"latest-derived-path": 0,
|
||||
"networks/networks": $defaultNetworks,
|
||||
"currency": "usd",
|
||||
"photo-path": identicon,
|
||||
"waku-enabled": true,
|
||||
"wallet/visible-tokens": {
|
||||
"mainnet": ["SNT"]
|
||||
},
|
||||
"appearance": 0,
|
||||
"networks/current-network": "mainnet_rpc",
|
||||
"installation-id": $genUUID()
|
||||
}
|
||||
|
||||
let subaccountData = %* [
|
||||
{
|
||||
"public-key": multiAccounts[constants.PATH_DEFAULT_WALLET]["publicKey"],
|
||||
"address": multiAccounts[constants.PATH_DEFAULT_WALLET]["address"],
|
||||
"color": "#4360df",
|
||||
"wallet": true,
|
||||
"path": constants.PATH_DEFAULT_WALLET,
|
||||
"name": "Status account"
|
||||
},
|
||||
{
|
||||
"public-key": multiAccounts[constants.PATH_WHISPER]["publicKey"],
|
||||
"address": multiAccounts[constants.PATH_WHISPER]["address"],
|
||||
"name": alias,
|
||||
"photo-path": identicon,
|
||||
"path": constants.PATH_WHISPER,
|
||||
"chat": true
|
||||
}
|
||||
]
|
||||
|
||||
result = $libstatus.saveAccountAndLogin($accountData, password, $settingsJSON,
|
||||
$nodeConfig, $subaccountData)
|
||||
|
||||
let saveResult = result.parseJson
|
||||
|
||||
if saveResult["error"].getStr == "":
|
||||
self.events.emit("node:ready", Args())
|
||||
echo "Account saved succesfully"
|
||||
|
|
Loading…
Reference in New Issue