@@ -27,8 +27,6 @@ contract UniswapSingleTransferMigration is ReentrancyGuard, Vault, IMigration {
2727 uint24 fee;
2828 // if migration is active and startMigration() has not been triggered
2929 bool started;
30- // meToken has executed the swap and can finish migrating
31- bool swapped;
3230 }
3331
3432 mapping (address => UniswapSingleTransfer) private _uniswapSingleTransfers;
@@ -43,46 +41,48 @@ contract UniswapSingleTransferMigration is ReentrancyGuard, Vault, IMigration {
4341 uint24 public constant MIDFEE = 3000 ; // 0.3% (Default fee)
4442 uint24 public constant MAXFEE = 1e4 ; // 1%
4543
44+ modifier onlyDiamond () {
45+ require (msg .sender == diamond, "!diamond " );
46+ _;
47+ }
48+
4649 constructor (address _dao , address _diamond ) Vault (_dao, _diamond) {}
4750
4851 /// @inheritdoc IMigration
4952 function initMigration (address meToken , bytes memory encodedArgs )
5053 external
5154 override
55+ onlyDiamond
5256 {
53- require (msg .sender == diamond, "!diamond " );
54-
5557 MeTokenInfo memory meTokenInfo = IMeTokenRegistryFacet (diamond)
5658 .getMeTokenInfo (meToken);
57- HubInfo memory hubInfo = IHubFacet (diamond).getHubInfo (
58- meTokenInfo.hubId
59- );
60- HubInfo memory targetHubInfo = IHubFacet (diamond).getHubInfo (
61- meTokenInfo.targetHubId
62- );
6359
64- require (hubInfo.asset != targetHubInfo.asset, "same asset " );
60+ require (
61+ IHubFacet (diamond).getHubInfo (meTokenInfo.hubId).asset !=
62+ IHubFacet (diamond).getHubInfo (meTokenInfo.targetHubId).asset,
63+ "same asset "
64+ );
6565
66- uint24 fee = abi.decode (encodedArgs, (uint24 ));
67- UniswapSingleTransfer storage usts = _uniswapSingleTransfers[meToken];
68- usts.fee = fee;
66+ _uniswapSingleTransfers[meToken].fee = abi.decode (
67+ encodedArgs,
68+ (uint24 )
69+ );
6970 }
7071
7172 /// @inheritdoc IMigration
7273 function poke (address meToken ) external override nonReentrant {
73- // Make sure meToken is in a state of resubscription
7474 UniswapSingleTransfer storage usts = _uniswapSingleTransfers[meToken];
7575 MeTokenInfo memory meTokenInfo = IMeTokenRegistryFacet (diamond)
7676 .getMeTokenInfo (meToken);
77- HubInfo memory hubInfo = IHubFacet (diamond).getHubInfo (
78- meTokenInfo.hubId
79- );
77+
8078 if (
81- usts.fee != 0 && // this is to ensure the meToken is resubscribing
79+ usts.fee != 0 && // make sure meToken is in a state of resubscription
8280 block .timestamp > meTokenInfo.startTime && // swap can only happen after resubscribe
8381 ! usts.started // should skip if already started
8482 ) {
85- ISingleAssetVault (hubInfo.vault).startMigration (meToken);
83+ ISingleAssetVault (
84+ IHubFacet (diamond).getHubInfo (meTokenInfo.hubId).vault
85+ ).startMigration (meToken);
8686 usts.started = true ;
8787 _swap (meToken);
8888 }
@@ -93,22 +93,19 @@ contract UniswapSingleTransferMigration is ReentrancyGuard, Vault, IMigration {
9393 external
9494 override
9595 nonReentrant
96- returns ( uint256 amountOut )
96+ onlyDiamond
9797 {
98- require (msg .sender == diamond, "!diamond " );
99- UniswapSingleTransfer storage usts = _uniswapSingleTransfers[meToken];
100-
10198 MeTokenInfo memory meTokenInfo = IMeTokenRegistryFacet (diamond)
10299 .getMeTokenInfo (meToken);
103- HubInfo memory hubInfo = IHubFacet (diamond).getHubInfo (
104- meTokenInfo.hubId
105- );
106100 HubInfo memory targetHubInfo = IHubFacet (diamond).getHubInfo (
107101 meTokenInfo.targetHubId
108102 );
109103
110- if (! usts.started) {
111- ISingleAssetVault (hubInfo.vault).startMigration (meToken);
104+ uint256 amountOut;
105+ if (! _uniswapSingleTransfers[meToken].started) {
106+ ISingleAssetVault (
107+ IHubFacet (diamond).getHubInfo (meTokenInfo.hubId).vault
108+ ).startMigration (meToken);
112109 amountOut = _swap (meToken);
113110 } else {
114111 // No swap, amountOut = amountIn
@@ -206,8 +203,6 @@ contract UniswapSingleTransferMigration is ReentrancyGuard, Vault, IMigration {
206203 sqrtPriceLimitX96: 0
207204 });
208205
209- usts.swapped = true ;
210-
211206 // The call to `exactInputSingle` executes the swap
212207 amountOut = _router.exactInputSingle (params);
213208
0 commit comments