on e7ae14d help sign in
bridge/src/lib/usePermissionsForPoint.js
61 lines 1.7 kB history raw
1import { azimuth } from 'azimuth-js';
3import { usePointCache } from 'store/pointCache';
5import { eqAddr } from './wallet';
7const NULL_PERMISSIONS = {
8 isOwner: false,
9 isTransferProxy: false,
10 isManagementProxy: false,
11 canManage: false,
12 canTransfer: false,
13 canSpawn: false,
14 canVote: false,
15};
17/**
18 * @param {string} address
19 * @param {number} point
20 */
21export default function usePermissionsForPoint(address, point) {
22 const { getDetails } = usePointCache();
24 return getDetails(point).matchWith({
25 Nothing: () => NULL_PERMISSIONS,
26 Just: ({ value: details }) => {
27 const pointSize = azimuth.getPointSize(point);
28 const isPlanet = pointSize === azimuth.PointSize.Planet;
29 const isStar = pointSize === azimuth.PointSize.Star;
30 const isGalaxy = pointSize === azimuth.PointSize.Galaxy;
32 const isOwner = eqAddr(address, details.owner);
33 const isActiveOwner = isOwner && details.active;
34 const isTransferProxy = eqAddr(address, details.transferProxy);
35 const isManagementProxy = eqAddr(address, details.managementProxy);
36 const isSpawnProxy = eqAddr(address, details.spawnProxy);
37 const isVotingProxy = eqAddr(address, details.votingProxy);
39 const canManage = isOwner || isManagementProxy;
40 const canTransfer = isOwner || isTransferProxy;
41 const canSpawn = (isStar || isGalaxy) && (isOwner || isSpawnProxy);
42 const canVote = isGalaxy && (isOwner || isVotingProxy);
44 return {
45 isPlanet,
46 isStar,
47 isGalaxy,
48 //
49 isOwner,
50 isActiveOwner,
51 isTransferProxy,
52 isManagementProxy,
53 //
54 canManage,
55 canTransfer,
56 canSpawn,
57 canVote,
58 };
59 },
60 });