Source: utils/InvolveUApi.jsx

import config from "../config.json";

/**
 * Fetches InvolveU API to get all user data.
 * 
 * @returns {Promise} response from server
 */
export function GetUsers() {
  return new Promise((resolve, reject) => {
    fetch(`${config.server}/api/users/`, {
      method: "GET",
    })
      .then((response) => response.json())
      .then((json) => {
        resolve(json);
      })
      .catch((err) => {
        console.log(err);
        reject(err);
      });
  });
}

/**
 * Fetches InvolveU API to get all event data.
 * 
 * @returns {Promise} response from server
 */
export function GetEvents() {
  return new Promise((resolve, reject) => {
    fetch(`${config.server}/api/events/`, {
      method: "GET",
    })
      .then((response) => response.json())
      .then((json) => {
        resolve(json);
      })
      .catch((err) => {
        console.log(err);
        reject(err);
      });
  });
}

/**
 * Fetches InvolveU API to get all item data.
 * 
 * @returns {Promise} response from server
 */
export function GetItems() {
  return new Promise((resolve, reject) => {
    fetch(`${config.server}/api/items/`, {
      method: "GET",
    })
      .then((response) => response.json())
      .then((json) => {
        resolve(json);
      })
      .catch((err) => {
        console.log(err);
        reject(err);
      });
  });
}

/**
 * Posts refresh token to server to fetch a new access token. Refresh tokens are temporary and used
 * for the user to stay signed in.
 * 
 * @param {JSON} ref refresh token to be posted to server
 * 
 * @returns {Promise} response from server
 */
export function GetRefreshToken(ref) {
  return new Promise((resolve, reject) => {
    fetch(`${config.server}/api/token/refresh/`, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        refresh: ref,
      }),
    })
      .then((response) => response.json())
      .then((json) => {
        resolve(json);
      })
      .catch((err) => {
        console.log(err);
        reject(err);
      });
  });
}