Skip to content

Commit f28f847

Browse files
authored
feat: reduce store use (#70)
* fix: change store usage to correctly create it * chore: remove store usage where we can * chore: tweak next round handling
1 parent 06347dc commit f28f847

39 files changed

+263
-257
lines changed

src/App.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import './App.css'
22
import { routes } from './App.routes'
33
import { RouterProvider, createBrowserRouter } from 'react-router-dom'
44
import { TooltipProvider } from './features/common/components/tooltip'
5-
import { SettingsProvider } from './features/settings/components/settings-provider'
5+
import { DataProvider } from './features/common/components/data-provider'
66

77
const router = createBrowserRouter(routes)
88

99
function App() {
1010
return (
11-
<SettingsProvider>
11+
<DataProvider>
1212
<TooltipProvider>
1313
<RouterProvider router={router} />
1414
</TooltipProvider>
15-
</SettingsProvider>
15+
</DataProvider>
1616
)
1717
}
1818

src/features/accounts/data/account-result.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { atom } from 'jotai'
22
import { AccountResult, Address } from './types'
33
import { algod } from '@/features/common/data'
4-
import { atomsInAtom } from '@/features/common/data/atoms-in-atom'
4+
import { atomsInAtom } from '@/features/common/data'
55
import { assetResultsAtom } from '@/features/assets/data'
66
import { applicationResultsAtom } from '@/features/applications/data'
77

src/features/accounts/data/account-transaction-history.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ const createAccountTransactionResultsAtom = (address: Address, nextPageToken?: s
5656
export const createLoadableAccountTransactionsPage = (address: Address) => {
5757
return createLoadableViewModelPageAtom({
5858
fetchRawData: (nextPageToken?: string) => createAccountTransactionResultsAtom(address, nextPageToken),
59-
createViewModelPageAtom: (store, rawDataPage) =>
59+
createViewModelPageAtom: (rawDataPage) =>
6060
atom((get) => {
6161
return {
62-
items: get(createTransactionsAtom(store, rawDataPage.items)),
62+
items: get(createTransactionsAtom(rawDataPage.items)),
6363
hasNextPage: rawDataPage.hasNextPage,
6464
}
6565
}),

src/features/accounts/data/account.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,22 @@
1-
import { atom, useAtomValue, useStore } from 'jotai'
1+
import { atom, useAtomValue } from 'jotai'
22
import { Address } from './types'
33
import { loadable } from 'jotai/utils'
4-
import { JotaiStore } from '@/features/common/data/types'
54
import { useMemo } from 'react'
65
import { asAccount } from '../mappers'
76
import { getAccountResultAtom } from './account-result'
8-
import { createAssetResolver } from '@/features/assets/data'
7+
import { assetSummaryResolver } from '@/features/assets/data'
98

10-
const createAccountAtom = (store: JotaiStore, address: Address) => {
9+
const createAccountAtom = (address: Address) => {
1110
return atom(async (get) => {
12-
const accountResult = await get(getAccountResultAtom(store, address))
13-
return asAccount(accountResult, createAssetResolver(store))
11+
const accountResult = await get(getAccountResultAtom(address))
12+
return asAccount(accountResult, assetSummaryResolver)
1413
})
1514
}
1615

1716
const useAccountAtom = (address: Address) => {
18-
const store = useStore()
19-
2017
return useMemo(() => {
21-
return createAccountAtom(store, address)
22-
}, [store, address])
18+
return createAccountAtom(address)
19+
}, [address])
2320
}
2421

2522
export const useLoadableAccountAtom = (address: Address) => {

src/features/applications/data/application-boxes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ export const useLoadableApplicationBox = (applicationId: ApplicationId, boxName:
5151
export const createLoadableApplicationBoxesPage = (applicationId: ApplicationId) => {
5252
return createLoadableViewModelPageAtom({
5353
fetchRawData: (nextPageToken?: string) => createApplicationBoxResultsAtom(applicationId, nextPageToken),
54-
createViewModelPageAtom: (_, rawDataPage) => atom(() => rawDataPage),
54+
createViewModelPageAtom: (rawDataPage) => atom(() => rawDataPage),
5555
})
5656
}

src/features/applications/data/application-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { atomsInAtom } from '@/features/common/data/atoms-in-atom'
1+
import { atomsInAtom } from '@/features/common/data'
22
import { ApplicationMetadataResult, ApplicationResult } from './types'
33
import { indexer } from '@/features/common/data'
44
import { flattenTransactionResult } from '@/features/transactions/utils/flatten-transaction-result'

src/features/applications/data/application-result.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { algod, indexer } from '@/features/common/data'
22
import { ApplicationId, ApplicationResult } from './types'
3-
import { atomsInAtom } from '@/features/common/data/atoms-in-atom'
3+
import { atomsInAtom } from '@/features/common/data'
44
import { asError, is404 } from '@/utils/error'
55

66
const getApplicationResult = async (applicationId: ApplicationId) => {
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { JotaiStore } from '@/features/common/data/types'
21
import { ApplicationId } from './types'
32
import { atom } from 'jotai'
43
import { getApplicationResultAtom } from './application-result'
54
import { asApplicationSummary } from '../mappers'
65

7-
export const createApplicationSummaryAtom = (store: JotaiStore, applicationId: ApplicationId) => {
6+
export const createApplicationSummaryAtom = (applicationId: ApplicationId) => {
87
return atom(async (get) => {
9-
const applicationResult = await get(getApplicationResultAtom(store, applicationId))
8+
const applicationResult = await get(getApplicationResultAtom(applicationId))
109
return asApplicationSummary(applicationResult)
1110
})
1211
}

src/features/applications/data/application-transaction-history.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ const createApplicationTransactionResultsAtom = (applicationID: ApplicationId, n
5656
export const createLoadableApplicationTransactionsPage = (applicationID: ApplicationId) => {
5757
return createLoadableViewModelPageAtom({
5858
fetchRawData: (nextPageToken?: string) => createApplicationTransactionResultsAtom(applicationID, nextPageToken),
59-
createViewModelPageAtom: (store, rawDataPage) =>
59+
createViewModelPageAtom: (rawDataPage) =>
6060
atom((get) => {
6161
return {
62-
items: get(createTransactionsAtom(store, rawDataPage.items)),
62+
items: get(createTransactionsAtom(rawDataPage.items)),
6363
hasNextPage: rawDataPage.hasNextPage,
6464
}
6565
}),

src/features/applications/data/application.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
1-
import { JotaiStore } from '@/features/common/data/types'
2-
import { atom, useAtomValue, useStore } from 'jotai'
1+
import { atom, useAtomValue } from 'jotai'
32
import { asApplication } from '../mappers'
43
import { useMemo } from 'react'
54
import { loadable } from 'jotai/utils'
65
import { ApplicationId } from './types'
76
import { getApplicationResultAtom } from './application-result'
87
import { getApplicationMetadataResultAtom } from './application-metadata'
98

10-
export const createApplicationAtom = (store: JotaiStore, applicationId: ApplicationId) => {
9+
export const createApplicationAtom = (applicationId: ApplicationId) => {
1110
return atom(async (get) => {
12-
const applicationResult = await get(getApplicationResultAtom(store, applicationId))
13-
const applicationMetadata = await get(getApplicationMetadataResultAtom(store, applicationResult))
11+
const applicationResult = await get(getApplicationResultAtom(applicationId))
12+
const applicationMetadata = await get(getApplicationMetadataResultAtom(applicationResult))
1413
return asApplication(applicationResult, applicationMetadata)
1514
})
1615
}
1716

1817
const useApplicationAtom = (applicationId: ApplicationId) => {
19-
const store = useStore()
20-
2118
return useMemo(() => {
22-
return createApplicationAtom(store, applicationId)
23-
}, [store, applicationId])
19+
return createApplicationAtom(applicationId)
20+
}, [applicationId])
2421
}
2522

2623
export const useLoadableApplication = (applicationId: ApplicationId) => {

0 commit comments

Comments
 (0)