@@ -86,6 +86,20 @@ export type InvestorCSVRow = [
8686 string ,
8787] ;
8888
89+ // make more functional and switch transfermanager to module
90+ async function getDelegateDetails ( permissionManager , transferManager ) {
91+ const delegates = await permissionManager . getAllDelegates (
92+ transferManager . address ,
93+ PERM_TYPES . ADMIN
94+ ) ;
95+ let delegateDetails = [ ] ;
96+ for ( const delegate of delegates ) {
97+ let details = await permissionManager . getDelegateDetails ( delegate ) ;
98+ delegateDetails . push ( { id : delegate , address : delegate , details } ) ;
99+ }
100+ return delegateDetails ;
101+ }
102+
89103export const fetchManagers = ( ) => async (
90104 dispatch : Function ,
91105 getState : GetState
@@ -95,18 +109,17 @@ export const fetchManagers = () => async (
95109 try {
96110 const st : SecurityToken = getState ( ) . token . token . contract ;
97111 const permissionManager = await st . getPermissionManager ( ) ;
98- if ( permissionManager ) {
112+ if ( ! permissionManager ) {
113+ return ;
114+ }
115+ const moduleMetadata = await st . getModule ( permissionManager . address ) ;
116+ if ( permissionManager && ! moduleMetadata . isArchived ) {
99117 const transferManager = await st . getTransferManager ( ) ;
100118 if ( transferManager ) {
101- const delegates = await permissionManager . getAllDelegates (
102- transferManager . address ,
103- PERM_TYPES . ADMIN
119+ const delegateDetails = await getDelegateDetails (
120+ permissionManager ,
121+ transferManager
104122 ) ;
105- let delegateDetails = [ ] ;
106- for ( const delegate of delegates ) {
107- let details = await permissionManager . getDelegateDetails ( delegate ) ;
108- delegateDetails . push ( { id : delegate , address : delegate , details } ) ;
109- }
110123 dispatch ( loadManagers ( delegateDetails ) ) ;
111124 }
112125 dispatch ( toggleWhitelistManagement ( true ) ) ;
@@ -212,24 +225,22 @@ export const removeAddressFromTransferManager = (delegate: Address) => async (
212225 ) ;
213226} ;
214227
215- export const addGeneralPermissionModule = ( ) => async (
228+ export const archiveGeneralPermissionModule = ( ) => async (
216229 dispatch : Function ,
217230 getState : GetState
218231) => {
219232 const st : SecurityToken = getState ( ) . token . token . contract ;
220- if ( await st . getPermissionManager ( ) ) {
221- dispatch ( toggleWhitelistManagement ( true ) ) ;
222- return ;
223- }
224233 dispatch (
225234 ui . tx (
226- [ 'Enabling General Permissions Manager for General Transfer Manager' ] ,
235+ [ 'Disabling General Permissions Manager' ] ,
227236 async ( ) => {
228- await st . setPermissionManager ( ) ;
237+ const permissionManager = await st . getPermissionManager ( ) ;
238+ await st . archiveModule ( permissionManager . address ) ;
229239 } ,
230- 'General Permissions Manager for General Transfer Manager Enabled ' ,
240+ 'General Permissions Manager Disabled ' ,
231241 ( ) => {
232- dispatch ( toggleWhitelistManagement ( true ) ) ;
242+ dispatch ( toggleWhitelistManagement ( false ) ) ;
243+ dispatch ( loadManagers ( [ ] ) ) ;
233244 } ,
234245 undefined ,
235246 undefined ,
@@ -239,6 +250,50 @@ export const addGeneralPermissionModule = () => async (
239250 ) ;
240251} ;
241252
253+ export const addGeneralPermissionModule = ( ) => async (
254+ dispatch : Function ,
255+ getState : GetState
256+ ) => {
257+ try {
258+ const st : SecurityToken = getState ( ) . token . token . contract ;
259+ const permissionManager = await st . getPermissionManager ( ) ;
260+ const transferManager = await st . getTransferManager ( ) ;
261+ let moduleMetadata = { } ;
262+ let delegateDetails = [ ] ;
263+
264+ if ( permissionManager )
265+ moduleMetadata = await st . getModule ( permissionManager . address ) ;
266+
267+ dispatch (
268+ ui . tx (
269+ [ 'Enabling General Permissions Manager for General Transfer Manager' ] ,
270+ async ( ) => {
271+ if ( moduleMetadata . isArchived ) {
272+ await st . unarchiveModule ( permissionManager . address ) ;
273+ delegateDetails = await getDelegateDetails (
274+ permissionManager ,
275+ transferManager
276+ ) ;
277+ } else {
278+ await st . setPermissionManager ( ) ;
279+ }
280+ } ,
281+ 'General Permissions Manager for General Transfer Manager Enabled' ,
282+ ( ) => {
283+ dispatch ( loadManagers ( delegateDetails ) ) ;
284+ dispatch ( toggleWhitelistManagement ( true ) ) ;
285+ } ,
286+ undefined ,
287+ undefined ,
288+ undefined ,
289+ true
290+ )
291+ ) ;
292+ } catch ( e ) {
293+ console . log ( e ) ;
294+ }
295+ } ;
296+
242297export const fetchWhitelist = ( ) => async (
243298 dispatch : Function ,
244299 getState : GetState
0 commit comments