on master help sign in
roller: add getPoints
80b4554yosoyubik
package-lock.json+3−3
@@ -8932,9 +8932,9 @@
8932 }
8932 }
8933 },
8933 },
8934 "@urbit/roller-api": {
8934 "@urbit/roller-api": {
8935− "version": "0.1.3",
8935+ "version": "0.1.4",
8936− "resolved": "https://registry.npmjs.org/@urbit/roller-api/-/roller-api-0.1.3.tgz",
8936+ "resolved": "https://registry.npmjs.org/@urbit/roller-api/-/roller-api-0.1.4.tgz",
8937− "integrity": "sha512-3h+xeQWvLB2zIIBIZtdbNQkDGwy0bBuSMur5kpxXp3u/o8yH92VlC0+Xb9njW3vCS9AEToLsQwtTfs66+yaGYg==",
8937+ "integrity": "sha512-WROGstKI0o5A/9qtegCuWG1WfOBu6HSZpmwFcJXOQBLQ8djcjULhk1gN3eeC2U9UVdd0euGx7nXCZ9NUMXUtxw==",
8938 "requires": {
8938 "requires": {
8939 "@open-rpc/client-js": "1.7.0",
8939 "@open-rpc/client-js": "1.7.0",
8940 "@open-rpc/meta-schema": "1.14.2",
8940 "@open-rpc/meta-schema": "1.14.2",
package.json+2−2
@@ -32,7 +32,7 @@
32 "@types/styled-components": "^5.1.10",
32 "@types/styled-components": "^5.1.10",
33 "@types/styled-system": "^5.1.11",
33 "@types/styled-system": "^5.1.11",
34 "@types/styled-system__css": "^5.0.15",
34 "@types/styled-system__css": "^5.0.15",
35− "@urbit/roller-api": "^0.1.3",
35+ "@urbit/roller-api": "^0.1.4",
36 "@walletconnect/client": "^1.6.2",
36 "@walletconnect/client": "^1.6.2",
37 "@walletconnect/qrcode-modal": "^1.6.2",
37 "@walletconnect/qrcode-modal": "^1.6.2",
38 "@welldone-software/why-did-you-render": "^3.2.3",
38 "@welldone-software/why-did-you-render": "^3.2.3",
@@ -115,7 +115,7 @@
115 "pilot-mainnet": "REACT_APP_MAINNET=true HTTPS=true npm-run-all start --continue-on-error",
115 "pilot-mainnet": "REACT_APP_MAINNET=true HTTPS=true npm-run-all start --continue-on-error",
116 "pilot-release": "WITH_TEST_STATE=STAR_RELEASE npm run pilot",
116 "pilot-release": "WITH_TEST_STATE=STAR_RELEASE npm run pilot",
117 "pilot-residents": "WITH_TEST_STATE=RESIDENTS npm run pilot",
117 "pilot-residents": "WITH_TEST_STATE=RESIDENTS npm run pilot",
118− "pilot-l2": "WITH_TEST_STATE=L2 HTTPS=false NODE_ENV=development npm run pilot",
118+ "pilot-l2": "BROWSER=NONE WITH_TEST_STATE=L2 HTTPS=false NODE_ENV=development npm-run-all pilot:setup start pilot:cleanup --continue-on-error",
119 "pilot-ropsten": "REACT_APP_ROPSTEN=true HTTPS=true npm-run-all start --continue-on-error",
119 "pilot-ropsten": "REACT_APP_ROPSTEN=true HTTPS=true npm-run-all start --continue-on-error",
120 "pilot:cleanup": "pkill -f ganache-cli",
120 "pilot:cleanup": "pkill -f ganache-cli",
121 "lint:check": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
121 "lint:check": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
src/azimuth-js.d.tsnew file+2
@@ -0,0 +1,2 @@
1+// azimuth-js.d.ts
2+declare module 'azimuth-js';
src/lib/useRoller.ts+30−2
@@ -1,5 +1,12 @@
1import { useCallback, useEffect, useMemo, useState } from 'react';
1import { useCallback, useEffect, useMemo, useState } from 'react';
2+import {
3+ Config,
4+ Ship,
5+ Proxy,
6+ RollerRPCAPI,
7+ Options,
8+ EthAddress,
2−import { Config, RollerRPCAPI, Options } from '@urbit/roller-api';
9+} from '@urbit/roller-api';
3import { isDevelopment, isRopsten } from './flags';
10import { isDevelopment, isRopsten } from './flags';
4import { ROLLER_HOSTS } from './constants';
11import { ROLLER_HOSTS } from './constants';
5
12
@@ -13,7 +20,7 @@ export default function useRoller() {
13 : isDevelopment
20 : isDevelopment
14 ? ROLLER_HOSTS.LOCAL
21 ? ROLLER_HOSTS.LOCAL
15 : ROLLER_HOSTS.MAINNET;
22 : ROLLER_HOSTS.MAINNET;
16− const port = 80;
23+ const port = isDevelopment ? 8080 : 80;
17 const path = '/v1/roller';
24 const path = '/v1/roller';
18
25
19 return {
26 return {
@@ -45,6 +52,26 @@ export default function useRoller() {
45 });
52 });
46 }, [api]);
53 }, [api]);
47
54
55+ const getPoints = useCallback(
56+ async (proxy: Proxy, address: EthAddress) => {
57+ const points: Ship[] =
58+ proxy === 'own'
59+ ? await api.getOwnedPoints(address)
60+ : proxy === 'mange'
61+ ? await api.getManagerFor(address)
62+ : proxy === 'vote'
63+ ? await api.getVotingFor(address)
64+ : proxy === 'transfer'
65+ ? await api.getTransferringFor(address)
66+ : proxy === 'spawn'
67+ ? await api.getSpawningFor(address)
68+ : [];
69+
70+ return points;
71+ },
72+ [api]
73+ );
74+
48 // On load, get initial config
75 // On load, get initial config
49 useEffect(() => {
76 useEffect(() => {
50 if (config) {
77 if (config) {
@@ -56,5 +83,6 @@ export default function useRoller() {
56
83
57 return {
84 return {
58 config,
85 config,
86+ getPoints,
59 };
87 };
60}
88}
src/store/lib/useControlledPointsStore.js+9−7
@@ -1,14 +1,16 @@
1import { useState, useEffect, useCallback } from 'react';
1import { useState, useEffect, useCallback } from 'react';
2import { Just, Nothing } from 'folktale/maybe';
2import { Just, Nothing } from 'folktale/maybe';
3import Result from 'folktale/result';
3import Result from 'folktale/result';
4−import * as azimuth from 'azimuth-js';
5
4
6import { useNetwork } from '../network';
5import { useNetwork } from '../network';
7import { useWallet } from 'store/wallet';
6import { useWallet } from 'store/wallet';
7+import useRoller from 'lib/useRoller';
8
8
9export default function useControlledPointsStore() {
9export default function useControlledPointsStore() {
10 const { contracts } = useNetwork();
10 const { contracts } = useNetwork();
11 const { wallet } = useWallet();
11 const { wallet } = useWallet();
12+ const { getPoints } = useRoller();
13+
12 const [controlledPoints, _setControlledPoints] = useState(Nothing());
14 const [controlledPoints, _setControlledPoints] = useState(Nothing());
13
15
14 const syncControlledPoints = useCallback(async () => {
16 const syncControlledPoints = useCallback(async () => {
@@ -30,11 +32,11 @@ export default function useControlledPointsStore() {
30 votingPoints,
32 votingPoints,
31 spawningPoints,
33 spawningPoints,
32 ] = await Promise.all([
34 ] = await Promise.all([
33− azimuth.azimuth.getOwnedPoints(_contracts, address),
35+ getPoints('own', address),
34− azimuth.azimuth.getTransferringFor(_contracts, address),
36+ getPoints('transfer', address),
35− azimuth.azimuth.getManagerFor(_contracts, address),
37+ getPoints('manage', address),
36− azimuth.azimuth.getVotingFor(_contracts, address),
38+ getPoints('vote', address),
37− azimuth.azimuth.getSpawningFor(_contracts, address),
39+ getPoints('spawn', address),
38 ]);
40 ]);
39
41
40 if (
42 if (
@@ -64,7 +66,7 @@ export default function useControlledPointsStore() {
64 console.error('failed to fetch controlled points', error);
66 console.error('failed to fetch controlled points', error);
65 _setControlledPoints(Just(Result.Error(error)));
67 _setControlledPoints(Just(Result.Error(error)));
66 }
68 }
67− }, [contracts, wallet]);
69+ }, [contracts, wallet, getPoints]);
68
70
69 // sync controlled points whenever wallet or contracts changes
71 // sync controlled points whenever wallet or contracts changes
70 useEffect(() => {
72 useEffect(() => {