@@ -40,7 +40,7 @@ import {
42} from './utils/roller';
42} from './utils/roller';
43−import { ROLLER_HOSTS } from './constants';
43+import { ETH_ZERO_ADDR, ROLLER_HOSTS } from './constants';
@@ -89,12 +89,9 @@ export default function useRoller() {
90 nextBatchTime,
90 nextBatchTime,
94 setNextBatchTime,
92 setNextBatchTime,
95 setPendingTransactions,
93 setPendingTransactions,
96 setInvites,
94 setInvites,
98 setInviteGeneratingNum,
95 setInviteGeneratingNum,
99 setPoints,
96 setPoints,
100 updateInvite,
97 updateInvite,
@@ -319,17 +316,19 @@ export default function useRoller() {
321 const getInvites = useCallback(
318 const getInvites = useCallback(
322− async (isL2: boolean, getAll = false) => {
319+ async (isL2: boolean) => {
324 const curPoint: number = Number(need.point(pointCursor));
321 const curPoint: number = Number(need.point(pointCursor));
325− setInvites(invitePoints.map(p => inviteTemplate(p)));
327 const _authToken = authToken.getOrElse(null);
322 const _authToken = authToken.getOrElse(null);
328 const _contracts = contracts.getOrElse(null);
323 const _contracts = contracts.getOrElse(null);
330 if (_authToken && _contracts) {
325 if (_authToken && _contracts) {
331 const spawnedPoints = isL2 ? await api.getSpawned(curPoint) : [];
326 const spawnedPoints = isL2 ? await api.getSpawned(curPoint) : [];
328+ const newPending = await api.getPendingByShip(curPoint);
329+ setPendingTransactions(newPending);
330+ const pendingSpawns = getPendingSpawns(newPending);
333 const availablePoints = await azimuth.azimuth.getUnspawnedChildren(
332 const availablePoints = await azimuth.azimuth.getUnspawnedChildren(
334 _contracts,
333 _contracts,
@@ -340,9 +339,11 @@ export default function useRoller() {
340 getDetails
339 getDetails
341 ).filter((p: number) => isPlanet(p) && availablePoints.includes(p));
340 ).filter((p: number) => isPlanet(p) && availablePoints.includes(p));
343− const invitePlanets = spawnedPoints.concat(
342+ const invitePlanets = spawnedPoints
344− outgoingPoints.filter((p: number) => !spawnedPoints.includes(p))
344+ outgoingPoints.filter((p: number) => !spawnedPoints.includes(p))
346+ .filter((p: number) => !pendingSpawns.has(p));
347 const newInvites: Invite[] = [];
348 const newInvites: Invite[] = [];
348 // Iterate over all of the stored invites, generating wallet info as necessary
349 // Iterate over all of the stored invites, generating wallet info as necessary
@@ -351,22 +352,28 @@ export default function useRoller() {
351 for (let i = 0; i < invitePlanets.length; i++) {
352 for (let i = 0; i < invitePlanets.length; i++) {
352 setInviteGeneratingNum(i + 1);
353 setInviteGeneratingNum(i + 1);
353 const planet = invitePlanets[i];
354 const planet = invitePlanets[i];
355+ const storedInvite = storedInvites[planet];
354 const invite =
356 const invite =
355− storedInvites[planet] ||
356− (await generateInviteInfo(planet, _authToken));
357+ storedInvite || (await generateInviteInfo(planet, _authToken));
358 // TODO: check if the invite point's owner still matches the deterministic wallet address
359 // TODO: check if the invite point's owner still matches the deterministic wallet address
359 const planetInfo = await api.getPoint(planet);
360 const planetInfo = await api.getPoint(planet);
361+ setStoredInvite(ls, invite);
364+ invite.owner.toLowerCase() ===
365+ planetInfo.ownership?.owner?.address ||
360− if (invite.owner === planetInfo.ownership?.transferProxy?.address) {
366+ planetInfo.ownership?.transferProxy?.address !== ETH_ZERO_ADDR
361 newInvites.push(invite);
368 newInvites.push(invite);
362− updateInvite(invite);
369+ updateInvite(curPoint, invite);
363 setStoredInvite(ls, invite);
373 setStoredInvite(ls, invite);
365− removeInvite(planet);
368− setStoredInvites(ls, newInvites);
376+ setInvites(curPoint, newInvites);
369− setInvites(newInvites);
371 return newInvites;
378 return newInvites;
@@ -381,64 +388,11 @@ export default function useRoller() {
381 controlledPoints,
388 controlledPoints,
382 getDetails,
389 getDetails,
383 pointCursor,
390 pointCursor,
387 setInvites,
392 setInvites,
388 setInviteGeneratingNum,
393 setInviteGeneratingNum,
393− const getNumInvites = useCallback(
394− async (isL2: boolean) => {
396− const curPoint: number = Number(need.point(pointCursor));
397− const _authToken = authToken.getOrElse(null);
398− const _contracts = contracts.getOrElse(null);
400− if (_authToken && _contracts) {
401− let spawnedPoints = isL2 ? await api.getSpawned(curPoint) : [];
403− const availablePoints = await azimuth.azimuth.getUnspawnedChildren(
408− const newPending = await api.getPendingByShip(curPoint);
409− const pendingSpawns = getPendingSpawns(newPending);
411− const outgoingPoints = getOutgoingPoints(
414− ).filter((p: number) => isPlanet(p) && availablePoints.includes(p));
416− const invitePoints = spawnedPoints
418− outgoingPoints.filter((p: number) => !spawnedPoints.includes(p))
420− .filter((p: number) => !pendingSpawns.has(p));
422− setPendingTransactions(newPending);
423− setInvitePoints(invitePoints);
425− return invitePoints;
428− if (isDevelopment) {
441 setPendingTransactions,
394 setPendingTransactions,
@@ -851,7 +805,6 @@ export default function useRoller() {
851 if (nextBatchTime - ONE_SECOND <= new Date().getTime()) {
805 if (nextBatchTime - ONE_SECOND <= new Date().getTime()) {
852 api.getRollerConfig().then(response => {
806 api.getRollerConfig().then(response => {
853 setNextBatchTime(response.nextBatch);
807 setNextBatchTime(response.nextBatch);
854− getNumInvites(!!point?.isL2);
857 }, 10000000);
810 }, 10000000);
@@ -866,7 +819,6 @@ export default function useRoller() {
867 configureNetworkingKeys,
820 configureNetworkingKeys,
868 getInvites,
821 getInvites,
870 getPoints,
822 getPoints,
871 getPointDetails,
823 getPointDetails,
872 getPendingTransactions,
824 getPendingTransactions,