Skip to content

Commit

Permalink
Check for forked networks when constructing monitor (#34)
Browse files Browse the repository at this point in the history
  • Loading branch information
shahnami authored Nov 16, 2023
1 parent 52b29fc commit 5f1d2ed
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
29 changes: 23 additions & 6 deletions src/cmd/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import {
getNetworkClient,
isDefenderId,
removeDefenderIdReferences,
isForkedNetwork,
} from '../utils';
import {
DefenderAction,
Expand All @@ -53,6 +54,7 @@ import {
DefenderBlockMonitorResponse,
Resources,
DefenderForkedNetwork,
DefenderBlockWatcher,
} from '../types';
import keccak256 from 'keccak256';
import {
Expand Down Expand Up @@ -808,9 +810,16 @@ export default class DefenderDeploy {
monitor.type = match.type;
}

const blockwatchersForNetwork = (await client.listBlockwatchers()).filter(
(b) => b.network === monitor.network,
);
let blockwatchersForNetwork: DefenderBlockWatcher[] = [];

// Check if network is forked network
if (isForkedNetwork(monitor.network)) {
blockwatchersForNetwork = (await client.listTenantBlockwatchers()).filter(
(b) => b.network === monitor.network,
);
} else {
blockwatchersForNetwork = (await client.listBlockwatchers()).filter((b) => b.network === monitor.network);
}

const newMonitor = constructMonitor(
this.serverless,
Expand Down Expand Up @@ -895,9 +904,17 @@ export default class DefenderDeploy {
},
// on create
async (monitor: Monitor, stackResourceId: string) => {
const blockwatchersForNetwork = (await client.listBlockwatchers()).filter(
(b) => b.network === monitor.network,
);
let blockwatchersForNetwork: DefenderBlockWatcher[] = [];

// Check if network is forked network
if (isForkedNetwork(monitor.network)) {
blockwatchersForNetwork = (await client.listTenantBlockwatchers()).filter(
(b) => b.network === monitor.network,
);
} else {
blockwatchersForNetwork = (await client.listBlockwatchers()).filter((b) => b.network === monitor.network);
}

const createdMonitor = await client.create(
constructMonitor(
this.serverless,
Expand Down
6 changes: 6 additions & 0 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Serverless from 'serverless';

import _ from 'lodash';

import { ForkedNetwork, Network, isValidNetwork } from '@openzeppelin/defender-sdk-base-client';
import { ActionClient } from '@openzeppelin/defender-sdk-action-client';
import { MonitorClient } from '@openzeppelin/defender-sdk-monitor-client';
import { RelayClient } from '@openzeppelin/defender-sdk-relay-client';
Expand Down Expand Up @@ -534,3 +535,8 @@ export const removeDefenderIdReferences = <Y>(resources: { [k: string]: Y | Defe
}
return resources as { [k: string]: Y } | undefined;
};

export const isForkedNetwork = (network?: Network): network is ForkedNetwork => {
if (!network) return false;
return !isValidNetwork(network);
};

0 comments on commit 5f1d2ed

Please sign in to comment.