1import React, { useCallback, useEffect } from 'react';
2import cn from 'classnames';
3import { Grid, Text, Input } from 'indigo-react';
4import * as azimuth from 'azimuth-js';
6import { useNetwork } from 'store/network';
7import { usePointCursor } from 'store/pointCursor';
8import { usePointCache } from 'store/pointCache';
10import * as need from 'lib/need';
11import { usePointInput, useNumberInput } from 'lib/useInputs';
12import useEthereumTransaction from 'lib/useEthereumTransaction';
13import { GAS_LIMITS } from 'lib/constants';
15import ViewHeader from 'components/ViewHeader';
16import MiniBackButton from 'components/MiniBackButton';
17import InlineEthereumTransaction from 'components/InlineEthereumTransaction';
18import patp2dec from 'lib/patp2dec';
19import { useHistory } from 'store/history';
20import View from 'components/View';
21import useCurrentPermissions from 'lib/useCurrentPermissions';
22import WarningBox from 'components/WarningBox';
24function useSetPoolSize() {
25 const { contracts } = useNetwork();
26 const { pointCursor } = usePointCursor();
27 const { syncOwnedPoint } = usePointCache();
29 const _contracts = need.contracts(contracts);
30 const _point = need.point(pointCursor);
32 return useEthereumTransaction(
34 (poolOwner, poolSize) =>
35 azimuth.delegatedSending.setPoolSize(
43 useCallback(() => syncOwnedPoint(_point), [_point, syncOwnedPoint]),
44 GAS_LIMITS.DEFAULT // TODO: GAS_LIMITS.SET_POOL_SIZE
48export default function PartySetPoolSize() {
49 const { pop } = useHistory();
50 const { contracts } = useNetwork();
52 const _contracts = need.contracts(contracts);
54 const { spawnIsDelegatedSending } = useCurrentPermissions();
64 const [poolOwnerInput, { pass: validPoint, data: poolOwner }] = usePointInput(
68 disabled: inputsLocked,
74 { pass: validPoolSize, data: poolSize },
79 disabled: inputsLocked,
83 if (validPoint && validPoolSize) {
84 construct(patp2dec(poolOwner), poolSize);
88 }, [poolOwner, construct, validPoint, validPoolSize, poolSize, unconstruct]);
93 <Grid.Item full as={MiniBackButton} onClick={() => pop()} />
94 <Grid.Item full as={ViewHeader}>
97 {!spawnIsDelegatedSending && (
98 <Grid.Item full as={WarningBox} className="mb4">
99 The spawn proxy must be set to{' '}
100 <code className="mono f6">
101 {_contracts.delegatedSending.address}
103 for invitations to be available.
109 className={cn('f5', {
113 ? `${poolSize} invites have been allocated to ${poolOwner}`
114 : `Allocate invites to a child point.`}
119 <Grid.Item full as={Input} {...poolOwnerInput} className="mt4" />
120 <Grid.Item full as={Input} {...poolSizeInput} className="mb4" />
126 as={InlineEthereumTransaction}
128 onReturn={() => pop()}
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list