Skip to content
This repository was archived by the owner on Jan 12, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
78e555b
fix: store blockHash and remove unknown incrementer
Feb 7, 2021
bf8f8f2
feat: added blockHash in store
Feb 7, 2021
359a6a9
feat: provide height on execStatusFetch
Feb 7, 2021
57db15f
feat: provide height in execBlockListener
Feb 7, 2021
1357765
feat: setLastSyncedBlockHeight to provide hash in accountStore
Feb 7, 2021
e078bb7
feat: update hash as we update height in local account store
Feb 7, 2021
fd02c49
test: update test with added blockHash
Feb 7, 2021
fc8ee66
chore: remove unused imported variable
Feb 7, 2021
83201a1
fix: setting hash to setLastSyncedBlockHash
Feb 8, 2021
17b3fc5
typo: fix linting
Feb 8, 2021
4e63aaf
fix: use abstract method instead of DAPIClient specific
Feb 8, 2021
2a81ea0
revert: remove blockhash set on skipSyncBeforeHeight
Feb 8, 2021
bc0a4b3
doc: update JSDoc
Feb 8, 2021
d10df34
feat: remove ChainPlugin and unnecessary methods linked to chain
Feb 17, 2021
7880d44
fix: tests
Feb 18, 2021
91de57f
fix: rehydrate state on async setItem
Feb 8, 2021
dfdc4e5
feat: ensure setting account hash/height triggers saveState
Feb 8, 2021
d4d3ca4
feat: ensure saveState triggered on new block header imported
Feb 8, 2021
b1c7c31
typo: remove unused util import
Feb 8, 2021
5af9557
feat: added adapter abstraction
Feb 16, 2021
1cb7523
feat: AbstractAdapter param
Feb 17, 2021
1bcf2a7
tests: adjust test with change
Feb 18, 2021
0b37bb6
feat: modify storage worker logic
Feb 18, 2021
0e6a64e
fix: eslint
Feb 18, 2021
83e2dd1
fix: rebase issue
Feb 18, 2021
f464550
Merge branch 'v0.22-dev' into feat/persistance-storage
Oct 26, 2021
d0e0cf7
chore: merge with 0.22.0-dev
Oct 26, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@
- [`.announce()`](storage/announce.md)
- [`.calculateDuffBalance()`](storage/calculateDuffBalance.md)
- [`.clearAll()`](storage/clearAll.md)
- [`.configure()`](storage/configure.md)
- [`.createChain()`](storage/createChain.md)
- [`.createWallet()`](storage/createWallet.md)
- [`.getStore()`](storage/getStore.md)
Expand Down
16 changes: 0 additions & 16 deletions docs/storage/configure.md

This file was deleted.

3 changes: 2 additions & 1 deletion fixtures/walletStore.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"m/44'/1'/0'": {
"label": null,
"path": "m/44'/1'/0'",
"network": "testnet"
"network": "testnet",
"blockHeight": 0
}
},
"network":"testnet",
Expand Down
1 change: 0 additions & 1 deletion src/CONSTANTS.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ const CONSTANTS = {
'getTotalBalance',
'broadcastTransaction',
'importTransactions',
'importBlockHeader',
'getAddress',
'fetchStatus',
'getPlugin',
Expand Down
15 changes: 15 additions & 0 deletions src/adapters/AbstractAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* @abstract
*/
class AbstractAdapter {
constructor(adapter) {
this.isConfig = false;
this.adapter = adapter;
}

config() {
this.isConfig = true;
}
}

module.exports = AbstractAdapter;
7 changes: 7 additions & 0 deletions src/adapters/Adapter.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export declare interface Adapter {
config()

setItem(key, item): Promise<any>

getItem(key): Promise<any>
}
20 changes: 0 additions & 20 deletions src/adapters/InMem.js

This file was deleted.

18 changes: 18 additions & 0 deletions src/adapters/InMemoryAdapter/InMemoryAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const logger = require('../../logger');
const AbstractAdapter = require('../AbstractAdapter');

/**
* @implements {Adapter}
*/
class InMemoryAdapter extends AbstractAdapter {
constructor() {
super();
logger.warn('Using InMemoryAdapter. Data will not persist.');
this.keys = {};
}
}

InMemoryAdapter.prototype.setItem = require('./methods/setItem');
InMemoryAdapter.prototype.getItem = require('./methods/getItem');

module.exports = InMemoryAdapter;
20 changes: 20 additions & 0 deletions src/adapters/InMemoryAdapter/InMemoryAdapter.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const { expect } = require('chai');
const InMemoryAdapter = require('./InMemoryAdapter');

const inMemoryAdapter = new InMemoryAdapter();

describe('Adapter - InMemoryAdapter', function suite() {
this.timeout(10000);
it('should provide a config method', () => {
expect(inMemoryAdapter.config).to.exist;
});
it('should set an item', () => {
const item = { item: 'item' };
inMemoryAdapter.setItem('foo', item);
expect(inMemoryAdapter.setItem('foo', item)).to.deep.equal(item);
});
it('should get an item', () => {
const item = { item: 'item' };
expect(inMemoryAdapter.getItem('foo')).to.deep.equal(item);
});
});
3 changes: 3 additions & 0 deletions src/adapters/InMemoryAdapter/methods/getItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = function getItem(key) {
return this.keys[key] || null;
};
4 changes: 4 additions & 0 deletions src/adapters/InMemoryAdapter/methods/setItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = function setItem(key, item) {
this.keys[key] = item;
return item;
};
16 changes: 16 additions & 0 deletions src/adapters/LocalForageAdapter/LocalForageAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const AbstractAdapter = require('../AbstractAdapter');

/**
* @implements {Adapter}
*/
class LocalForageAdapter extends AbstractAdapter {
constructor(adapter) {
super();
this.adapter = adapter;
}
}

LocalForageAdapter.prototype.setItem = require('./methods/setItem');
LocalForageAdapter.prototype.getItem = require('./methods/getItem');

module.exports = LocalForageAdapter;
3 changes: 3 additions & 0 deletions src/adapters/LocalForageAdapter/methods/getItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = async function getItem(key) {
return this.adapter.getItem(key);
};
3 changes: 3 additions & 0 deletions src/adapters/LocalForageAdapter/methods/setItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = async function setItem(key, value) {
return this.adapter.setItem(key, value);
};
16 changes: 16 additions & 0 deletions src/adapters/NodeForageAdapter/NodeForageAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const AbstractAdapter = require('../AbstractAdapter');

/**
* @implements {Adapter}
*/
class NodeForageAdapter extends AbstractAdapter {
constructor(adapter) {
super();
this.adapter = adapter;
}
}

NodeForageAdapter.prototype.setItem = require('./methods/setItem');
NodeForageAdapter.prototype.getItem = require('./methods/getItem');

module.exports = NodeForageAdapter;
3 changes: 3 additions & 0 deletions src/adapters/NodeForageAdapter/methods/getItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = async function getItem(key) {
return this.adapter.getItem(key);
};
3 changes: 3 additions & 0 deletions src/adapters/NodeForageAdapter/methods/setItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = async function setItem(key, value) {
return this.adapter.setItem(key, value);
};
28 changes: 28 additions & 0 deletions src/adapters/createAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const InMemoryAdapter = require('./InMemoryAdapter/InMemoryAdapter');
const LocalForageAdapter = require('./LocalForageAdapter/LocalForageAdapter');
const NodeForageAdapter = require('./NodeForageAdapter/NodeForageAdapter');

const SUPPORTED_ADAPTERS = {
LocalForage: 'LocalForage',
NodeForage: 'NodeForage',
};
/**
*
* @param {{adapter, name}} options
* @returns {Adapter}
*/
function createAdapter(options) {
if (options && options.name && options.adapter) {
switch (options.name) {
case SUPPORTED_ADAPTERS.NodeForage:
return new NodeForageAdapter(options.adapter);
case SUPPORTED_ADAPTERS.LocalForage:
return new LocalForageAdapter(options.adapter);
default:
return new InMemoryAdapter();
}
}
return new InMemoryAdapter();
}

module.exports = createAdapter;
19 changes: 0 additions & 19 deletions src/adapters/inMem.spec.js

This file was deleted.

Empty file added src/plugins/Plugins/.gitkeep
Empty file.
96 changes: 0 additions & 96 deletions src/plugins/Plugins/ChainPlugin.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class TransactionSyncStreamWorker extends Worker {
gapLimit: 10,
dependencies: [
'importTransactions',
'importBlockHeader',
'importInstantLock',
'storage',
'transport',
Expand Down Expand Up @@ -264,7 +263,9 @@ class TransactionSyncStreamWorker extends Worker {

TransactionSyncStreamWorker.prototype.getAddressesToSync = require('./methods/getAddressesToSync');
TransactionSyncStreamWorker.prototype.getBestBlockHeightFromTransport = require('./methods/getBestBlockHeight');
TransactionSyncStreamWorker.prototype.setLastSyncedBlockHash = require('./methods/setLastSyncedBlockHash');
TransactionSyncStreamWorker.prototype.setLastSyncedBlockHeight = require('./methods/setLastSyncedBlockHeight');
TransactionSyncStreamWorker.prototype.getLastSyncedBlockHash = require('./methods/getLastSyncedBlockHash');
TransactionSyncStreamWorker.prototype.getLastSyncedBlockHeight = require('./methods/getLastSyncedBlockHeight');
TransactionSyncStreamWorker.prototype.startHistoricalSync = require('./methods/startHistoricalSync');
TransactionSyncStreamWorker.prototype.handleTransactionFromStream = require('./methods/handleTransactionFromStream');
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const { WALLET_TYPES } = require('../../../../CONSTANTS');
/**
* Return last synced block height
* @return {number}
*/
module.exports = function getLastSyncedBlockHeight() {
const { walletId } = this;
const accountsStore = this.storage.store.wallets[walletId].accounts;

const { blockHash } = (this.walletType === WALLET_TYPES.SINGLE_ADDRESS)
? accountsStore[this.index.toString()]
: accountsStore[this.BIP44PATH.toString()];

return blockHash;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const { WALLET_TYPES } = require('../../../../CONSTANTS');

/**
* Set last synced block hash
*
* @param {string} hash
* @return {string}
*/
module.exports = function setLastSyncedBlockHash(hash) {
const { walletId } = this;
const accountsStore = this.storage.store.wallets[walletId].accounts;

const accountStore = (this.walletType === WALLET_TYPES.SINGLE_ADDRESS)
? accountsStore[this.index.toString()]
: accountsStore[this.BIP44PATH.toString()];

accountStore.blockHash = hash;

this.storage.store.lastModified = +new Date();
return accountStore.blockHash;
};
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ module.exports = function setLastSyncedBlockHeight(blockHeight) {

accountStore.blockHeight = blockHeight;

this.storage.store.lastModified = +new Date();
return accountStore.blockHeight;
};
Loading