Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
IVOAContext.js 1.39 KiB
import React, { createContext, useState, useEffect, useContext } from "react";

export const IVOAContext = createContext();

export function IVOAContextProvider({ children }) {
  const [registryList, setRegistryList] = useState([]);
 // const [selectedRegistry, setSelectedRegistry] = useState([]);
  const [queryStep, setQueryStep] = useState("get-services");
  const [regPage, setRegPage] = useState(1);

  /* 
    IVOA query steps:
    1. get-services
    2. run-query: query selected registry
  */

  // For testing purpose
  // start manual setup block
  //const [queryStep, setQueryStep] = useState("run-query");
  const [selectedRegistry, setSelectedRegistry] = useState("http://astron.nl/tap");
  // end block

  function handleAddRegistry(access_url) {
    setSelectedRegistry([...selectedRegistry, access_url]);
  }

  function handleRemoveRegistry(access_url) {
    const copy = [...selectedRegistry];
    const index = copy.findIndex((url) => url === access_url);
    copy.splice(index, 1);
    setSelectedRegistry(copy);
  }
  return (
    <IVOAContext.Provider
      value={{
        selectedRegistry,
        setSelectedRegistry,
        addRegistry: handleAddRegistry,
        removeRegistry: handleRemoveRegistry,
        regPage,
        setRegPage,
        registryList,
        setRegistryList,
        queryStep,
        setQueryStep,
      }}
    >
      {children}
    </IVOAContext.Provider>
  );
}