Browse Source

Resolve sqlite path for lib ledger core

master
meriadec 7 years ago
parent
commit
7e861c8797
No known key found for this signature in database GPG Key ID: 1D2FC2305E2CB399
  1. 21
      src/init-ledger-core.js
  2. 4
      src/internals/accounts/helpers.js
  3. 4
      src/internals/accounts/scanAccountsOnDevice.js
  4. 10
      src/main/bridge.js

21
src/init-ledger-core.js

@ -0,0 +1,21 @@
// Yep. That's a singleton.
//
// Electron needs to tell lib ledger core where to store the sqlite files, when
// instanciating wallet pool, but we don't need to do each everytime we
// require ledger-core, only the first time, so, eh.
const core = require('ledger-core')
let instanciated = false
module.exports = () => {
console.log(`INSTANCIATED = ${instanciated}`)
if (!instanciated) {
core.instanciateWalletPool({
// sqlite files will be located in the app local data folder
dbPath: process.env.LEDGER_LIVE_SQLITE_PATH,
})
instanciated = true
}
return core
}

4
src/internals/accounts/helpers.js

@ -31,7 +31,9 @@ export async function getFreshReceiveAddress({
currencyId: string, currencyId: string,
accountIndex: number, accountIndex: number,
}) { }) {
const core = require('ledger-core') // TODO: investigate why importing it on file scope causes trouble
const core = require('init-ledger-core')()
const wallet = await core.getWallet(currencyId) const wallet = await core.getWallet(currencyId)
const account = await wallet.getAccount(accountIndex) const account = await wallet.getAccount(accountIndex)
const addresses = await account.getFreshPublicAddresses() const addresses = await account.getFreshPublicAddresses()

4
src/internals/accounts/scanAccountsOnDevice.js

@ -69,7 +69,7 @@ async function scanNextAccount(props) {
} = props } = props
// TODO: investigate why importing it on file scope causes trouble // TODO: investigate why importing it on file scope causes trouble
const core = require('ledger-core') const core = require('init-ledger-core')()
console.log(`>> Scanning account ${accountIndex}`) console.log(`>> Scanning account ${accountIndex}`)
@ -113,7 +113,7 @@ async function scanNextAccount(props) {
async function getOrCreateWallet(WALLET_IDENTIFIER, currencyId) { async function getOrCreateWallet(WALLET_IDENTIFIER, currencyId) {
// TODO: investigate why importing it on file scope causes trouble // TODO: investigate why importing it on file scope causes trouble
const core = require('ledger-core') const core = require('init-ledger-core')()
try { try {
const wallet = await core.getWallet(WALLET_IDENTIFIER) const wallet = await core.getWallet(WALLET_IDENTIFIER)
return wallet return wallet

10
src/main/bridge.js

@ -2,9 +2,9 @@
import '@babel/polyfill' import '@babel/polyfill'
import { fork } from 'child_process' import { fork } from 'child_process'
import { BrowserWindow, ipcMain } from 'electron' import { BrowserWindow, ipcMain, app } from 'electron'
import objectPath from 'object-path' import objectPath from 'object-path'
import { resolve } from 'path' import path from 'path'
import cpuUsage from 'helpers/cpuUsage' import cpuUsage from 'helpers/cpuUsage'
@ -12,6 +12,9 @@ import setupAutoUpdater, { quitAndInstall } from './autoUpdate'
const { DEV_TOOLS } = process.env const { DEV_TOOLS } = process.env
// sqlite files will be located in the app local data folder
const LEDGER_LIVE_SQLITE_PATH = path.resolve(app.getPath('userData'), 'sqlite')
const processes = [] const processes = []
function cleanProcesses() { function cleanProcesses() {
@ -29,10 +32,11 @@ function onForkChannel(forkType) {
return (event: any, payload) => { return (event: any, payload) => {
const { type, data } = payload const { type, data } = payload
let compute = fork(resolve(__dirname, `${__DEV__ ? '../../' : './'}dist/internals`), { let compute = fork(path.resolve(__dirname, `${__DEV__ ? '../../' : './'}dist/internals`), {
env: { env: {
DEV_TOOLS, DEV_TOOLS,
FORK_TYPE: forkType, FORK_TYPE: forkType,
LEDGER_LIVE_SQLITE_PATH,
}, },
}) })

Loading…
Cancel
Save