|
1 | 1 | /** Data provider for information that needs to be loaded in bulk for frontend views */ |
2 | 2 | import baseFetch from "cross-fetch"; |
3 | | -import { createContext, useContext, useEffect, useState } from "react"; |
| 3 | +import { createContext, useContext, useEffect, useMemo, useState } from "react"; |
4 | 4 | import h from "@macrostrat/hyper"; |
5 | 5 | import { create, useStore } from "zustand"; |
6 | 6 | import { |
@@ -279,19 +279,24 @@ export function useMacrostratColumns( |
279 | 279 | const key = projectID ?? -1; |
280 | 280 | const colData = columnsMap?.get(key); |
281 | 281 | useEffect(() => { |
282 | | - if (colData != null && (!inProcess || (inProcess && !colData.inProcess))) { |
283 | | - return; |
| 282 | + // Refetch if the columns are not available, or if we have requested inProcess columns where we didn't before |
| 283 | + if (colData == null || (inProcess && !colData.inProcess)) { |
| 284 | + getColumns(projectID, inProcess); |
284 | 285 | } |
285 | | - getColumns(projectID, inProcess); |
| 286 | + // If we've already fetched the columns there's nothing to do... |
286 | 287 | }, [colData, inProcess, getColumns]); |
287 | | - if (colData == null) return null; |
288 | | - let columns = colData.columns; |
289 | | - if (!inProcess && colData.inProcess) { |
290 | | - columns.features = columns.features?.filter( |
291 | | - (d) => d.properties.status != "in process" |
292 | | - ); |
293 | | - } |
294 | | - return columns; |
| 288 | + |
| 289 | + return useMemo(() => { |
| 290 | + if (colData == null) return null; |
| 291 | + let columns = colData.columns; |
| 292 | + if (!inProcess && colData.inProcess) { |
| 293 | + // Our available set of columns includes 'in process' columns, but we don't want them |
| 294 | + columns.features = columns.features?.filter( |
| 295 | + (d) => d.properties.status != "in process" |
| 296 | + ); |
| 297 | + } |
| 298 | + return columns; |
| 299 | + }, [colData, inProcess]); |
295 | 300 | } |
296 | 301 |
|
297 | 302 | export function useMacrostratData(dataType: string, ...args: any[]) { |
|
0 commit comments