Use cookies saved server side (#188)
* retrieve cookies stored server side fixed netscape cookies validation pipeline * code refactoring
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
import { atom, selector } from 'recoil'
|
||||
import { CustomTemplate } from '../types'
|
||||
import { ffetch } from '../lib/httpClient'
|
||||
import { serverURL } from './settings'
|
||||
import { pipe } from 'fp-ts/lib/function'
|
||||
import { getOrElse } from 'fp-ts/lib/Either'
|
||||
import { pipe } from 'fp-ts/lib/function'
|
||||
import { atom, selector } from 'recoil'
|
||||
import { ffetch } from '../lib/httpClient'
|
||||
import { CustomTemplate } from '../types'
|
||||
import { serverSideCookiesState, serverURL } from './settings'
|
||||
|
||||
export const cookiesTemplateState = atom({
|
||||
export const cookiesTemplateState = selector({
|
||||
key: 'cookiesTemplateState',
|
||||
default: localStorage.getItem('cookiesTemplate') ?? '',
|
||||
effects: [
|
||||
({ onSet }) => onSet(e => localStorage.setItem('cookiesTemplate', e))
|
||||
]
|
||||
get: ({ get }) => get(serverSideCookiesState)
|
||||
? '--cookies=cookies.txt'
|
||||
: ''
|
||||
})
|
||||
|
||||
export const customArgsState = atom({
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { pipe } from 'fp-ts/lib/function'
|
||||
import { matchW } from 'fp-ts/lib/TaskEither'
|
||||
import { atom, selector } from 'recoil'
|
||||
import { ffetch } from '../lib/httpClient'
|
||||
import { prefersDarkMode } from '../utils'
|
||||
|
||||
export const languages = [
|
||||
@@ -187,13 +190,15 @@ export const rpcHTTPEndpoint = selector({
|
||||
}
|
||||
})
|
||||
|
||||
export const cookiesState = atom({
|
||||
key: 'cookiesState',
|
||||
default: localStorage.getItem('yt-dlp-cookies') ?? '',
|
||||
effects: [
|
||||
({ onSet }) =>
|
||||
onSet(c => localStorage.setItem('yt-dlp-cookies', c))
|
||||
]
|
||||
export const serverSideCookiesState = selector<string>({
|
||||
key: 'serverSideCookiesState',
|
||||
get: async ({ get }) => await pipe(
|
||||
ffetch<Readonly<{ cookies: string }>>(`${get(serverURL)}/api/v1/cookies`),
|
||||
matchW(
|
||||
() => '',
|
||||
(r) => r.cookies
|
||||
)
|
||||
)()
|
||||
})
|
||||
|
||||
const themeSelector = selector<ThemeNarrowed>({
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { pipe } from 'fp-ts/lib/function'
|
||||
import { of } from 'fp-ts/lib/Task'
|
||||
import { getOrElse } from 'fp-ts/lib/TaskEither'
|
||||
import { atom, selector } from 'recoil'
|
||||
import { ffetch } from '../lib/httpClient'
|
||||
import { rpcClientState } from './rpc'
|
||||
import { serverURL } from './settings'
|
||||
|
||||
export const connectedState = atom({
|
||||
key: 'connectedState',
|
||||
@@ -22,4 +27,15 @@ export const availableDownloadPathsState = selector({
|
||||
.catch(() => ({ result: [] }))
|
||||
return res.result
|
||||
}
|
||||
})
|
||||
|
||||
export const ytdlpVersionState = selector<string>({
|
||||
key: 'ytdlpVersionState',
|
||||
get: async ({ get }) => await pipe(
|
||||
ffetch<string>(`${get(serverURL)}/api/v1/version`),
|
||||
getOrElse(() => pipe(
|
||||
'unknown version',
|
||||
of
|
||||
)),
|
||||
)()
|
||||
})
|
||||
Reference in New Issue
Block a user