@@ -8,9 +8,7 @@ import * as need from 'lib/need';
88import { eqAddr, isZeroAddress } from './wallet';
99
1010const NULL_PERMISSIONS = {
11− isPlanet: false,
12− isStar: false,
13− isGalaxy: false,
11+ isActive: false,
1412 //
1513 isOwner: false,
1614 isActiveOwner: false,
@@ -40,69 +38,70 @@ export default function usePermissionsForPoint(address, point) {
4038 const { getDetails } = usePointCache();
4139 const { contracts } = useNetwork();
4240
43− return getDetails(point).matchWith({
44− Nothing: () => NULL_PERMISSIONS,
45− Just: ({ value: details }) => {
46− const _contracts = need.contracts(contracts);
41+ const pointSize = azimuth.getPointSize(point);
42+ const isPlanet = pointSize === azimuth.PointSize.Planet;
43+ const isStar = pointSize === azimuth.PointSize.Star;
44+ const isGalaxy = pointSize === azimuth.PointSize.Galaxy;
45+ const isParent = isStar || isGalaxy;
46+ const staticPermissions = { isPlanet, isStar, isGalaxy, isParent };
4747
48− const pointSize = azimuth.getPointSize(point);
49− const isPlanet = pointSize === azimuth.PointSize.Planet;
50− const isStar = pointSize === azimuth.PointSize.Star;
51− const isGalaxy = pointSize === azimuth.PointSize.Galaxy;
52− const isParent = isStar || isGalaxy;
48+ return {
49+ ...staticPermissions,
50+ ...getDetails(point).matchWith({
51+ Nothing: () => NULL_PERMISSIONS,
52+ Just: ({ value: details }) => {
53+ const _contracts = need.contracts(contracts);
5354
54− const isActive = details.active;
55+ const isActive = details.active;
5556
56− const isOwner = eqAddr(address, details.owner);
57− const isActiveOwner = isOwner && isActive;
58− const isManagementProxy = eqAddr(address, details.managementProxy);
59− const isSpawnProxy = eqAddr(address, details.spawnProxy);
60− const isVotingProxy = eqAddr(address, details.votingProxy);
61− const isTransferProxy = eqAddr(address, details.transferProxy);
57+ const isOwner = eqAddr(address, details.owner);
58+ const isActiveOwner = isOwner && isActive;
59+ const isManagementProxy = eqAddr(address, details.managementProxy);
60+ const isSpawnProxy = eqAddr(address, details.spawnProxy);
61+ const isVotingProxy = eqAddr(address, details.votingProxy);
62+ const isTransferProxy = eqAddr(address, details.transferProxy);
6263
63− const isManagementProxySet = !isZeroAddress(details.managementProxy);
64− const isSpawnProxySet = !isZeroAddress(details.spawnProxy);
65− const isVotingProxySet = !isZeroAddress(details.votingProxy);
66− const isTransferProxySet = !isZeroAddress(details.transferProxy);
64+ const isManagementProxySet = !isZeroAddress(details.managementProxy);
65+ const isSpawnProxySet = !isZeroAddress(details.spawnProxy);
66+ const isVotingProxySet = !isZeroAddress(details.votingProxy);
67+ const isTransferProxySet = !isZeroAddress(details.transferProxy);
6768
68− const canManage = isOwner || isManagementProxy;
69− const canTransfer = isOwner || isTransferProxy;
70− const canSpawn =
71− isParent && (isOwner || isSpawnProxy) && details.keyRevisionNumber > 0;
72− const canVote = isGalaxy && isActive && (isOwner || isVotingProxy);
69+ const canManage = isOwner || isManagementProxy;
70+ const canTransfer = isOwner || isTransferProxy;
71+ const canSpawn =
72+ isParent &&
73+ (isOwner || isSpawnProxy) &&
74+ details.keyRevisionNumber > 0;
75+ const canVote = isGalaxy && isActive && (isOwner || isVotingProxy);
7376
74− const spawnIsDelegatedSending = eqAddr(
75− _contracts.delegatedSending.address,
76− details.spawnProxy
77− );
77+ const spawnIsDelegatedSending = eqAddr(
78+ _contracts.delegatedSending.address,
79+ details.spawnProxy
80+ );
7881
79− return {
80− isPlanet,
81− isStar,
82− isGalaxy,
83− isParent,
84− //
85− isActive,
86− //
87− isOwner,
88− isActiveOwner,
89− isManagementProxy,
90− isSpawnProxy,
91− isVotingProxy,
92− isTransferProxy,
93− //
94− isManagementProxySet,
95− isSpawnProxySet,
96− isVotingProxySet,
97− isTransferProxySet,
98− //
99− canManage,
100− canTransfer,
101− canSpawn,
102− canVote,
103− //
104− spawnIsDelegatedSending,
105− };
106− },
107− });
82+ return {
83+ isActive,
84+ //
85+ isOwner,
86+ isActiveOwner,
87+ isManagementProxy,
88+ isSpawnProxy,
89+ isVotingProxy,
90+ isTransferProxy,
91+ //
92+ isManagementProxySet,
93+ isSpawnProxySet,
94+ isVotingProxySet,
95+ isTransferProxySet,
96+ //
97+ canManage,
98+ canTransfer,
99+ canSpawn,
100+ canVote,
101+ //
102+ spawnIsDelegatedSending,
103+ };
104+ },
105+ }),
106+ };
108107}