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

Commit 5b70082

Browse files
committed
fix: 🐛 implement ErrorCode type in LTM
1 parent 5794ca6 commit 5b70082

File tree

2 files changed

+104
-32
lines changed

2 files changed

+104
-32
lines changed

src/contract_wrappers/modules/transfer_manager/lock_up_transfer_manager_wrapper.ts

Lines changed: 103 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
SubscribeAsyncParams,
2828
TransferResult,
2929
TxParams,
30+
ErrorCode,
3031
} from '../../../types';
3132
import {
3233
bigNumberToDate,
@@ -353,8 +354,12 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
353354
* unpause the module
354355
*/
355356
public unpause = async (params: TxParams) => {
356-
assert.assert(await this.paused(), 'Controller not currently paused');
357-
assert.assert(await this.isCallerTheSecurityTokenOwner(params.txData), 'Sender is not owner');
357+
assert.assert(await this.paused(), ErrorCode.ContractPaused, 'Controller not currently paused');
358+
assert.assert(
359+
await this.isCallerTheSecurityTokenOwner(params.txData),
360+
ErrorCode.Unauthorized,
361+
'Sender is not owner',
362+
);
358363
return (await this.contract).unpause.sendTransactionAsync(params.txData, params.safetyFactor);
359364
};
360365

@@ -369,16 +374,20 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
369374
* pause the module
370375
*/
371376
public pause = async (params: TxParams) => {
372-
assert.assert(!(await this.paused()), 'Controller currently paused');
373-
assert.assert(await this.isCallerTheSecurityTokenOwner(params.txData), 'Sender is not owner');
377+
assert.assert(!(await this.paused()), ErrorCode.PreconditionRequired, 'Controller currently paused');
378+
assert.assert(
379+
await this.isCallerTheSecurityTokenOwner(params.txData),
380+
ErrorCode.Unauthorized,
381+
'Sender is not owner',
382+
);
374383
return (await this.contract).pause.sendTransactionAsync(params.txData, params.safetyFactor);
375384
};
376385

377386
/**
378387
* mapping used to store the lockup details corresponds to lockup name
379388
*/
380389
public lockups = async (params: LockupsParams): Promise<LockUp> => {
381-
assert.assert(params.lockupName.length > 0, 'LockUp Details must not be an empty string');
390+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'LockUp Details must not be an empty string');
382391
const result = await (await this.contract).lockups.callAsync(stringToBytes32(params.lockupName));
383392
const decimals = await (await this.securityTokenContract()).decimals.callAsync();
384393
return {
@@ -393,7 +402,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
393402
* Get a specific element in a user's lockups array given the user's address and the element index
394403
*/
395404
public getLockUp = async (params: LockupsParams): Promise<LockUpWithAmount> => {
396-
assert.assert(params.lockupName.length > 0, 'LockUp Details must not be an empty string');
405+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'LockUp Details must not be an empty string');
397406
const result = await (await this.contract).getLockUp.callAsync(stringToBytes32(params.lockupName));
398407
const decimals = await (await this.securityTokenContract()).decimals.callAsync();
399408
return {
@@ -430,7 +439,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
430439
* @return address List of users associated with the given lockup name
431440
*/
432441
public getListOfAddresses = async (params: LockupsParams): Promise<string[]> => {
433-
assert.assert(params.lockupName.length > 0, 'LockUp name must not be an empty string');
442+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'LockUp name must not be an empty string');
434443
return (await this.contract).getListOfAddresses.callAsync(stringToBytes32(params.lockupName));
435444
};
436445

@@ -510,7 +519,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
510519
* Use to add the new lockup type
511520
*/
512521
public addNewLockUpType = async (params: LockUpTypeParams) => {
513-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
522+
assert.assert(
523+
await this.isCallerAllowed(params.txData, Perm.Admin),
524+
ErrorCode.Unauthorized,
525+
'Caller is not allowed',
526+
);
514527
await this.checkAddNewLockUpType(params);
515528
const decimals = await (await this.securityTokenContract()).decimals.callAsync();
516529
return (await this.contract).addNewLockUpType.sendTransactionAsync(
@@ -528,7 +541,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
528541
* Use to add multiple new lockup types
529542
*/
530543
public addNewLockUpTypeMulti = async (params: LockUpTypeMultiParams) => {
531-
assert.assert(params.lockupAmounts.length > 0, 'Empty lockup information');
544+
assert.assert(params.lockupAmounts.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
532545
assert.areValidArrayLengths(
533546
[
534547
params.lockupAmounts,
@@ -539,7 +552,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
539552
],
540553
'Argument arrays length mismatch',
541554
);
542-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
555+
assert.assert(
556+
await this.isCallerAllowed(params.txData, Perm.Admin),
557+
ErrorCode.Unauthorized,
558+
'Caller is not allowed',
559+
);
543560
const results = [];
544561
for (let i = 0; i < params.lockupNames.length; i += 1) {
545562
results.push(
@@ -569,7 +586,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
569586
* Add a lockup to a specific user
570587
*/
571588
public addLockUpByName = async (params: LockUpByNameParams) => {
572-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
589+
assert.assert(
590+
await this.isCallerAllowed(params.txData, Perm.Admin),
591+
ErrorCode.Unauthorized,
592+
'Caller is not allowed',
593+
);
573594
await this.checkAddLockUpByName(params);
574595
return (await this.contract).addLockUpByName.sendTransactionAsync(
575596
params.userAddress,
@@ -583,9 +604,13 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
583604
* Add multiple lockups to multiple users
584605
*/
585606
public addLockUpByNameMulti = async (params: LockUpByNameMultiParams) => {
586-
assert.assert(params.lockupNames.length > 0, 'Empty lockup information');
607+
assert.assert(params.lockupNames.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
587608
assert.areValidArrayLengths([params.userAddresses, params.lockupNames], 'Argument arrays length mismatch');
588-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
609+
assert.assert(
610+
await this.isCallerAllowed(params.txData, Perm.Admin),
611+
ErrorCode.Unauthorized,
612+
'Caller is not allowed',
613+
);
589614
const results = [];
590615
for (let i = 0; i < params.lockupNames.length; i += 1) {
591616
results.push(
@@ -608,7 +633,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
608633
* Lets the admin create a volume restriction lockup for a given address.
609634
*/
610635
public addNewLockUpToUser = async (params: AddNewLockUpToUserParams) => {
611-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
636+
assert.assert(
637+
await this.isCallerAllowed(params.txData, Perm.Admin),
638+
ErrorCode.Unauthorized,
639+
'Caller is not allowed',
640+
);
612641
assert.isNonZeroETHAddressHex('User Address', params.userAddress);
613642
// CheckAddNewLockUpType only because no point checking a user that can't be added to lockup
614643
await this.checkAddNewLockUpType(params);
@@ -629,11 +658,15 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
629658
* Lets the admin create multiple volume restriction lockups for multiple given addresses.
630659
*/
631660
public addNewLockUpToUserMulti = async (params: AddNewLockUpToUserMultiParams) => {
632-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
661+
assert.assert(
662+
await this.isCallerAllowed(params.txData, Perm.Admin),
663+
ErrorCode.Unauthorized,
664+
'Caller is not allowed',
665+
);
633666
params.userAddresses.map(address => {
634667
return assert.isNonZeroETHAddressHex('User Address', address);
635668
});
636-
assert.assert(params.lockupAmounts.length > 0, 'Empty lockup information');
669+
assert.assert(params.lockupAmounts.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
637670
assert.areValidArrayLengths(
638671
[
639672
params.userAddresses,
@@ -675,7 +708,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
675708
* Lets the admin remove a user from a lock up
676709
*/
677710
public removeLockUpFromUser = async (params: RemoveLockUpFromUserParams) => {
678-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
711+
assert.assert(
712+
await this.isCallerAllowed(params.txData, Perm.Admin),
713+
ErrorCode.Unauthorized,
714+
'Caller is not allowed',
715+
);
679716
await this.checkRemoveLockUpFromUser(params);
680717
return (await this.contract).removeLockUpFromUser.sendTransactionAsync(
681718
params.userAddress,
@@ -689,9 +726,13 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
689726
* Use to remove the lockup for multiple users
690727
*/
691728
public removeLockUpFromUserMulti = async (params: RemoveLockUpFromUserMultiParams) => {
692-
assert.assert(params.lockupNames.length > 0, 'Empty lockup information');
729+
assert.assert(params.lockupNames.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
693730
assert.areValidArrayLengths([params.userAddresses, params.lockupNames], 'Argument arrays length mismatch');
694-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
731+
assert.assert(
732+
await this.isCallerAllowed(params.txData, Perm.Admin),
733+
ErrorCode.Unauthorized,
734+
'Caller is not allowed',
735+
);
695736
const results = [];
696737
for (let i = 0; i < params.lockupNames.length; i += 1) {
697738
results.push(
@@ -714,7 +755,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
714755
* Used to remove the lockup type
715756
*/
716757
public removeLockupType = async (params: RemoveLockUpTypeParams) => {
717-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
758+
assert.assert(
759+
await this.isCallerAllowed(params.txData, Perm.Admin),
760+
ErrorCode.Unauthorized,
761+
'Caller is not allowed',
762+
);
718763
await this.checkRemoveLockUpType(params.lockupName);
719764
return (await this.contract).removeLockupType.sendTransactionAsync(
720765
stringToBytes32(params.lockupName),
@@ -727,8 +772,12 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
727772
* Used to remove the multiple lockup type
728773
*/
729774
public removeLockupTypeMulti = async (params: RemoveLockUpTypeMultiParams) => {
730-
assert.assert(params.lockupNames.length > 0, 'Empty lockup information');
731-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
775+
assert.assert(params.lockupNames.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
776+
assert.assert(
777+
await this.isCallerAllowed(params.txData, Perm.Admin),
778+
ErrorCode.Unauthorized,
779+
'Caller is not allowed',
780+
);
732781
const results = [];
733782
for (let i = 0; i < params.lockupNames.length; i += 1) {
734783
results.push(this.checkRemoveLockUpType(params.lockupNames[i]));
@@ -745,7 +794,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
745794
* Lets the admin modify a lockup.
746795
*/
747796
public modifyLockUpType = async (params: LockUpTypeParams) => {
748-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
797+
assert.assert(
798+
await this.isCallerAllowed(params.txData, Perm.Admin),
799+
ErrorCode.Unauthorized,
800+
'Caller is not allowed',
801+
);
749802
await this.checkModifyLockUpType(params);
750803
const decimals = await (await this.securityTokenContract()).decimals.callAsync();
751804
return (await this.contract).modifyLockUpType.sendTransactionAsync(
@@ -763,7 +816,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
763816
* Lets the admin modify a volume restriction lockup for multiple addresses.
764817
*/
765818
public modifyLockUpTypeMulti = async (params: LockUpTypeMultiParams) => {
766-
assert.assert(params.lockupAmounts.length > 0, 'Empty lockup information');
819+
assert.assert(params.lockupAmounts.length > 0, ErrorCode.InvalidData, 'Empty lockup information');
767820
assert.areValidArrayLengths(
768821
[
769822
params.lockupAmounts,
@@ -774,7 +827,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
774827
],
775828
'Argument arrays length mismatch',
776829
);
777-
assert.assert(await this.isCallerAllowed(params.txData, Perm.Admin), 'Caller is not allowed');
830+
assert.assert(
831+
await this.isCallerAllowed(params.txData, Perm.Admin),
832+
ErrorCode.Unauthorized,
833+
'Caller is not allowed',
834+
);
778835
const results = [];
779836
for (let i = 0; i < params.lockupNames.length; i += 1) {
780837
results.push(
@@ -858,39 +915,53 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
858915
};
859916

860917
private checkLockUpTypeInformation = async (params: LockUpTypeParams) => {
861-
assert.assert(params.lockupName.length > 0, 'Lockup Name cannot be empty string');
918+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'Lockup Name cannot be empty string');
862919
assert.isFutureDate(params.startTime, 'Start time must be in the future');
863-
assert.assert(params.lockUpPeriodSeconds > 0, 'Lockup period in seconds should be greater than 0');
864-
assert.assert(params.releaseFrequenciesSeconds > 0, 'Release frequency in seconds should be greater than 0');
920+
assert.assert(
921+
params.lockUpPeriodSeconds > 0,
922+
ErrorCode.InvalidData,
923+
'Lockup period in seconds should be greater than 0',
924+
);
925+
assert.assert(
926+
params.releaseFrequenciesSeconds > 0,
927+
ErrorCode.InvalidData,
928+
'Release frequency in seconds should be greater than 0',
929+
);
865930
assert.isBigNumberGreaterThanZero(params.lockupAmount, 'Lockup amount should be greater than 0');
866931
};
867932

868933
private checkAddLockUpByName = async (params: LockUpByNameParams) => {
869-
assert.assert(params.lockupName.length > 0, 'Lockup Name cannot be empty string');
934+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'Lockup Name cannot be empty string');
870935
assert.isNonZeroETHAddressHex('User Address', params.userAddress);
871936
const lockupNames = await this.getLockupsNamesToUser({ user: params.userAddress });
872-
assert.assert(!lockupNames.includes(params.lockupName), 'User already added to this lockup name');
937+
assert.assert(
938+
!lockupNames.includes(params.lockupName),
939+
ErrorCode.AlreadyExists,
940+
'User already added to this lockup name',
941+
);
873942
const lockup = await this.getLockUp({ lockupName: params.lockupName });
874943
assert.isFutureDate(lockup.startTime, 'Start time must be in the future');
875944
};
876945

877946
private checkRemoveLockUpFromUser = async (params: LockUpByNameParams) => {
878-
assert.assert(params.lockupName.length > 0, 'Lockup Name cannot be empty string');
947+
assert.assert(params.lockupName.length > 0, ErrorCode.InvalidData, 'Lockup Name cannot be empty string');
879948
assert.isNonZeroETHAddressHex('User Address', params.userAddress);
880949
const lockupNames = await this.getLockupsNamesToUser({ user: params.userAddress });
881950
assert.assert(
882951
lockupNames.includes(params.lockupName),
952+
ErrorCode.PreconditionRequired,
883953
'User not added to this lockup name, not included in lookup',
884954
);
885955
};
886956

887957
private checkRemoveLockUpType = async (lockupName: string) => {
888-
assert.assert(lockupName.length > 0, 'Lockup Name cannot be empty string');
958+
assert.assert(lockupName.length > 0, ErrorCode.InvalidData, 'Lockup Name cannot be empty string');
889959
const lockup = await this.getLockUp({ lockupName });
890960
assert.isNotDateZero(lockup.startTime, 'Lockup does not exist');
891961
const lockupListOfAddresses = await this.getListOfAddresses({ lockupName });
892962
assert.assert(
893963
lockupListOfAddresses.length === 0,
964+
ErrorCode.PreconditionRequired,
894965
'There are users attached to the lockup that must be removed before removing the lockup type',
895966
);
896967
};

src/contract_wrappers/modules/transfer_manager/manual_approval_transfer_manager_wrapper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
Subscribe,
2424
GetLogs,
2525
Perm,
26+
ErrorCode
2627
} from '../../../types';
2728
import {
2829
bigNumberToDate,

0 commit comments

Comments
 (0)