on master help sign in
proxies: choose proxy based on action
commitcd5c22afd59efe5cb39dd3b4e156f026e481f982 authoryosoyubik <yosoyubik@gmail.com> dateThu 30 Sep 2021, 07:00 (5 years ago) parent355856b
3 files changed+61−15
src/lib/useRoller.ts+44−15 src/lib/utils/proxy.ts+15 src/views/Point/Point.tsx+2
src/lib/useRoller.ts+44−15
@@ -22,7 +22,12 @@ import {
2222} from 'store/storage/roller';
2323import { usePointCache } from 'store/pointCache';
2424import { getOutgoingPoints } from 'views/Points';
25−import { getProxy } from './utils/proxy';
25+import {
26+ isManagementProxy,
27+ isOwnerProxy,
28+ isTransferProxy,
29+ isSpawnProxy,
30+} from './utils/proxy';
2631import { isPlanet } from './utils/point';
2732
2833import {
@@ -160,14 +165,18 @@ export default function useRoller() {
160165 }[] = [];
161166 const requests: Promise<string>[] = [];
162167
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;
164173
165174 if (proxy === undefined)
166175 throw new Error("Error: Address doesn't match proxy");
167176
168177 const nonce = await api.getNonce({
169178 ship: _point,
170− proxy: proxy,
179+ proxy,
171180 });
172181
173182 for (let i = 0; i < numInvites && planets[i]; i++) {
@@ -179,7 +188,7 @@ export default function useRoller() {
179188 _authToken
180189 );
181190
182− const spawnRequest = await spawn(
191+ const spawnRequest = spawn(
183192 api,
184193 _wallet,
185194 _point,
@@ -192,30 +201,30 @@ export default function useRoller() {
192201 inviteWallet,
193202 1
194203 );
195− const configureKeysRequest = await configureKeys(
204+ const configureKeysRequest = configureKeys(
196205 api,
197206 _wallet,
198207 planet,
199− proxy,
208+ 'own',
200209 0,
201210 networkSeed
202211 );
203212
204− const setManagementProxyRequest = await registerProxyAddress(
213+ const setManagementProxyRequest = registerProxyAddress(
205214 api,
206215 _wallet,
207216 planet,
208− proxy,
217+ 'own',
209218 'manage',
210219 1,
211220 inviteWallet.management.keys.address
212221 );
213222
214− const transferRequest = await transferPointRequest(
223+ const transferRequest = transferPointRequest(
215224 api,
216225 _wallet,
217226 planet,
218− proxy,
227+ 'own',
219228 2,
220229 inviteWallet.ownership.keys.address
221230 );
@@ -420,14 +429,19 @@ export default function useRoller() {
420429 }
421430
422431 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;
424438
425439 if (proxy === undefined)
426440 throw new Error("Error: Address doesn't match proxy");
427441
428442 const nonce = await api.getNonce({
429443 ship: _point,
430− proxy: proxy,
444+ proxy,
431445 });
432446
433447 const networkRevision = convertToInt(azimuthPoint.network.keys.life, 10);
@@ -549,10 +563,21 @@ export default function useRoller() {
549563 }
550564
551565 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;
553578
554579 if (proxy === undefined)
555− throw new Error("Error: Address doesn't match proxy");
580+ throw new Error("Error: Address doesn't match expected proxy");
556581
557582 const nonce = await api.getNonce({ ship: _point, proxy });
558583
@@ -584,7 +609,11 @@ export default function useRoller() {
584609 }
585610
586611 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;
588617
589618 if (proxy === undefined)
590619 throw new Error("Error: Address doesn't match proxy");
src/lib/utils/proxy.ts+15
@@ -16,3 +16,18 @@ export const getProxy = (
1616 : owner.transferProxy?.address === address
1717 ? 'transfer'
1818 : 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() {
191191 ? 'Point Transfered'
192192 : pendingTx.rawTx?.tx?.type === 'set-transfer-proxy'
193193 ? 'Transfer Proxy Changed'
194+ : pendingTx.rawTx?.tx?.type === 'set-spawn-proxy'
195+ ? 'Spawn Proxy Changed'
194196 : ''}
195197 </div>
196198 <div className="rollup-timer">