11import { writable } from 'svelte/store' ;
22import { defaultOptions , getOptions , newProvider } from '../../storage' ;
3- import type { Options , StorageProvider } from '../../types' ;
3+ import type { Options } from '../../types' ;
44import { arraymove , getLowerIndex , getUpperIndex } from '../../utils.js' ;
55
6- const cloneProviders = ( ) =>
7- defaultOptions . storageProviders . map ( ( p ) => ( { ...p } ) ) ;
8-
96const createStore = ( ) => {
107 const { subscribe, set, update } = writable < Options > (
11- JSON . parse ( JSON . stringify ( defaultOptions ) ) ,
8+ structuredClone ( defaultOptions ) ,
129 ) ;
1310
1411 return {
@@ -22,43 +19,36 @@ const createStore = () => {
2219 removeProvider : ( indexToRemove : number ) =>
2320 update ( ( previous ) => ( {
2421 ...previous ,
25- storageProviders : [
26- ...previous . storageProviders . filter (
27- ( _provider : StorageProvider , providerIndex : number ) =>
28- providerIndex !== indexToRemove ,
29- ) ,
30- ] ,
22+ storageProviders : previous . storageProviders . filter (
23+ ( _ , i ) => i !== indexToRemove ,
24+ ) ,
3125 } ) ) ,
3226 resetProviders : ( ) =>
3327 update ( ( previous ) => ( {
3428 ...previous ,
35- storageProviders : cloneProviders ( ) ,
29+ storageProviders : defaultOptions . storageProviders . map ( ( p ) => ( {
30+ ...p ,
31+ } ) ) ,
3632 } ) ) ,
37- moveProviderUp : ( providerIndex : number ) => {
33+ moveProviderUp : ( providerIndex : number ) =>
3834 update ( ( previous ) => ( {
3935 ...previous ,
40- storageProviders : [
41- ...arraymove (
42- previous . storageProviders ,
43- providerIndex ,
44- getUpperIndex ( previous . storageProviders . length , providerIndex ) ,
45- ) ,
46- ] ,
47- } ) ) ;
48- } ,
49- moveProviderDown : ( providerIndex : number ) => {
36+ storageProviders : arraymove (
37+ previous . storageProviders ,
38+ providerIndex ,
39+ getUpperIndex ( previous . storageProviders . length , providerIndex ) ,
40+ ) ,
41+ } ) ) ,
42+ moveProviderDown : ( providerIndex : number ) =>
5043 update ( ( previous ) => ( {
5144 ...previous ,
52- storageProviders : [
53- ...arraymove (
54- previous . storageProviders ,
55- providerIndex ,
56- getLowerIndex ( previous . storageProviders . length , providerIndex ) ,
57- ) ,
58- ] ,
59- } ) ) ;
60- } ,
61- loadFromStorage : ( ) => getOptions ( ) . then ( set ) ,
45+ storageProviders : arraymove (
46+ previous . storageProviders ,
47+ providerIndex ,
48+ getLowerIndex ( previous . storageProviders . length , providerIndex ) ,
49+ ) ,
50+ } ) ) ,
51+ loadFromStorage : async ( ) => set ( await getOptions ( ) ) ,
6252 } ;
6353} ;
6454
0 commit comments