-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathonboarding-profile.store.ts
37 lines (30 loc) · 1.66 KB
/
onboarding-profile.store.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { derived, get, Readable, writable } from 'svelte/store'
import { isLedgerProfile } from '@core/profile'
import { IOnboardingProfile, IShimmerClaimingAccount } from '../interfaces'
import { IPersistedNetwork } from '@core/network'
export const onboardingProfile = writable<Partial<IOnboardingProfile>>(null)
export const isOnboardingLedgerProfile: Readable<boolean> = derived(onboardingProfile, ($onboardingProfile) =>
isLedgerProfile($onboardingProfile?.type)
)
export const onboardingProfileNetwork: Readable<IPersistedNetwork | undefined> = derived(
onboardingProfile,
($onboardingProfile) => $onboardingProfile?.network
)
export function updateOnboardingProfile(payload: Partial<IOnboardingProfile>): void {
return onboardingProfile.update((state) => ({ ...state, ...payload }))
}
export function updateShimmerClaimingAccount(shimmerClaimingAccount: IShimmerClaimingAccount): void {
let shimmerClaimingAccounts = get(onboardingProfile)?.shimmerClaimingAccounts ?? []
const claimingAccountIndex = shimmerClaimingAccount?.getMetadata()?.index
const isNewShimmerClaimingAccount = !shimmerClaimingAccounts.some(
(_shimmerClaimingAccount) => _shimmerClaimingAccount?.getMetadata()?.index === claimingAccountIndex
)
shimmerClaimingAccounts = isNewShimmerClaimingAccount
? [...shimmerClaimingAccounts, shimmerClaimingAccount]
: shimmerClaimingAccounts?.map((_shimmerClaimingAccount) =>
_shimmerClaimingAccount?.getMetadata()?.index === claimingAccountIndex
? shimmerClaimingAccount
: _shimmerClaimingAccount
)
updateOnboardingProfile({ shimmerClaimingAccounts })
}