@@ -40,6 +40,34 @@ export const maybeGetResult = (obj, key, defaultValue) =>
40export const hasTransferProxy = details =>
40export const hasTransferProxy = details =>
41 !isZeroAddress(details.transferProxy);
41 !isZeroAddress(details.transferProxy);
43+export const getOutgoingPoints = (controlledPoints, getDetails) => {
44+ return controlledPoints.chain((points) =>
46+ Error: () => Nothing(),
48+ const points = c.value.ownedPoints.map((point) =>
49+ getDetails(point).chain((details) => {
50+ // need those that are inactive
51+ if (!details.active) {
52+ console.log(point, details)
54+ return Just({ point: point, has: hasTransferProxy(details) })
58+ if (points.every((p) => Just.hasInstance(p))) {
59+ const outgoing = points
60+ .filter((p) => p.value.has)
61+ .map((p) => p.value.point);
62+ return Just(outgoing);
43export const isLocked = details =>
71export const isLocked = details =>
44 details.owner === '0x86cd9cd0992f04231751e3761de45cecea5d1801' ||
72 details.owner === '0x86cd9cd0992f04231751e3761de45cecea5d1801' ||
45 details.owner === '0x8c241098c3d3498fe1261421633fd57986d74aea';
73 details.owner === '0x8c241098c3d3498fe1261421633fd57986d74aea';
@@ -112,30 +140,8 @@ export default function Points() {
112 ] = useRejectedIncomingPointTransfers();
140 ] = useRejectedIncomingPointTransfers();
113 const { syncStarReleaseDetails, starReleaseDetails } = useStarReleaseCache();
141 const { syncStarReleaseDetails, starReleaseDetails } = useStarReleaseCache();
115− const maybeOutgoingPoints = useMemo(
143+ const outgoingPoints = useMemo(
117− controlledPoints.chain(points =>
144+ () => getOutgoingPoints(controlledPoints, getDetails),
119− Error: () => Nothing(),
121− const points = c.value.ownedPoints.map(point =>
122− getDetails(point).chain(details =>
123− Just({ point: point, has: hasTransferProxy(details) })
126− // if we have details for every point,
127− // return the array of pending transfers.
128− if (points.every(p => Just.hasInstance(p))) {
129− const outgoing = points
130− .filter(p => p.value.has)
131− .map(p => p.value.point);
132− return Just(outgoing);
139 [getDetails, controlledPoints]
145 [getDetails, controlledPoints]
@@ -172,10 +178,7 @@ export default function Points() {
172 // if there are any pending transfers, incoming or outgoing, stay on this
178 // if there are any pending transfers, incoming or outgoing, stay on this
173 // page, because those can only be completed/cancelled here.
179 // page, because those can only be completed/cancelled here.
174 useEffect(() => {
180 useEffect(() => {
176− Nothing.hasInstance(maybeOutgoingPoints) ||
177− Nothing.hasInstance(starReleaseDetails)
181+ if (outgoingPoints.length < 1 || Nothing.hasInstance(starReleaseDetails)) {
181 controlledPoints.matchWith({
184 controlledPoints.matchWith({
@@ -196,7 +199,7 @@ export default function Points() {
197 all.length === 1 &&
200 all.length === 1 &&
198 incoming.length === 0 &&
201 incoming.length === 0 &&
199− maybeOutgoingPoints.value.length === 0 &&
202+ outgoingPoints.length === 0 &&
200 (starReleaseDetails.value === null ||
203 (starReleaseDetails.value === null ||
201 starReleaseDetails.value.total === 0)
204 starReleaseDetails.value.total === 0)
@@ -210,7 +213,7 @@ export default function Points() {
211 controlledPoints,
214 controlledPoints,
212 rejectedPoints,
215 rejectedPoints,
213− maybeOutgoingPoints,
216+ outgoingPoints,
214 setPointCursor,
217 setPointCursor,
215 popAndPush,
218 popAndPush,
@@ -230,7 +233,6 @@ export default function Points() {
230 const managingPoints = maybeGetResult(controlledPoints, 'managingPoints', []);
233 const managingPoints = maybeGetResult(controlledPoints, 'managingPoints', []);
231 const votingPoints = maybeGetResult(controlledPoints, 'votingPoints', []);
234 const votingPoints = maybeGetResult(controlledPoints, 'votingPoints', []);
232 const spawningPoints = maybeGetResult(controlledPoints, 'spawningPoints', []);
235 const spawningPoints = maybeGetResult(controlledPoints, 'spawningPoints', []);
233− const outgoingPoints = maybeOutgoingPoints.getOrElse([]);
234 const lockedPoints = maybeLockedPoints.getOrElse([]);
236 const lockedPoints = maybeLockedPoints.getOrElse([]);
236 const allPoints = [
238 const allPoints = [