user/permissions.js

/**
 * @module Permissions
 */
import { setLastUpdatedTime, wasLastUpdateOlderThanXSeconds } from '../../lib/lastUpdated.js'
import { fetchUserPermissionsData } from '../railcontent.js'
import './types.js'

/**
 * Exported functions that are excluded from index generation.
 *
 * @type {string[]}
 */
const excludeFromGeneratedIndex = []
let userPermissionsPromise = null
let lastUpdatedKey = `userPermissions_lastUpdated`

/**
 * Fetches the user permissions data.
 *
 * @returns {Promise<UserPermissions>} - The user permissions data.
 */
export async function fetchUserPermissions() {
  if (!userPermissionsPromise || await wasLastUpdateOlderThanXSeconds(10, lastUpdatedKey)) {
    userPermissionsPromise = fetchUserPermissionsData()
    setLastUpdatedTime(lastUpdatedKey)
  }

  return await userPermissionsPromise
}

/**
 * Resets the user permissions data.
 *
 * @returns {Promise<void>}
 */
export async function reset() {
  userPermissionsPromise = null
}