Skip to content

Commit

Permalink
Merge pull request #8568 from cmgustavo/bug/wallet-order-01
Browse files Browse the repository at this point in the history
Fix wallets order
  • Loading branch information
gabrielbazan7 authored May 5, 2018
2 parents c7f88f6 + 11a14b4 commit 43d4df8
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 38 deletions.
1 change: 0 additions & 1 deletion src/pages/add/create-wallet/create-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,6 @@ export class CreateWalletPage implements OnInit {
this.events.publish('status:updated');
this.walletProvider.updateRemotePreferences(wallet);
this.pushNotificationsProvider.updateSubscription(wallet);
this.profileProvider.setWalletOrder(wallet.credentials.walletId, null, wallet.coin);

if (this.createForm.value.selectedSeed == 'set') {
this.profileProvider.setBackupFlag(wallet.credentials.walletId);
Expand Down
1 change: 0 additions & 1 deletion src/pages/add/import-wallet/import-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,6 @@ export class ImportWalletPage {
this.walletProvider.updateRemotePreferences(wallet).then(() => {
this.profileProvider.setBackupFlag(wallet.credentials.walletId);
this.events.publish('status:updated');
this.profileProvider.setWalletOrder(wallet.credentials.walletId, null, wallet.coin);
this.pushNotificationsProvider.updateSubscription(wallet);
if (this.fromOnboarding) {
this.profileProvider.setOnboardingCompleted().then(() => {
Expand Down
1 change: 0 additions & 1 deletion src/pages/add/join-wallet/join-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ export class JoinWalletPage {
this.onGoingProcessProvider.clear();
this.events.publish('status:updated');
this.walletProvider.updateRemotePreferences(wallet);
this.profileProvider.setWalletOrder(wallet.credentials.walletId, null, wallet.coin);
this.pushNotificationsProvider.updateSubscription(wallet);
if (!wallet.isComplete()) {
this.navCtrl.popToRoot();
Expand Down
4 changes: 2 additions & 2 deletions src/pages/home/home.ts
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ export class HomePage {
this.walletsBtc.splice(indexes.from, 1);
this.walletsBtc.splice(indexes.to, 0, element);
_.each(this.walletsBtc, (wallet: any, index: number) => {
this.profileProvider.setWalletOrder(wallet.id, index, 'btc');
this.profileProvider.setWalletOrder(wallet.id, index);
});
}

Expand All @@ -556,7 +556,7 @@ export class HomePage {
this.walletsBch.splice(indexes.from, 1);
this.walletsBch.splice(indexes.to, 0, element);
_.each(this.walletsBch, (wallet: any, index: number) => {
this.profileProvider.setWalletOrder(wallet.id, index, 'bch');
this.profileProvider.setWalletOrder(wallet.id, index);
});
}

Expand Down
2 changes: 1 addition & 1 deletion src/pages/onboarding/onboarding.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
{{'Restore from backup' | translate}}
</button>
</div>
</ion-content>
</ion-content>
1 change: 0 additions & 1 deletion src/pages/onboarding/tour/tour.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ export class TourPage {
this.profileProvider.createDefaultWallet().then((wallet) => {
this.onGoingProcessProvider.clear();
this.persistenceProvider.setOnboardingCompleted();
this.profileProvider.setWalletOrder(wallet.credentials.walletId, null, wallet.coin);
this.navCtrl.push(CollectEmailPage, { walletId: wallet.id });
})
}
Expand Down
1 change: 0 additions & 1 deletion src/pages/settings/bitcoin-cash/bitcoin-cash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@ export class BitcoinCashPage {

this.walletProvider.updateRemotePreferences(newWallet);
this.pushNotificationsProvider.updateSubscription(newWallet);
this.profileProvider.setWalletOrder(newWallet.credentials.walletId, null, newWallet.coin);

addCopayers(newWallet, isNew, (err) => {
this.onGoingProcessProvider.clear();
Expand Down
32 changes: 32 additions & 0 deletions src/providers/persistence/persistence.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,5 +145,37 @@ describe('Persistence Provider', () => {
})
.then(done);
});

it('should set and get wallet order', done => {
const walletId:string = '647b39d8-a88c-42d5-8728-0ba898dcdd90';
const order:number = 1;
persistenceProvider
.setWalletOrder(walletId, order)
.catch(err => expect(err).toBeNull)
.then(() => {
return persistenceProvider.getWalletOrder(walletId);
})
.then(order => {
expect(typeof order).toEqual('number');
})
.then(done);
});

it('should remove wallet order', done => {
const walletId:string = '647b39d8-a88c-42d5-8728-0ba898dcdd90';
const order:number = 1;
persistenceProvider
.setWalletOrder(walletId, order)
.catch(err => expect(err).toBeNull)
.then(() => {
persistenceProvider.removeWalletOrder(walletId).then(() => {
return persistenceProvider.getWalletOrder(walletId);
});
})
.then(order => {
expect(typeof order).toEqual('undefined');
})
.then(done);
});
});
});
14 changes: 10 additions & 4 deletions src/providers/persistence/persistence.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const Keys = {
REMOTE_PREF_STORED: 'remotePrefStored',
TX_CONFIRM_NOTIF: txid => 'txConfirmNotif-' + txid,
TX_HISTORY: walletId => 'txsHistory-' + walletId,
ORDER_WALLET: walletId => 'order-' + walletId
};

interface Storage {
Expand Down Expand Up @@ -346,7 +347,8 @@ export class PersistenceProvider {
removeAllWalletData(walletId: string): Promise<void> {
return this.clearLastAddress(walletId)
.then(() => this.removeTxHistory(walletId))
.then(() => this.clearBackupFlag(walletId));
.then(() => this.clearBackupFlag(walletId))
.then(() => this.removeWalletOrder(walletId));
};

setAmazonGiftCards(network: string, gcs: any): Promise<void> {
Expand Down Expand Up @@ -503,12 +505,16 @@ export class PersistenceProvider {
return this.storage.remove('shapeShift-' + network);
};

setWalletOrder(walletId: string, index: number): Promise<void> {
return this.storage.set('order-' + walletId, index);
setWalletOrder(walletId: string, order: number): Promise<void> {
return this.storage.set(Keys.ORDER_WALLET(walletId), order);
};

getWalletOrder(walletId: string): Promise<void> {
return this.storage.get('order-' + walletId);
return this.storage.get(Keys.ORDER_WALLET(walletId));
};

removeWalletOrder(walletId: string): Promise<void> {
return this.storage.remove(Keys.ORDER_WALLET(walletId));
};

setLockStatus(isLocked: string): Promise<void> {
Expand Down
5 changes: 1 addition & 4 deletions src/providers/persistence/storage/file-storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,7 @@ export class FileStorage implements IStorage {
};

if (_.isObject(v)) v = JSON.stringify(v);

if (v && !_.isString(v)) {
v = v.toString();
}
if (!_.isString(v)) v = v.toString();
fileWriter.write(v);
});
});
Expand Down
8 changes: 2 additions & 6 deletions src/providers/persistence/storage/local-storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,8 @@ export class LocalStorage implements IStorage {

set(k: string, v: any): Promise<void> {
return new Promise<void>(resolve => {
if (_.isObject(v)) {
v = JSON.stringify(v);
}
if (v && !_.isString(v)) {
v = v.toString();
}
if (_.isObject(v)) v = JSON.stringify(v);
if (!_.isString(v)) v = v.toString();

if (this.platformProvider.isNW) {
let obj = {};
Expand Down
32 changes: 29 additions & 3 deletions src/providers/profile/profile.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ describe('Profile Provider', () => {
},
isComplete: () => {
return true;
}
},
order: ''
},
api2: {
id: 'zxccv25b-d6ab-4b11-8b76-88570d822222',
Expand All @@ -65,7 +66,8 @@ describe('Profile Provider', () => {
},
isComplete: () => {
return true;
}
},
order: 2
},
api3: {
id: 'qwert25b-d6ab-4b11-8b76-88570d833333',
Expand All @@ -82,7 +84,8 @@ describe('Profile Provider', () => {
},
isComplete: () => {
return true;
}
},
order: 3
}
};

Expand All @@ -98,6 +101,12 @@ describe('Profile Provider', () => {
getBalanceCache(walletId: any) {
return Promise.resolve('0.00 BTC');
}
setWalletOrder(walletId: string, order: number) {
return Promise.resolve();
}
getWalletOrder(walletId: string) {
return Promise.resolve(1);
}
}

beforeEach(() => {
Expand Down Expand Up @@ -166,4 +175,21 @@ describe('Profile Provider', () => {
expect(wallets).toEqual([]);
});
});

describe('wallet order', () => {
it('should get null order', () => {
const walletId:string = 'eabee25b-d6ab-4b11-8b76-88570d826914';
profileProvider.getWalletOrder(walletId).then((order) => {
expect(order).toBe('');
});
});
it('should set the order', () => {
const walletId:string = 'eabee25b-d6ab-4b11-8b76-88570d826914';
const order:number = 2;
profileProvider.setWalletOrder(walletId, order);
expect(profileProvider.wallet.api1.order).toBeDefined();
profileProvider.wallet.api1.order = order;
expect(profileProvider.wallet.api1.order).toBe(2);
});
});
});
22 changes: 9 additions & 13 deletions src/providers/profile/profile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,19 @@ export class ProfileProvider {
// });
}

public setWalletOrder(walletId: string, index?: number, coin?: string): void {
if (index === null) {
let wallets = this.getWallets({ coin });
let maxIndex = _.maxBy(wallets, 'order') ? _.maxBy(wallets, 'order').order : null;
index = maxIndex != null ? maxIndex + 1 : 0;
}
this.persistenceProvider.setWalletOrder(walletId, index);
this.logger.debug('Wallet new order stored ' + this.wallet[walletId].name + ': ' + index);
this.wallet[walletId].order = index;
public setWalletOrder(walletId: string, index: number): void {
this.persistenceProvider.setWalletOrder(walletId, index).then( () => {
this.logger.debug('Wallet new order stored ' + this.wallet[walletId].name + ': ' + index);
});
if (this.wallet[walletId] && this.wallet[walletId].order) this.wallet[walletId].order = index;
}

private getWalletOrder(wallet): Promise<any> {
return new Promise((resolve, reject) => {
this.persistenceProvider.getWalletOrder(wallet.credentials.walletId).then((order) => {
public getWalletOrder(wallet): Promise<any> {
return new Promise(resolve => {
this.persistenceProvider.getWalletOrder(wallet.credentials.walletId).then((order:any) => {
return resolve(order);
});
})
});
}

public setBackupFlag(walletId: string): void {
Expand Down

0 comments on commit 43d4df8

Please sign in to comment.