on master help sign in
proxies: choose proxy based on action
cd5c22ayosoyubik
src/lib/useRoller.ts+44−15
@@ -22,7 +22,12 @@ import {
22} from 'store/storage/roller';
22} from 'store/storage/roller';
23import { usePointCache } from 'store/pointCache';
23import { usePointCache } from 'store/pointCache';
24import { getOutgoingPoints } from 'views/Points';
24import { getOutgoingPoints } from 'views/Points';
25+import {
26+ isManagementProxy,
27+ isOwnerProxy,
28+ isTransferProxy,
29+ isSpawnProxy,
25−import { getProxy } from './utils/proxy';
30+} from './utils/proxy';
26import { isPlanet } from './utils/point';
31import { isPlanet } from './utils/point';
27
32
28import {
33import {
@@ -160,14 +165,18 @@ export default function useRoller() {
160 }[] = [];
165 }[] = [];
161 const requests: Promise<string>[] = [];
166 const requests: Promise<string>[] = [];
162
167
163− const proxy = getProxy(starInfo.ownership!, _wallet.address);
168+ const proxy = isOwnerProxy(starInfo.ownership!, _wallet.address)
169+ ? 'own'
170+ : isSpawnProxy(starInfo.ownership!, _wallet.address)
171+ ? 'spawn'
172+ : undefined;
164
173
165 if (proxy === undefined)
174 if (proxy === undefined)
166 throw new Error("Error: Address doesn't match proxy");
175 throw new Error("Error: Address doesn't match proxy");
167
176
168 const nonce = await api.getNonce({
177 const nonce = await api.getNonce({
169 ship: _point,
178 ship: _point,
170− proxy: proxy,
179+ proxy,
171 });
180 });
172
181
173 for (let i = 0; i < numInvites && planets[i]; i++) {
182 for (let i = 0; i < numInvites && planets[i]; i++) {
@@ -179,7 +188,7 @@ export default function useRoller() {
179 _authToken
188 _authToken
180 );
189 );
181
190
182− const spawnRequest = await spawn(
191+ const spawnRequest = spawn(
183 api,
192 api,
184 _wallet,
193 _wallet,
185 _point,
194 _point,
@@ -192,30 +201,30 @@ export default function useRoller() {
192 inviteWallet,
201 inviteWallet,
193 1
202 1
194 );
203 );
195− const configureKeysRequest = await configureKeys(
204+ const configureKeysRequest = configureKeys(
196 api,
205 api,
197 _wallet,
206 _wallet,
198 planet,
207 planet,
199− proxy,
208+ 'own',
200 0,
209 0,
201 networkSeed
210 networkSeed
202 );
211 );
203
212
204− const setManagementProxyRequest = await registerProxyAddress(
213+ const setManagementProxyRequest = registerProxyAddress(
205 api,
214 api,
206 _wallet,
215 _wallet,
207 planet,
216 planet,
208− proxy,
217+ 'own',
209 'manage',
218 'manage',
210 1,
219 1,
211 inviteWallet.management.keys.address
220 inviteWallet.management.keys.address
212 );
221 );
213
222
214− const transferRequest = await transferPointRequest(
223+ const transferRequest = transferPointRequest(
215 api,
224 api,
216 _wallet,
225 _wallet,
217 planet,
226 planet,
218− proxy,
227+ 'own',
219 2,
228 2,
220 inviteWallet.ownership.keys.address
229 inviteWallet.ownership.keys.address
221 );
230 );
@@ -420,14 +429,19 @@ export default function useRoller() {
420 }
429 }
421
430
422 const pointDetails = await api.getPoint(_point);
431 const pointDetails = await api.getPoint(_point);
423− const proxy = getProxy(pointDetails.ownership!, _wallet.address);
432+ // const proxy = getProxy(pointDetails.ownership!, _wallet.address);
433+ const proxy = isOwnerProxy(pointDetails.ownership!, _wallet.address)
434+ ? 'own'
435+ : isManagementProxy(pointDetails.ownership!, _wallet.address)
436+ ? 'manage'
437+ : undefined;
424
438
425 if (proxy === undefined)
439 if (proxy === undefined)
426 throw new Error("Error: Address doesn't match proxy");
440 throw new Error("Error: Address doesn't match proxy");
427
441
428 const nonce = await api.getNonce({
442 const nonce = await api.getNonce({
429 ship: _point,
443 ship: _point,
430− proxy: proxy,
444+ proxy,
431 });
445 });
432
446
433 const networkRevision = convertToInt(azimuthPoint.network.keys.life, 10);
447 const networkRevision = convertToInt(azimuthPoint.network.keys.life, 10);
@@ -549,10 +563,21 @@ export default function useRoller() {
549 }
563 }
550
564
551 const pointDetails = await api.getPoint(_point);
565 const pointDetails = await api.getPoint(_point);
552− const proxy = getProxy(pointDetails.ownership!, _wallet.address);
566+ const ownership = pointDetails.ownership!;
567+ const proxy = isOwnerProxy(ownership, _wallet.address)
568+ ? 'own'
569+ : proxyType === 'manage' &&
570+ isManagementProxy(ownership, _wallet.address)
571+ ? 'manage'
572+ : proxyType === 'spawn' && isSpawnProxy(ownership, _wallet.address)
573+ ? 'spawn'
574+ : proxyType === 'transfer' &&
575+ isTransferProxy(ownership, _wallet.address)
576+ ? 'transfer'
577+ : undefined;
553
578
554 if (proxy === undefined)
579 if (proxy === undefined)
555− throw new Error("Error: Address doesn't match proxy");
580+ throw new Error("Error: Address doesn't match expected proxy");
556
581
557 const nonce = await api.getNonce({ ship: _point, proxy });
582 const nonce = await api.getNonce({ ship: _point, proxy });
558
583
@@ -584,7 +609,11 @@ export default function useRoller() {
584 }
609 }
585
610
586 const pointDetails = await api.getPoint(_point);
611 const pointDetails = await api.getPoint(_point);
587− const proxy = getProxy(pointDetails.ownership!, _wallet.address);
612+ const proxy = isOwnerProxy(pointDetails.ownership!, _wallet.address)
613+ ? 'own'
614+ : isTransferProxy(pointDetails.ownership!, _wallet.address)
615+ ? 'transfer'
616+ : undefined;
588
617
589 if (proxy === undefined)
618 if (proxy === undefined)
590 throw new Error("Error: Address doesn't match proxy");
619 throw new Error("Error: Address doesn't match proxy");
src/lib/utils/proxy.ts+15
@@ -16,3 +16,18 @@ export const getProxy = (
16 : owner.transferProxy?.address === address
16 : owner.transferProxy?.address === address
17 ? 'transfer'
17 ? 'transfer'
18 : undefined;
18 : undefined;
19+
20+export const isManagementProxy = (owner: Ownership, address: string) =>
21+ owner.managementProxy?.address === address;
22+
23+export const isTransferProxy = (owner: Ownership, address: string) =>
24+ owner.transferProxy?.address === address;
25+
26+export const isVotingProxy = (owner: Ownership, address: string) =>
27+ owner.votingProxy?.address === address;
28+
29+export const isSpawnProxy = (owner: Ownership, address: string) =>
30+ owner.spawnProxy?.address === address;
31+
32+export const isOwnerProxy = (owner: Ownership, address: string) =>
33+ owner.owner?.address === address;
src/views/Point/Point.tsx+2
@@ -191,6 +191,8 @@ export default function Point() {
191 ? 'Point Transfered'
191 ? 'Point Transfered'
192 : pendingTx.rawTx?.tx?.type === 'set-transfer-proxy'
192 : pendingTx.rawTx?.tx?.type === 'set-transfer-proxy'
193 ? 'Transfer Proxy Changed'
193 ? 'Transfer Proxy Changed'
194+ : pendingTx.rawTx?.tx?.type === 'set-spawn-proxy'
195+ ? 'Spawn Proxy Changed'
194 : ''}
196 : ''}
195 </div>
197 </div>
196 <div className="rollup-timer">
198 <div className="rollup-timer">