import { getOrElse } from 'fp-ts/lib/Either' import { pipe } from 'fp-ts/lib/function' import { ffetch } from '../lib/httpClient' import { CustomTemplate } from '../types' import { serverSideCookiesState, serverURL } from './settings' import { atom } from 'jotai' import { atomWithStorage } from 'jotai/utils' export const cookiesTemplateState = atom>(async (get) => await get(serverSideCookiesState) ? '--cookies=cookies.txt' : '' ) export const customArgsState = atomWithStorage( 'customArgs', localStorage.getItem('customArgs') ?? '' ) export const filenameTemplateState = atomWithStorage( 'lastFilenameTemplate', localStorage.getItem('lastFilenameTemplate') ?? '' ) export const downloadTemplateState = atom((get) => `${get(customArgsState)} ${get(cookiesTemplateState)}` .replace(/ +/g, ' ') .trim() ) export const savedTemplatesState = atom>(async (get) => { const task = ffetch(`${get(serverURL)}/api/v1/template/all`) const either = await task() return pipe( either, getOrElse(() => new Array()) ) } )