mirror of
https://github.com/woodchen-ink/clash-and-dashboard.git
synced 2025-07-18 14:01:56 +08:00
Feature: break connections selected can be store
This commit is contained in:
parent
d330bf178e
commit
45fe1004a6
@ -1,7 +1,7 @@
|
|||||||
import produce, { Draft } from 'immer'
|
import produce, { Draft } from 'immer'
|
||||||
import { useMemo } from 'react'
|
import { useMemo } from 'react'
|
||||||
|
|
||||||
type WritableDraft<T> = (draft: Draft<T>) => void
|
export type WritableDraft<T> = (draft: Draft<T>) => void
|
||||||
|
|
||||||
export function useWarpImmerSetter<T> (setter: (f: WritableDraft<T>) => void) {
|
export function useWarpImmerSetter<T> (setter: (f: WritableDraft<T>) => void) {
|
||||||
const set = useMemo(() => {
|
const set = useMemo(() => {
|
||||||
|
@ -6,9 +6,10 @@ import { atomWithImmer } from 'jotai/immer'
|
|||||||
import { useCallback, useEffect, useMemo } from 'react'
|
import { useCallback, useEffect, useMemo } from 'react'
|
||||||
import { get } from 'lodash-es'
|
import { get } from 'lodash-es'
|
||||||
import useSWR from 'swr'
|
import useSWR from 'swr'
|
||||||
|
import produce from 'immer'
|
||||||
|
|
||||||
import { Language, locales, Lang, getDefaultLanguage } from '@i18n'
|
import { Language, locales, Lang, getDefaultLanguage } from '@i18n'
|
||||||
import { useWarpImmerSetter } from '@lib/jotai'
|
import { useWarpImmerSetter, WritableDraft } from '@lib/jotai'
|
||||||
import * as API from '@lib/request'
|
import * as API from '@lib/request'
|
||||||
import * as Models from '@models'
|
import * as Models from '@models'
|
||||||
import { partition, setLocalStorageItem } from '@lib/helper'
|
import { partition, setLocalStorageItem } from '@lib/helper'
|
||||||
@ -98,14 +99,18 @@ export function useRuleProviders () {
|
|||||||
return { providers: data ?? [], update: mutate }
|
return { providers: data ?? [], update: mutate }
|
||||||
}
|
}
|
||||||
|
|
||||||
export const config = atomWithImmer({
|
export const configAtom = atomWithStorage('profile', {
|
||||||
breakConnections: false
|
breakConnections: false
|
||||||
})
|
})
|
||||||
|
|
||||||
export function useConfig () {
|
export function useConfig () {
|
||||||
const [data, set] = useAtom(config)
|
const [data, set] = useAtom(configAtom)
|
||||||
|
|
||||||
return { data, set: useWarpImmerSetter(set) }
|
const setter = useCallback((f: WritableDraft<typeof data>) => {
|
||||||
|
set(produce(data, f))
|
||||||
|
}, [data, set])
|
||||||
|
|
||||||
|
return { data, set: useWarpImmerSetter(setter) }
|
||||||
}
|
}
|
||||||
|
|
||||||
export const proxyProvider = atom([] as API.Provider[])
|
export const proxyProvider = atom([] as API.Provider[])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user