Skip to content
This repository was archived by the owner on Jul 6, 2022. It is now read-only.

Commit bc13241

Browse files
committed
fix: 🐛 typo fixes and getAllInvestorFlags rework
1 parent 60ec452 commit bc13241

File tree

6 files changed

+56
-78
lines changed

6 files changed

+56
-78
lines changed

examples/countTransferManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ window.addEventListener('load', async () => {
9999
address: modules[index],
100100
maxCost: setupCost,
101101
budget: setupCost,
102-
archived: false,
102+
archived: false,
103103
data: {
104104
maxHolderCount: 3,
105105
},

examples/erc20Dividend.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ window.addEventListener('load', async () => {
104104
address: modules[index],
105105
maxCost: setupCost,
106106
budget: setupCost,
107-
archived: false,
107+
archived: false,
108108
data: {
109109
wallet: '0x3333333333333333333333333333333333333333',
110110
},
@@ -129,7 +129,7 @@ window.addEventListener('load', async () => {
129129
value: new BigNumber(4),
130130
});
131131

132-
//Create Dividends
132+
// Create Dividends
133133
await erc20DividendCheckpoint.createDividendWithExclusions({
134134
name: 'MyDividend2',
135135
amount: new BigNumber(1),

examples/generalTransferManager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { BigNumber } from '@0x/utils';
22
import { RedundantSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders';
33
import { Web3Wrapper } from '@0x/web3-wrapper';
4+
import { GeneralTransferManagerEvents } from '@polymathnetwork/abi-wrappers/lib/src';
45
import { ApiConstructorParams, PolymathAPI } from '../src/PolymathAPI';
56
import { valueToWei, weiToValue } from '../src/utils/convert';
67
import { ModuleName } from '../src';
7-
import { GeneralTransferManagerEvents } from '@polymathnetwork/abi-wrappers/lib/src';
88

99
// This file acts as a valid sandbox for using a general transfer manager module on an unlocked node (like ganache)
1010

@@ -76,8 +76,8 @@ window.addEventListener('load', async () => {
7676
address: generalTMAddress,
7777
});
7878

79-
// Allow all transfers
80-
// Subscribe to event of allow all transfers
79+
// Modify transfer requirements
80+
// Subscribe to event of modify transfer requirements
8181
await generalTM.subscribeAsync({
8282
eventName: GeneralTransferManagerEvents.ModifyTransferRequirements,
8383
indexFilterValues: {},

examples/usdTieredSTO.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { BigNumber } from '@0x/utils';
22
import { RedundantSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders';
3+
import { USDTieredSTOEvents } from '@polymathnetwork/abi-wrappers/lib/src';
34
import { ApiConstructorParams, PolymathAPI } from '../src/PolymathAPI';
45
import { bytes32ToString } from '../src/utils/convert';
56
import { FundRaiseType, ModuleName, ModuleType } from '../src';
6-
import { USDTieredSTOEvents } from '@polymathnetwork/abi-wrappers/lib/src';
77
import ModuleFactoryWrapper from '../src/contract_wrappers/modules/module_factory_wrapper';
88

99
// This file acts as a valid sandbox.ts file in root directory for adding a usdtieredSTO module on an unlocked node (like ganache)
@@ -101,7 +101,7 @@ window.addEventListener('load', async () => {
101101
address: modules[index],
102102
maxCost: setupCost,
103103
budget: setupCost,
104-
archived: false,
104+
archived: false,
105105
data: {
106106
startTime: new Date(2030, 1),
107107
endTime: new Date(2031, 1),

src/contract_wrappers/modules/checkpoint/__tests__/erc20_dividend_checkpoint_wrapper.test.ts

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ describe('ERC20DividendCheckpointWrapper', () => {
2121
let mockedContract: ERC20DividendCheckpointContract;
2222
let mockedContractFactory: ContractFactory;
2323
let mockedSecurityTokenContract: ISecurityTokenContract;
24-
let mockedDetailedERC20Contract: ERC20DetailedContract;
24+
let mockedERC20DetailedContract: ERC20DetailedContract;
2525

2626
beforeAll(() => {
2727
mockedWrapper = mock(Web3Wrapper);
2828
mockedContract = mock(ERC20DividendCheckpointContract);
2929
mockedContractFactory = mock(ContractFactory);
3030
mockedSecurityTokenContract = mock(ISecurityTokenContract);
31-
mockedDetailedERC20Contract = mock(ERC20DetailedContract);
31+
mockedERC20DetailedContract = mock(ERC20DetailedContract);
3232

3333
const myContractPromise = Promise.resolve(instance(mockedContract));
3434
target = new ERC20DividendCheckpointWrapper(
@@ -43,7 +43,7 @@ describe('ERC20DividendCheckpointWrapper', () => {
4343
reset(mockedContract);
4444
reset(mockedContractFactory);
4545
reset(mockedSecurityTokenContract);
46-
reset(mockedDetailedERC20Contract);
46+
reset(mockedERC20DetailedContract);
4747
});
4848

4949
describe('Types', () => {
@@ -99,15 +99,15 @@ describe('ERC20DividendCheckpointWrapper', () => {
9999

100100
const expectedBalanceOfResult = new BigNumber(100);
101101
const mockedBalanceOfAddressMethod = mock(MockedCallMethod);
102-
when(mockedDetailedERC20Contract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
102+
when(mockedERC20DetailedContract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
103103
when(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).thenResolve(expectedBalanceOfResult);
104-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
104+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
105105

106106
const expectedDecimalsResult = new BigNumber(18);
107107
const mockedDecimalsMethod = mock(MockedCallMethod);
108-
when(mockedDetailedERC20Contract.decimals).thenReturn(instance(mockedDecimalsMethod));
108+
when(mockedERC20DetailedContract.decimals).thenReturn(instance(mockedDecimalsMethod));
109109
when(mockedDecimalsMethod.callAsync()).thenResolve(expectedDecimalsResult);
110-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
110+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
111111

112112
// Mock web3 wrapper owner
113113
when(mockedWrapper.getAvailableAddressesAsync()).thenResolve([expectedOwnerResult]);
@@ -163,10 +163,10 @@ describe('ERC20DividendCheckpointWrapper', () => {
163163
verify(mockedGetSecurityTokenAddressMethod.callAsync()).once();
164164
verify(mockedContractFactory.getSecurityTokenContract(expectedSecurityTokenAddress)).once();
165165
verify(mockedWrapper.getAvailableAddressesAsync()).times(2);
166-
verify(mockedDetailedERC20Contract.balanceOf).once();
166+
verify(mockedERC20DetailedContract.balanceOf).once();
167167
verify(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).once();
168168
verify(mockedContractFactory.getERC20DetailedContract(token)).twice();
169-
verify(mockedDetailedERC20Contract.decimals).once();
169+
verify(mockedERC20DetailedContract.decimals).once();
170170
verify(mockedDecimalsMethod.callAsync()).once();
171171
});
172172
});
@@ -193,15 +193,15 @@ describe('ERC20DividendCheckpointWrapper', () => {
193193

194194
const expectedBalanceOfResult = new BigNumber(100);
195195
const mockedBalanceOfAddressMethod = mock(MockedCallMethod);
196-
when(mockedDetailedERC20Contract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
196+
when(mockedERC20DetailedContract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
197197
when(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).thenResolve(expectedBalanceOfResult);
198-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
198+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
199199

200200
const expectedDecimalsResult = new BigNumber(18);
201201
const mockedDecimalsMethod = mock(MockedCallMethod);
202-
when(mockedDetailedERC20Contract.decimals).thenReturn(instance(mockedDecimalsMethod));
202+
when(mockedERC20DetailedContract.decimals).thenReturn(instance(mockedDecimalsMethod));
203203
when(mockedDecimalsMethod.callAsync()).thenResolve(expectedDecimalsResult);
204-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
204+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
205205

206206
// Mock web3 wrapper owner
207207
when(mockedWrapper.getAvailableAddressesAsync()).thenResolve([expectedOwnerResult]);
@@ -271,10 +271,10 @@ describe('ERC20DividendCheckpointWrapper', () => {
271271
verify(mockedGetSecurityTokenAddressMethod.callAsync()).twice();
272272
verify(mockedContractFactory.getSecurityTokenContract(expectedSecurityTokenAddress)).twice();
273273
verify(mockedWrapper.getAvailableAddressesAsync()).times(2);
274-
verify(mockedDetailedERC20Contract.balanceOf).once();
274+
verify(mockedERC20DetailedContract.balanceOf).once();
275275
verify(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).once();
276276
verify(mockedContractFactory.getERC20DetailedContract(token)).twice();
277-
verify(mockedDetailedERC20Contract.decimals).once();
277+
verify(mockedERC20DetailedContract.decimals).once();
278278
verify(mockedDecimalsMethod.callAsync()).once();
279279
});
280280
});
@@ -301,15 +301,15 @@ describe('ERC20DividendCheckpointWrapper', () => {
301301

302302
const expectedBalanceOfResult = new BigNumber(100);
303303
const mockedBalanceOfAddressMethod = mock(MockedCallMethod);
304-
when(mockedDetailedERC20Contract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
304+
when(mockedERC20DetailedContract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
305305
when(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).thenResolve(expectedBalanceOfResult);
306-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
306+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
307307

308308
const expectedDecimalsResult = new BigNumber(18);
309309
const mockedDecimalsMethod = mock(MockedCallMethod);
310-
when(mockedDetailedERC20Contract.decimals).thenReturn(instance(mockedDecimalsMethod));
310+
when(mockedERC20DetailedContract.decimals).thenReturn(instance(mockedDecimalsMethod));
311311
when(mockedDecimalsMethod.callAsync()).thenResolve(expectedDecimalsResult);
312-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
312+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
313313

314314
// Mock web3 wrapper owner
315315
when(mockedWrapper.getAvailableAddressesAsync()).thenResolve([expectedOwnerResult]);
@@ -382,10 +382,10 @@ describe('ERC20DividendCheckpointWrapper', () => {
382382
verify(mockedGetSecurityTokenAddressMethod.callAsync()).twice();
383383
verify(mockedContractFactory.getSecurityTokenContract(expectedSecurityTokenAddress)).twice();
384384
verify(mockedWrapper.getAvailableAddressesAsync()).times(2);
385-
verify(mockedDetailedERC20Contract.balanceOf).once();
385+
verify(mockedERC20DetailedContract.balanceOf).once();
386386
verify(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).once();
387387
verify(mockedContractFactory.getERC20DetailedContract(token)).twice();
388-
verify(mockedDetailedERC20Contract.decimals).once();
388+
verify(mockedERC20DetailedContract.decimals).once();
389389
verify(mockedDecimalsMethod.callAsync()).once();
390390
});
391391
});
@@ -411,15 +411,15 @@ describe('ERC20DividendCheckpointWrapper', () => {
411411

412412
const expectedBalanceOfResult = new BigNumber(100);
413413
const mockedBalanceOfAddressMethod = mock(MockedCallMethod);
414-
when(mockedDetailedERC20Contract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
414+
when(mockedERC20DetailedContract.balanceOf).thenReturn(instance(mockedBalanceOfAddressMethod));
415415
when(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).thenResolve(expectedBalanceOfResult);
416-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
416+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
417417

418418
const expectedDecimalsResult = new BigNumber(18);
419419
const mockedDecimalsMethod = mock(MockedCallMethod);
420-
when(mockedDetailedERC20Contract.decimals).thenReturn(instance(mockedDecimalsMethod));
420+
when(mockedERC20DetailedContract.decimals).thenReturn(instance(mockedDecimalsMethod));
421421
when(mockedDecimalsMethod.callAsync()).thenResolve(expectedDecimalsResult);
422-
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedDetailedERC20Contract));
422+
when(mockedContractFactory.getERC20DetailedContract(token)).thenResolve(instance(mockedERC20DetailedContract));
423423

424424
// Mock web3 wrapper owner
425425
when(mockedWrapper.getAvailableAddressesAsync()).thenResolve([expectedOwnerResult]);
@@ -479,10 +479,10 @@ describe('ERC20DividendCheckpointWrapper', () => {
479479
verify(mockedGetSecurityTokenAddressMethod.callAsync()).once();
480480
verify(mockedContractFactory.getSecurityTokenContract(expectedSecurityTokenAddress)).once();
481481
verify(mockedWrapper.getAvailableAddressesAsync()).times(2);
482-
verify(mockedDetailedERC20Contract.balanceOf).once();
482+
verify(mockedERC20DetailedContract.balanceOf).once();
483483
verify(mockedBalanceOfAddressMethod.callAsync(expectedOwnerResult)).once();
484484
verify(mockedContractFactory.getERC20DetailedContract(token)).twice();
485-
verify(mockedDetailedERC20Contract.decimals).once();
485+
verify(mockedERC20DetailedContract.decimals).once();
486486
verify(mockedDecimalsMethod.callAsync()).once();
487487
});
488488
});

src/contract_wrappers/modules/transfer_manager/general_transfer_manager_wrapper.ts

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ interface ModifyKYCDataSignedParams extends TxParams {
167167

168168
interface GetInvestorFlag {
169169
investor: string;
170-
flag: number;
170+
flag: FlagsType;
171171
}
172172

173173
interface GetInvestorFlags {
@@ -320,38 +320,6 @@ export default class GeneralTransferManagerWrapper extends ModuleWrapper {
320320
);
321321
};
322322

323-
public getAllInvestorFlags = async () => {
324-
const result = await (await this.contract).getAllInvestorFlags.callAsync();
325-
const typedResult: InvestorAndFlag[] = [];
326-
let flag = FlagsType.IsAccredited;
327-
for (let i = 0; i < result[0].length; i += 1) {
328-
switch (result[1][i].toNumber()) {
329-
case 0: {
330-
flag = FlagsType.IsAccredited;
331-
break;
332-
}
333-
case 1: {
334-
flag = FlagsType.CanNotBuyFromSto;
335-
break;
336-
}
337-
case 2: {
338-
flag = FlagsType.IsVolRestricted;
339-
break;
340-
}
341-
default: {
342-
assert.assert(false, 'Missing Flag');
343-
break;
344-
}
345-
}
346-
const InvestorAndFlag: InvestorAndFlag = {
347-
investor: result[0][i],
348-
flag,
349-
};
350-
typedResult.push(InvestorAndFlag);
351-
}
352-
return typedResult;
353-
};
354-
355323
public getInvestorFlag = async (params: GetInvestorFlag) => {
356324
const result = await (await this.contract).getInvestorFlag.callAsync(params.investor, params.flag);
357325
return result;
@@ -363,27 +331,20 @@ export default class GeneralTransferManagerWrapper extends ModuleWrapper {
363331
return !!bitInFlagPosition;
364332
};
365333

366-
public getInvestorFlags = async (params: GetInvestorFlags) => {
367-
const { investor } = params;
368-
const result = await (await this.contract).getInvestorFlags.callAsync(investor);
334+
private flagsCheking = (investor: string, flags: BigNumber) => {
369335
let isAccredited = false;
370336
let canNotBuyFromSTO = false;
371337
let isVolRestricted = false;
372338

373339
// eslint-disable-next-line no-restricted-syntax
374340
for (const flag in FlagsType) {
375341
if (Object.prototype.hasOwnProperty.call(FlagsType, flag)) {
376-
// This check is required because iterating through an enum
377-
// yields the names of the enum members as well as the indexes.
378-
// We only need the indexes so we skip the names in this case
379-
const position = Number(flag); // NaN if flag is string
342+
const position = Number(flag);
380343
if (!flag) {
381344
// eslint-disable-next-line no-continue
382345
continue;
383346
}
384-
385-
const isSet = this.isFlagTrue(position, result.toNumber());
386-
347+
const isSet = this.isFlagTrue(position, flags.toNumber());
387348
switch (position) {
388349
case FlagsType.IsAccredited: {
389350
isAccredited = isSet;
@@ -412,6 +373,23 @@ export default class GeneralTransferManagerWrapper extends ModuleWrapper {
412373
};
413374
};
414375

376+
public getAllInvestorFlags = async () => {
377+
const result = await (await this.contract).getAllInvestorFlags.callAsync();
378+
const investors = result[0];
379+
const flags = result[1];
380+
const investorFalgs = [];
381+
for (let i = 0; i < investors[0].length; i += 1) {
382+
investorFalgs.push(this.flagsCheking(investors[i], flags[i]));
383+
}
384+
return investorFalgs;
385+
};
386+
387+
public getInvestorFlags = async (params: GetInvestorFlags) => {
388+
const { investor } = params;
389+
const flags = await (await this.contract).getInvestorFlags.callAsync(investor);
390+
return this.flagsCheking(investor, flags);
391+
};
392+
415393
public getAllKYCData = async () => {
416394
const result = await (await this.contract).getAllKYCData.callAsync();
417395
const typedResult: KYCDataWithInvestor[] = [];

0 commit comments

Comments
 (0)