diff --git a/front/pages/_app.tsx b/front/pages/_app.tsx index 9c629ed..984b302 100644 --- a/front/pages/_app.tsx +++ b/front/pages/_app.tsx @@ -7,11 +7,10 @@ import { StoreContext } from 'redux-react-hook' import { Option } from 'tsoption' import { AppContext } from '@front/domain/AppContext' -import { WithReduxProps } from '@front/domain/store/WithReduxProps' -import { withReduxStore } from '@front/domain/store/withReduxStore' +import { WithReduxProps, withReduxStore } from '@front/domain/store' import { actions } from '@front/domain/user/reducer/data' import { getToken } from '@front/domain/user/selectors/getToken' -import { pushRoute } from '@front/pushRoute' +import { pushRoute } from '@front/features/routing' class CheckmoneyWeb extends App { public static async getInitialProps(appContext: NextAppContext) { diff --git a/front/src/domain/AppContext.ts b/front/src/domain/AppContext.ts index 0a9f955..e103f36 100644 --- a/front/src/domain/AppContext.ts +++ b/front/src/domain/AppContext.ts @@ -1,6 +1,6 @@ import { IncomingMessage, OutgoingMessage } from 'http' -import { Store } from './store/Store' +import { Store } from './store' interface Params { [key: string]: string diff --git a/front/src/domain/api/index.ts b/front/src/domain/api/index.ts new file mode 100644 index 0000000..13150bc --- /dev/null +++ b/front/src/domain/api/index.ts @@ -0,0 +1,2 @@ +export { Api } from './Api' +export { createApi } from './createApi' diff --git a/front/src/domain/store/fetchingRedux/FetchingActions.ts b/front/src/domain/fetching-redux/FetchingActions.ts similarity index 100% rename from front/src/domain/store/fetchingRedux/FetchingActions.ts rename to front/src/domain/fetching-redux/FetchingActions.ts diff --git a/front/src/domain/store/fetchingRedux/FetchingState.ts b/front/src/domain/fetching-redux/FetchingState.ts similarity index 100% rename from front/src/domain/store/fetchingRedux/FetchingState.ts rename to front/src/domain/fetching-redux/FetchingState.ts diff --git a/front/src/domain/store/fetchingRedux/createFetchingRedux.ts b/front/src/domain/fetching-redux/createFetchingRedux.ts similarity index 100% rename from front/src/domain/store/fetchingRedux/createFetchingRedux.ts rename to front/src/domain/fetching-redux/createFetchingRedux.ts diff --git a/front/src/domain/store/fetchingRedux/fetchOrFail.ts b/front/src/domain/fetching-redux/fetchOrFail.ts similarity index 77% rename from front/src/domain/store/fetchingRedux/fetchOrFail.ts rename to front/src/domain/fetching-redux/fetchOrFail.ts index b6ad0d1..bb36d81 100644 --- a/front/src/domain/store/fetchingRedux/fetchOrFail.ts +++ b/front/src/domain/fetching-redux/fetchOrFail.ts @@ -1,11 +1,11 @@ -import { AnyAction, Dispatch } from 'redux' +import { AnyAction } from 'redux' +import { ThunkDispatch } from 'redux-thunk' import { Option } from 'tsoption' -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' +import { ExtraArg, State } from '@front/domain/store' import { getToken } from '@front/domain/user/selectors/getToken' -import { State } from '../State' - interface FetchActions { request: () => AnyAction success: () => AnyAction @@ -13,7 +13,7 @@ interface FetchActions { } type Execute = ( - dispatch: Dispatch, + dispatch: ThunkDispatch, getApi: () => Api, getState: () => State, ) => Promise @@ -28,7 +28,7 @@ export const fetchOrFail = ( fetchActions: FetchActions = defaultActions, execute: Execute, ) => async ( - dispatch: Dispatch, + dispatch: ThunkDispatch, getState: () => State, createApi: (token: Option) => Api, ) => { diff --git a/front/src/domain/fetching-redux/index.ts b/front/src/domain/fetching-redux/index.ts new file mode 100644 index 0000000..2ba9725 --- /dev/null +++ b/front/src/domain/fetching-redux/index.ts @@ -0,0 +1,3 @@ +export { createFetchingStore } from './createFetchingRedux' +export { FetchingState } from './FetchingState' +export { fetchOrFail } from './fetchOrFail' diff --git a/front/src/domain/money/actions/createIncome.ts b/front/src/domain/money/actions/createIncome.ts index 77e5633..4612ecd 100644 --- a/front/src/domain/money/actions/createIncome.ts +++ b/front/src/domain/money/actions/createIncome.ts @@ -1,7 +1,6 @@ +import { fetchOrFail } from '@front/domain/fetching-redux' import { IncomeModel } from '@shared/models/money/IncomeModel' -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' - import { createIncomeRequest } from '../api/createIncomeRequest' import { actions as incomeFetchingActions } from '../reducer/createIncomeFetching' import { refetchData } from './refetchData' @@ -10,5 +9,5 @@ export const createIncome = (incomeFields: IncomeModel) => fetchOrFail(incomeFetchingActions, async (dispatch, getApi) => { await createIncomeRequest(getApi())(incomeFields) - await dispatch(refetchData() as any) + await dispatch(refetchData()) }) diff --git a/front/src/domain/money/actions/createOutcome.ts b/front/src/domain/money/actions/createOutcome.ts index 4410938..1f24a81 100644 --- a/front/src/domain/money/actions/createOutcome.ts +++ b/front/src/domain/money/actions/createOutcome.ts @@ -1,7 +1,6 @@ +import { fetchOrFail } from '@front/domain/fetching-redux' import { OutcomeModel } from '@shared/models/money/OutcomeModel' -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' - import { createOutcomeRequest } from '../api/createOutcomeRequest' import { actions as outcomeFetchingActions } from '../reducer/createOutcomeFetching' import { refetchData } from './refetchData' @@ -10,5 +9,5 @@ export const createOutcome = (outcomeFields: OutcomeModel) => fetchOrFail(outcomeFetchingActions, async (dispatch, getApi) => { await createOutcomeRequest(getApi())(outcomeFields) - await dispatch(refetchData() as any) + await dispatch(refetchData()) }) diff --git a/front/src/domain/money/actions/fetchFirstTransactionDate.ts b/front/src/domain/money/actions/fetchFirstTransactionDate.ts index 2403b94..93c8509 100644 --- a/front/src/domain/money/actions/fetchFirstTransactionDate.ts +++ b/front/src/domain/money/actions/fetchFirstTransactionDate.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { fetchFirstTransactionDateRequest } from '../api/fetchFirstTransactionDateRequest' import { actions as dataActions } from '../reducer/firstTransactionDate' diff --git a/front/src/domain/money/actions/fetchHistory.ts b/front/src/domain/money/actions/fetchHistory.ts index 86b89d2..5d6ce6f 100644 --- a/front/src/domain/money/actions/fetchHistory.ts +++ b/front/src/domain/money/actions/fetchHistory.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { GroupBy } from '@shared/enum/GroupBy' import { fetchHistoryRequest } from '../api/fetchHistoryRequest' diff --git a/front/src/domain/money/actions/fetchStats.ts b/front/src/domain/money/actions/fetchStats.ts index c3ab4e8..3ad72ba 100644 --- a/front/src/domain/money/actions/fetchStats.ts +++ b/front/src/domain/money/actions/fetchStats.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { Currency } from '@shared/enum/Currency' import { GroupBy } from '@shared/enum/GroupBy' diff --git a/front/src/domain/money/actions/forceFetchHistory.ts b/front/src/domain/money/actions/forceFetchHistory.ts index 37f36e0..dd69ee0 100644 --- a/front/src/domain/money/actions/forceFetchHistory.ts +++ b/front/src/domain/money/actions/forceFetchHistory.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { GroupBy } from '@shared/enum/GroupBy' import { fetchHistoryRequest } from '../api/fetchHistoryRequest' diff --git a/front/src/domain/money/actions/forceFetchStats.ts b/front/src/domain/money/actions/forceFetchStats.ts index 085b01a..4f468e7 100644 --- a/front/src/domain/money/actions/forceFetchStats.ts +++ b/front/src/domain/money/actions/forceFetchStats.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { Currency } from '@shared/enum/Currency' import { GroupBy } from '@shared/enum/GroupBy' diff --git a/front/src/domain/money/actions/refetchData.ts b/front/src/domain/money/actions/refetchData.ts index c05315e..ae0ec6f 100644 --- a/front/src/domain/money/actions/refetchData.ts +++ b/front/src/domain/money/actions/refetchData.ts @@ -1,4 +1,4 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { getHistoryCachedPeriods } from '../selectors/getHistoryCachedPeriods' import { getStatsCachedPeriods } from '../selectors/getStatsCachedPeriods' @@ -12,12 +12,12 @@ export const refetchData = () => const statsCachedPeriods = getStatsCachedPeriods(getState()) await Promise.all([ - dispatch(fetchFirstTransactionDate() as any), + dispatch(fetchFirstTransactionDate()), ...historyCachedPeriods.map(({ from, to, groupBy }) => - dispatch(forceFetchHistory(from, to, groupBy) as any), + dispatch(forceFetchHistory(from, to, groupBy)), ), ...statsCachedPeriods.map(({ from, to, groupBy, currency }) => - dispatch(forceFetchStats(from, to, groupBy, currency) as any), + dispatch(forceFetchStats(from, to, groupBy, currency)), ), ]) }) diff --git a/front/src/domain/money/api/createIncomeRequest.ts b/front/src/domain/money/api/createIncomeRequest.ts index ebef748..44e0c38 100644 --- a/front/src/domain/money/api/createIncomeRequest.ts +++ b/front/src/domain/money/api/createIncomeRequest.ts @@ -1,6 +1,6 @@ import { IncomeModel } from '@shared/models/money/IncomeModel' -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' export const createIncomeRequest = (api: Api) => ( income: IncomeModel, diff --git a/front/src/domain/money/api/createOutcomeRequest.ts b/front/src/domain/money/api/createOutcomeRequest.ts index 57195f0..fb262a9 100644 --- a/front/src/domain/money/api/createOutcomeRequest.ts +++ b/front/src/domain/money/api/createOutcomeRequest.ts @@ -1,6 +1,6 @@ import { OutcomeModel } from '@shared/models/money/OutcomeModel' -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' export const createOutcomeRequest = (api: Api) => ( income: OutcomeModel, diff --git a/front/src/domain/money/api/fetchFirstTransactionDateRequest.ts b/front/src/domain/money/api/fetchFirstTransactionDateRequest.ts index e4671e0..9aafae4 100644 --- a/front/src/domain/money/api/fetchFirstTransactionDateRequest.ts +++ b/front/src/domain/money/api/fetchFirstTransactionDateRequest.ts @@ -1,4 +1,4 @@ -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' import { actualizeStore } from '@front/domain/store/utils/actualizeStore' export const fetchFirstTransactionDateRequest = (api: Api) => (): Promise< diff --git a/front/src/domain/money/api/fetchHistoryRequest.ts b/front/src/domain/money/api/fetchHistoryRequest.ts index 339affa..d972e5b 100644 --- a/front/src/domain/money/api/fetchHistoryRequest.ts +++ b/front/src/domain/money/api/fetchHistoryRequest.ts @@ -1,4 +1,4 @@ -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' import { actualizeStore } from '@front/domain/store/utils/actualizeStore' import { GroupBy } from '@shared/enum/GroupBy' import { HistoryGroupModel } from '@shared/models/money/HistoryGroupModel' diff --git a/front/src/domain/money/api/fetchStatsRequest.ts b/front/src/domain/money/api/fetchStatsRequest.ts index 53fccae..fc2844f 100644 --- a/front/src/domain/money/api/fetchStatsRequest.ts +++ b/front/src/domain/money/api/fetchStatsRequest.ts @@ -1,4 +1,4 @@ -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' import { actualizeStore } from '@front/domain/store/utils/actualizeStore' import { Currency } from '@shared/enum/Currency' import { GroupBy } from '@shared/enum/GroupBy' diff --git a/front/src/domain/money/hooks/useCreateIncome.ts b/front/src/domain/money/hooks/useCreateIncome.ts deleted file mode 100644 index f7ebad6..0000000 --- a/front/src/domain/money/hooks/useCreateIncome.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useCallback } from 'react' -import { useDispatch } from 'redux-react-hook' - -import { IncomeModel } from '@shared/models/money/IncomeModel' - -import { createIncome } from '../actions/createIncome' - -export const useCreateIncome = () => { - const dispatch = useDispatch() - - return useCallback( - (income: IncomeModel): Promise => - dispatch(createIncome(income) as any), - [], - ) -} diff --git a/front/src/domain/money/hooks/useCreateOutcome.ts b/front/src/domain/money/hooks/useCreateOutcome.ts deleted file mode 100644 index c405b15..0000000 --- a/front/src/domain/money/hooks/useCreateOutcome.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useCallback } from 'react' -import { useDispatch } from 'redux-react-hook' - -import { OutcomeModel } from '@shared/models/money/OutcomeModel' - -import { createOutcome } from '../actions/createOutcome' - -export const useCreateOutcome = () => { - const dispatch = useDispatch() - - return useCallback( - (outcome: OutcomeModel): Promise => - dispatch(createOutcome(outcome) as any), - [], - ) -} diff --git a/front/src/domain/money/reducer/createIncomeFetching.ts b/front/src/domain/money/reducer/createIncomeFetching.ts index 0a19224..c65ae50 100644 --- a/front/src/domain/money/reducer/createIncomeFetching.ts +++ b/front/src/domain/money/reducer/createIncomeFetching.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/money/reducer/createOutcomeFetching.ts b/front/src/domain/money/reducer/createOutcomeFetching.ts index 41acf34..4fce288 100644 --- a/front/src/domain/money/reducer/createOutcomeFetching.ts +++ b/front/src/domain/money/reducer/createOutcomeFetching.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/money/reducer/historyFetching.ts b/front/src/domain/money/reducer/historyFetching.ts index 213e34d..3bd095c 100644 --- a/front/src/domain/money/reducer/historyFetching.ts +++ b/front/src/domain/money/reducer/historyFetching.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/money/reducer/statsFetching.ts b/front/src/domain/money/reducer/statsFetching.ts index 140b62f..82aa397 100644 --- a/front/src/domain/money/reducer/statsFetching.ts +++ b/front/src/domain/money/reducer/statsFetching.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/money/selectors/getCreateIncomeFetching.ts b/front/src/domain/money/selectors/getCreateIncomeFetching.ts index d538727..190b189 100644 --- a/front/src/domain/money/selectors/getCreateIncomeFetching.ts +++ b/front/src/domain/money/selectors/getCreateIncomeFetching.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getCreateIncomeFetching = (state: State) => state.money.createIncomeFetching diff --git a/front/src/domain/money/selectors/getCreateOutcomeFetching.ts b/front/src/domain/money/selectors/getCreateOutcomeFetching.ts index f7d6ea9..5d60114 100644 --- a/front/src/domain/money/selectors/getCreateOutcomeFetching.ts +++ b/front/src/domain/money/selectors/getCreateOutcomeFetching.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getCreateOutcomeFetching = (state: State) => state.money.createOutcomeFetching diff --git a/front/src/domain/money/selectors/getFirstTransactionDate.ts b/front/src/domain/money/selectors/getFirstTransactionDate.ts index 3bf4946..07cc214 100644 --- a/front/src/domain/money/selectors/getFirstTransactionDate.ts +++ b/front/src/domain/money/selectors/getFirstTransactionDate.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getFirstTransactionDate = (state: State) => state.money.firstTransactionDate diff --git a/front/src/domain/money/selectors/getHistory.ts b/front/src/domain/money/selectors/getHistory.ts index 03035c9..67a9be9 100644 --- a/front/src/domain/money/selectors/getHistory.ts +++ b/front/src/domain/money/selectors/getHistory.ts @@ -1,6 +1,6 @@ import { Option } from 'tsoption' -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' import { GroupBy } from '@shared/enum/GroupBy' import { createHistoryKey } from '../helpers/createHistoryKey' diff --git a/front/src/domain/money/selectors/getHistoryCachedPeriods.ts b/front/src/domain/money/selectors/getHistoryCachedPeriods.ts index 2283e8a..1442c89 100644 --- a/front/src/domain/money/selectors/getHistoryCachedPeriods.ts +++ b/front/src/domain/money/selectors/getHistoryCachedPeriods.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getHistoryCachedPeriods = (state: State) => state.money.history.cachedPeriods diff --git a/front/src/domain/money/selectors/getHistoryFetchingStatus.ts b/front/src/domain/money/selectors/getHistoryFetchingStatus.ts index 8d96e81..b58feb1 100644 --- a/front/src/domain/money/selectors/getHistoryFetchingStatus.ts +++ b/front/src/domain/money/selectors/getHistoryFetchingStatus.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getHistoryFetchingStatus = (state: State) => state.money.historyFetching diff --git a/front/src/domain/money/selectors/getStats.ts b/front/src/domain/money/selectors/getStats.ts index e86dd8a..235c35c 100644 --- a/front/src/domain/money/selectors/getStats.ts +++ b/front/src/domain/money/selectors/getStats.ts @@ -1,6 +1,6 @@ import { Option } from 'tsoption' -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' import { Currency } from '@shared/enum/Currency' import { GroupBy } from '@shared/enum/GroupBy' import { createStatsKey } from '../helpers/createStatsKey' diff --git a/front/src/domain/money/selectors/getStatsCachedPeriods.ts b/front/src/domain/money/selectors/getStatsCachedPeriods.ts index a04eae9..8c843a6 100644 --- a/front/src/domain/money/selectors/getStatsCachedPeriods.ts +++ b/front/src/domain/money/selectors/getStatsCachedPeriods.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getStatsCachedPeriods = (state: State) => state.money.stats.cachedPeriods diff --git a/front/src/domain/money/selectors/getStatsFetchingStatus.ts b/front/src/domain/money/selectors/getStatsFetchingStatus.ts index aa46326..1fe1acc 100644 --- a/front/src/domain/money/selectors/getStatsFetchingStatus.ts +++ b/front/src/domain/money/selectors/getStatsFetchingStatus.ts @@ -1,4 +1,4 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getStatsFetchingStatus = (state: State) => state.money.statsFetching diff --git a/front/src/domain/store/ExtraArg.ts b/front/src/domain/store/ExtraArg.ts new file mode 100644 index 0000000..e66f962 --- /dev/null +++ b/front/src/domain/store/ExtraArg.ts @@ -0,0 +1,5 @@ +import { Option } from 'tsoption' + +import { Api } from '../api' + +export type ExtraArg = (token: Option) => Api diff --git a/front/src/domain/store/index.ts b/front/src/domain/store/index.ts new file mode 100644 index 0000000..a1afc17 --- /dev/null +++ b/front/src/domain/store/index.ts @@ -0,0 +1,6 @@ +export { State } from './State' +export { Store } from './Store' +export { WithReduxProps } from './WithReduxProps' +export { withReduxStore } from './withReduxStore' +export { useThunk } from './useThunk' +export { ExtraArg } from './ExtraArg' diff --git a/front/src/domain/store/initializeStore.ts b/front/src/domain/store/initializeStore.ts index 198b00b..b1f69c4 100644 --- a/front/src/domain/store/initializeStore.ts +++ b/front/src/domain/store/initializeStore.ts @@ -2,7 +2,7 @@ import { applyMiddleware, createStore } from 'redux' import { composeWithDevTools } from 'redux-devtools-extension' import thunk from 'redux-thunk' -import { createApi } from '@front/domain/api/createApi' +import { createApi } from '@front/domain/api' import { reducer } from './reducer' import { State } from './State' diff --git a/front/src/domain/store/useThunk.ts b/front/src/domain/store/useThunk.ts new file mode 100644 index 0000000..091d64f --- /dev/null +++ b/front/src/domain/store/useThunk.ts @@ -0,0 +1,14 @@ +import { AnyAction } from 'redux' +import { useDispatch } from 'redux-react-hook' +import { ThunkAction } from 'redux-thunk' + +import { ExtraArg } from './ExtraArg' +import { State } from './State' + +export const useThunk = () => { + const dispatch = useDispatch() + + return >( + action: ThunkAction, + ) => dispatch(action as any) +} diff --git a/front/src/domain/user/actions/signIn.ts b/front/src/domain/user/actions/signIn.ts index 92b73b0..d455376 100644 --- a/front/src/domain/user/actions/signIn.ts +++ b/front/src/domain/user/actions/signIn.ts @@ -1,9 +1,9 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { signIn as signInRequest } from '../api/signIn' +import { setCookie } from '../helpers/setCookie' import { actions as dataActions } from '../reducer/data' import { actions as signInActions } from '../reducer/signIn' -import { setCookie } from '../setCookie' const { setToken } = dataActions diff --git a/front/src/domain/user/actions/signUp.ts b/front/src/domain/user/actions/signUp.ts index f3de77c..1cf7a3a 100644 --- a/front/src/domain/user/actions/signUp.ts +++ b/front/src/domain/user/actions/signUp.ts @@ -1,9 +1,9 @@ -import { fetchOrFail } from '@front/domain/store/fetchingRedux/fetchOrFail' +import { fetchOrFail } from '@front/domain/fetching-redux' import { signUp as signUpRequest } from '../api/signUp' +import { setCookie } from '../helpers/setCookie' import { actions as dataActions } from '../reducer/data' import { actions as signUpActions } from '../reducer/signUp' -import { setCookie } from '../setCookie' const { setToken } = dataActions diff --git a/front/src/domain/user/api/signIn.ts b/front/src/domain/user/api/signIn.ts index 88a7eb0..46519ea 100644 --- a/front/src/domain/user/api/signIn.ts +++ b/front/src/domain/user/api/signIn.ts @@ -1,6 +1,6 @@ import { TokenModel } from '@shared/models/user/TokenModel' -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' export const signIn = (api: Api) => ( email: string, diff --git a/front/src/domain/user/api/signUp.ts b/front/src/domain/user/api/signUp.ts index 46a265a..d8258ae 100644 --- a/front/src/domain/user/api/signUp.ts +++ b/front/src/domain/user/api/signUp.ts @@ -1,6 +1,6 @@ import { TokenModel } from '@shared/models/user/TokenModel' -import { Api } from '@front/domain/api/Api' +import { Api } from '@front/domain/api' export const signUp = (api: Api) => ( email: string, diff --git a/front/src/domain/user/setCookie.ts b/front/src/domain/user/helpers/setCookie.ts similarity index 100% rename from front/src/domain/user/setCookie.ts rename to front/src/domain/user/helpers/setCookie.ts diff --git a/front/src/domain/user/hooks/useSignIn.ts b/front/src/domain/user/hooks/useSignIn.ts deleted file mode 100644 index 1ea5cde..0000000 --- a/front/src/domain/user/hooks/useSignIn.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useCallback } from 'react' -import { useDispatch } from 'redux-react-hook' - -import { signIn } from '@front/domain/user/actions/signIn' - -export const useSignIn = () => { - const dispatch = useDispatch() - - return useCallback( - (login: string, password: string): Promise => - dispatch(signIn(login, password) as any), - [], - ) -} diff --git a/front/src/domain/user/hooks/useSignUp.ts b/front/src/domain/user/hooks/useSignUp.ts deleted file mode 100644 index 7811893..0000000 --- a/front/src/domain/user/hooks/useSignUp.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useCallback } from 'react' -import { useDispatch } from 'redux-react-hook' - -import { signUp } from '@front/domain/user/actions/signUp' - -export const useSignUp = () => { - const dispatch = useDispatch() - - return useCallback( - (login: string, password: string): Promise => - dispatch(signUp(login, password) as any), - [], - ) -} diff --git a/front/src/domain/user/reducer/signIn.ts b/front/src/domain/user/reducer/signIn.ts index d23e102..5aeb153 100644 --- a/front/src/domain/user/reducer/signIn.ts +++ b/front/src/domain/user/reducer/signIn.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/user/reducer/signUp.ts b/front/src/domain/user/reducer/signUp.ts index 02e744a..7c59e6b 100644 --- a/front/src/domain/user/reducer/signUp.ts +++ b/front/src/domain/user/reducer/signUp.ts @@ -1,5 +1,7 @@ -import { createFetchingStore } from '@front/domain/store/fetchingRedux/createFetchingRedux' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { + createFetchingStore, + FetchingState, +} from '@front/domain/fetching-redux' type State = FetchingState diff --git a/front/src/domain/user/selectors/getSignInFetching.ts b/front/src/domain/user/selectors/getSignInFetching.ts index e2f441c..e870666 100644 --- a/front/src/domain/user/selectors/getSignInFetching.ts +++ b/front/src/domain/user/selectors/getSignInFetching.ts @@ -1,3 +1,3 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getSignInFetching = (state: State) => state.user.signIn diff --git a/front/src/domain/user/selectors/getSignUpFetching.ts b/front/src/domain/user/selectors/getSignUpFetching.ts index 9a9a79b..76c18fc 100644 --- a/front/src/domain/user/selectors/getSignUpFetching.ts +++ b/front/src/domain/user/selectors/getSignUpFetching.ts @@ -1,3 +1,3 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getSignUpFetching = (state: State) => state.user.signUp diff --git a/front/src/domain/user/selectors/getToken.ts b/front/src/domain/user/selectors/getToken.ts index af6db8e..64aa667 100644 --- a/front/src/domain/user/selectors/getToken.ts +++ b/front/src/domain/user/selectors/getToken.ts @@ -1,3 +1,3 @@ -import { State } from '@front/domain/store/State' +import { State } from '@front/domain/store' export const getToken = (state: State) => state.user.data.token diff --git a/front/src/features/app/components/Header/index.ts b/front/src/features/app/components/Header/index.ts new file mode 100644 index 0000000..e0e2673 --- /dev/null +++ b/front/src/features/app/components/Header/index.ts @@ -0,0 +1 @@ +export { Header } from './Header' diff --git a/front/src/features/app/features/create/create-income/CreateIncome.tsx b/front/src/features/app/features/create/create-income/CreateIncome.tsx index d3d69dc..545c188 100644 --- a/front/src/features/app/features/create/create-income/CreateIncome.tsx +++ b/front/src/features/app/features/create/create-income/CreateIncome.tsx @@ -2,8 +2,9 @@ import { useCallback } from 'react' import { Form } from 'react-final-form' import { useMappedState } from 'redux-react-hook' -import { useCreateIncome } from '@front/domain/money/hooks/useCreateIncome' +import { createIncome } from '@front/domain/money/actions/createIncome' import { getCreateIncomeFetching } from '@front/domain/money/selectors/getCreateIncomeFetching' +import { useThunk } from '@front/domain/store' import { DatePicker, EnumSelect, @@ -11,9 +12,9 @@ import { InputMoney, } from '@front/features/final-form' import { getCurrencyName } from '@front/helpers/getCurrencyName' -import { Label } from '@front/ui/atoms/label' -import { LoadingButton } from '@front/ui/atoms/loading-button' -import { Card } from '@front/ui/molecules/card' +import { Label } from '@front/ui/components/form/label' +import { LoadingButton } from '@front/ui/components/form/loading-button' +import { Card } from '@front/ui/components/layout/card' import { Currency } from '@shared/enum/Currency' import { IncomeModel } from '@shared/models/money/IncomeModel' @@ -24,7 +25,7 @@ interface Props { } export const CreateIncome = ({ className }: Props) => { - const create = useCreateIncome() + const dispatch = useThunk() const fieldsToIncomeModel = useCallback( ({ amount, source, currency, date }: any): IncomeModel => ({ @@ -38,7 +39,7 @@ export const CreateIncome = ({ className }: Props) => { const onSubmit = useCallback(async fields => { const income = fieldsToIncomeModel(fields) - await create(income) + await dispatch(createIncome(income)) }, []) const fetching = useMappedState(getCreateIncomeFetching) diff --git a/front/src/features/app/features/create/create-outcome/CreateOutcome.tsx b/front/src/features/app/features/create/create-outcome/CreateOutcome.tsx index c5118cf..38e6abb 100644 --- a/front/src/features/app/features/create/create-outcome/CreateOutcome.tsx +++ b/front/src/features/app/features/create/create-outcome/CreateOutcome.tsx @@ -2,8 +2,9 @@ import { useCallback } from 'react' import { Form } from 'react-final-form' import { useMappedState } from 'redux-react-hook' -import { useCreateOutcome } from '@front/domain/money/hooks/useCreateOutcome' +import { createOutcome } from '@front/domain/money/actions/createOutcome' import { getCreateOutcomeFetching } from '@front/domain/money/selectors/getCreateOutcomeFetching' +import { useThunk } from '@front/domain/store' import { DatePicker, EnumSelect, @@ -11,9 +12,9 @@ import { InputMoney, } from '@front/features/final-form' import { getCurrencyName } from '@front/helpers/getCurrencyName' -import { Label } from '@front/ui/atoms/label' -import { LoadingButton } from '@front/ui/atoms/loading-button' -import { Card } from '@front/ui/molecules/card' +import { Label } from '@front/ui/components/form/label' +import { LoadingButton } from '@front/ui/components/form/loading-button' +import { Card } from '@front/ui/components/layout/card' import { Currency } from '@shared/enum/Currency' import { OutcomeModel } from '@shared/models/money/OutcomeModel' @@ -24,7 +25,7 @@ interface Props { } export const CreateOutcome = ({ className }: Props) => { - const create = useCreateOutcome() + const dispath = useThunk() const fieldsToOutcomeModel = useCallback( ({ amount, category, currency, date }: any): OutcomeModel => ({ @@ -38,7 +39,7 @@ export const CreateOutcome = ({ className }: Props) => { const onSubmit = useCallback(async fields => { const outcome = fieldsToOutcomeModel(fields) - await create(outcome) + await dispath(createOutcome(outcome)) }, []) const fetching = useMappedState(getCreateOutcomeFetching) diff --git a/front/src/features/app/features/history/History.tsx b/front/src/features/app/features/history/History.tsx index 39af903..7ae39d1 100644 --- a/front/src/features/app/features/history/History.tsx +++ b/front/src/features/app/features/history/History.tsx @@ -1,18 +1,19 @@ import { endOfMonth, startOfMonth } from 'date-fns' import { useCallback, useEffect, useMemo, useState } from 'react' -import { useDispatch, useMappedState } from 'redux-react-hook' +import { useMappedState } from 'redux-react-hook' import { fetchHistory } from '@front/domain/money/actions/fetchHistory' import { getHistory } from '@front/domain/money/selectors/getHistory' import { getHistoryFetchingStatus } from '@front/domain/money/selectors/getHistoryFetchingStatus' -import { Loader } from '@front/ui/molecules/loader' -import { Period } from '@front/ui/organisms/period' +import { useThunk } from '@front/domain/store' +import { Period } from '@front/ui/components/form/period' +import { Loader } from '@front/ui/components/layout/loader' import { GroupBy } from '@shared/enum/GroupBy' -import { Header } from '../../components/Header/Header' +import { Header } from '../../components/header' +import { Incomes } from './components/Incomes' +import { Outcomes } from './components/Outcomes' import * as styles from './History.css' -import { Incomes } from './organisms/Incomes' -import { Outcomes } from './organisms/Outcomes' interface Props { className?: string @@ -22,7 +23,7 @@ const groupBy = GroupBy.Month export const History = ({ className }: Props) => { const fetching = useMappedState(getHistoryFetchingStatus) - const dispatch = useDispatch() + const dispatch = useThunk() const [from, setFrom] = useState(startOfMonth(new Date())) const [to, setTo] = useState(endOfMonth(new Date())) @@ -40,7 +41,7 @@ export const History = ({ className }: Props) => { useEffect( () => { - dispatch(fetchHistory(actualFrom, actualTo, groupBy) as any) + dispatch(fetchHistory(actualFrom, actualTo, groupBy)) }, [actualFrom, actualTo], ) diff --git a/front/src/features/app/features/history/organisms/Incomes.tsx b/front/src/features/app/features/history/components/Incomes.tsx similarity index 92% rename from front/src/features/app/features/history/organisms/Incomes.tsx rename to front/src/features/app/features/history/components/Incomes.tsx index e0485e4..adecd0d 100644 --- a/front/src/features/app/features/history/organisms/Incomes.tsx +++ b/front/src/features/app/features/history/components/Incomes.tsx @@ -1,6 +1,6 @@ import { displayMoney } from '@front/helpers/displayMoney' import { displayNullableDate } from '@front/helpers/displayNullableDtae' -import { Table } from '@front/ui/molecules/table' +import { Table } from '@front/ui/components/layout/table' import { IncomeModel } from '@shared/models/money/IncomeModel' interface Props { diff --git a/front/src/features/app/features/history/organisms/Outcomes.tsx b/front/src/features/app/features/history/components/Outcomes.tsx similarity index 92% rename from front/src/features/app/features/history/organisms/Outcomes.tsx rename to front/src/features/app/features/history/components/Outcomes.tsx index 1fd9211..a140e48 100644 --- a/front/src/features/app/features/history/organisms/Outcomes.tsx +++ b/front/src/features/app/features/history/components/Outcomes.tsx @@ -1,6 +1,6 @@ import { displayMoney } from '@front/helpers/displayMoney' import { displayNullableDate } from '@front/helpers/displayNullableDtae' -import { Table } from '@front/ui/molecules/table' +import { Table } from '@front/ui/components/layout/table' import { OutcomeModel } from '@shared/models/money/OutcomeModel' interface Props { diff --git a/front/src/features/app/features/stats/Stats.tsx b/front/src/features/app/features/stats/Stats.tsx index 6fd0a9f..f8b7b64 100644 --- a/front/src/features/app/features/stats/Stats.tsx +++ b/front/src/features/app/features/stats/Stats.tsx @@ -1,20 +1,21 @@ import { endOfYear, format, startOfYear } from 'date-fns' import { useCallback, useEffect, useMemo, useState } from 'react' -import { useDispatch, useMappedState } from 'redux-react-hook' +import { useMappedState } from 'redux-react-hook' import { fetchStats } from '@front/domain/money/actions/fetchStats' import { getFirstTransactionDate } from '@front/domain/money/selectors/getFirstTransactionDate' import { getStats } from '@front/domain/money/selectors/getStats' import { getStatsFetchingStatus } from '@front/domain/money/selectors/getStatsFetchingStatus' +import { useThunk } from '@front/domain/store' import { displayMoney } from '@front/helpers/displayMoney' -import { Loader } from '@front/ui/molecules/loader' -import { BarChart } from '@front/ui/organisms/bar-char' -import { Period } from '@front/ui/organisms/period' +import { BarChart } from '@front/ui/components/chart/bar-chart' +import { Period } from '@front/ui/components/form/period' +import { Loader } from '@front/ui/components/layout/loader' import { Currency } from '@shared/enum/Currency' import { GroupBy } from '@shared/enum/GroupBy' -import { Header } from '../../components/Header/Header' -import { CurrencySwitch } from './organisms/CurrencySwitch' +import { Header } from '../../components/header' +import { CurrencySwitch } from './components/currency-switch' const groupBy = GroupBy.Year @@ -25,7 +26,7 @@ interface Props { export const Stats = ({ className }: Props) => { const firstTransactionDate = useMappedState(getFirstTransactionDate) const fetching = useMappedState(getStatsFetchingStatus) - const dispatch = useDispatch() + const dispatch = useThunk() const [from, setFrom] = useState(startOfYear(firstTransactionDate)) const [to, setTo] = useState(endOfYear(new Date())) @@ -44,7 +45,7 @@ export const Stats = ({ className }: Props) => { useEffect( () => { - dispatch(fetchStats(actualFrom, actualTo, groupBy, currency) as any) + dispatch(fetchStats(actualFrom, actualTo, groupBy, currency)) }, [actualFrom, actualTo, currency], ) diff --git a/front/src/features/app/features/stats/organisms/CurrencySwitch.tsx b/front/src/features/app/features/stats/components/currency-switch.tsx similarity index 91% rename from front/src/features/app/features/stats/organisms/CurrencySwitch.tsx rename to front/src/features/app/features/stats/components/currency-switch.tsx index 529fb77..c3e5a65 100644 --- a/front/src/features/app/features/stats/organisms/CurrencySwitch.tsx +++ b/front/src/features/app/features/stats/components/currency-switch.tsx @@ -1,7 +1,7 @@ import { useCallback } from 'react' import { getCurrencyName } from '@front/helpers/getCurrencyName' -import { EnumSelect } from '@front/ui/molecules/select' +import { EnumSelect } from '@front/ui/components/form/select' import { Currency } from '@shared/enum/Currency' interface Props { diff --git a/front/src/features/final-form/components/DatePicker.tsx b/front/src/features/final-form/components/DatePicker.tsx index 70e9de7..adfa844 100644 --- a/front/src/features/final-form/components/DatePicker.tsx +++ b/front/src/features/final-form/components/DatePicker.tsx @@ -4,7 +4,7 @@ import { Diff } from 'utility-types' import { DatePicker as JustDatePicker, DatePickerProps, -} from '@front/ui/molecules/date-picker' +} from '@front/ui/components/form/date-picker' interface OwnProps { name: string diff --git a/front/src/features/final-form/components/EnumSelect.tsx b/front/src/features/final-form/components/EnumSelect.tsx index e5f3235..10e439d 100644 --- a/front/src/features/final-form/components/EnumSelect.tsx +++ b/front/src/features/final-form/components/EnumSelect.tsx @@ -4,7 +4,7 @@ import { Diff } from 'utility-types' import { EnumSelect as JustEnumSelect, EnumSelectProps, -} from '@front/ui/molecules/select' +} from '@front/ui/components/form/select' interface OwnProps { name: string diff --git a/front/src/features/final-form/components/Input.tsx b/front/src/features/final-form/components/Input.tsx index df93511..9e1d154 100644 --- a/front/src/features/final-form/components/Input.tsx +++ b/front/src/features/final-form/components/Input.tsx @@ -1,7 +1,7 @@ import { Field, FieldRenderProps } from 'react-final-form' import { Diff } from 'utility-types' -import { Input as JustInput, InputProps } from '@front/ui/atoms/input' +import { Input as JustInput, InputProps } from '@front/ui/components/form/input' interface OwnProps { name: string diff --git a/front/src/features/final-form/components/InputMoney.tsx b/front/src/features/final-form/components/InputMoney.tsx index f90acc4..5fc6aca 100644 --- a/front/src/features/final-form/components/InputMoney.tsx +++ b/front/src/features/final-form/components/InputMoney.tsx @@ -4,7 +4,7 @@ import { Diff } from 'utility-types' import { InputMoney as JustInputMoney, InputMoneyProps, -} from '@front/ui/atoms/input-money' +} from '@front/ui/components/form/input-money' interface OwnProps { name: string diff --git a/front/src/features/final-form/components/Select.tsx b/front/src/features/final-form/components/Select.tsx index fb148d9..39449ae 100644 --- a/front/src/features/final-form/components/Select.tsx +++ b/front/src/features/final-form/components/Select.tsx @@ -1,7 +1,10 @@ import { Field, FieldRenderProps } from 'react-final-form' import { Diff } from 'utility-types' -import { Select as JustSelect, SelectProps } from '@front/ui/molecules/select' +import { + Select as JustSelect, + SelectProps, +} from '@front/ui/components/form/select' interface OwnProps { name: string diff --git a/front/src/features/hello/Hello.tsx b/front/src/features/hello/Hello.tsx index a8fa16f..89d4a88 100644 --- a/front/src/features/hello/Hello.tsx +++ b/front/src/features/hello/Hello.tsx @@ -1,9 +1,11 @@ -import { pushRoute } from '@front/pushRoute' -import { Button } from '@front/ui/atoms/button' +import { pushRoute, useRoutePrefetching } from '@front/features/routing' +import { Button } from '@front/ui/components/form/button' import * as styles from './Hello.css' export const Hello = () => { + useRoutePrefetching(['/app']) + return (

diff --git a/front/src/features/landing/Landing.tsx b/front/src/features/landing/Landing.tsx index 595ef99..b8572cd 100644 --- a/front/src/features/landing/Landing.tsx +++ b/front/src/features/landing/Landing.tsx @@ -1,9 +1,14 @@ +import { useRoutePrefetching } from '../routing' import { SignIn } from './features/sign-in' import { SignUp } from './features/sign-up' -export const Landing = () => ( - <> - - - -) +export const Landing = () => { + useRoutePrefetching(['/hello', '/app']) + + return ( + <> + + + + ) +} diff --git a/front/src/features/landing/features/sign-in/SignIn.tsx b/front/src/features/landing/features/sign-in/SignIn.tsx index 7e6c948..4a5adae 100644 --- a/front/src/features/landing/features/sign-in/SignIn.tsx +++ b/front/src/features/landing/features/sign-in/SignIn.tsx @@ -2,22 +2,23 @@ import { useCallback } from 'react' import { Form } from 'react-final-form' import { useMappedState } from 'redux-react-hook' -import { useSignIn } from '@front/domain/user/hooks/useSignIn' +import { useThunk } from '@front/domain/store' +import { signIn } from '@front/domain/user/actions/signIn' import { getSignInFetching } from '@front/domain/user/selectors/getSignInFetching' import { Input } from '@front/features/final-form' -import { pushRoute } from '@front/pushRoute' -import { InputType } from '@front/ui/atoms/input/InputType' -import { Label } from '@front/ui/atoms/label' -import { LoadingButton } from '@front/ui/atoms/loading-button' -import { Card } from '@front/ui/molecules/card' +import { pushRoute } from '@front/features/routing' +import { InputType } from '@front/ui/components/form/input/InputType' +import { Label } from '@front/ui/components/form/label' +import { LoadingButton } from '@front/ui/components/form/loading-button' +import { Card } from '@front/ui/components/layout/card' import * as styles from '../SignForm.css' export const SignIn = () => { - const signIn = useSignIn() + const dispatch = useThunk() const onSubmit = useCallback(async ({ email, password }) => { - await signIn(email, password) + await dispatch(signIn(email, password)) await pushRoute('/app') }, []) diff --git a/front/src/features/landing/features/sign-up/SignUp.tsx b/front/src/features/landing/features/sign-up/SignUp.tsx index 6ea48e4..b656496 100644 --- a/front/src/features/landing/features/sign-up/SignUp.tsx +++ b/front/src/features/landing/features/sign-up/SignUp.tsx @@ -2,22 +2,23 @@ import { useCallback } from 'react' import { Form } from 'react-final-form' import { useMappedState } from 'redux-react-hook' -import { useSignUp } from '@front/domain/user/hooks/useSignUp' +import { useThunk } from '@front/domain/store' +import { signUp } from '@front/domain/user/actions/signUp' import { getSignUpFetching } from '@front/domain/user/selectors/getSignUpFetching' import { Input } from '@front/features/final-form' -import { pushRoute } from '@front/pushRoute' -import { InputType } from '@front/ui/atoms/input/InputType' -import { Label } from '@front/ui/atoms/label' -import { LoadingButton } from '@front/ui/atoms/loading-button' -import { Card } from '@front/ui/molecules/card' +import { pushRoute } from '@front/features/routing' +import { InputType } from '@front/ui/components/form/input/InputType' +import { Label } from '@front/ui/components/form/label' +import { LoadingButton } from '@front/ui/components/form/loading-button' +import { Card } from '@front/ui/components/layout/card' import * as styles from '../SignForm.css' export const SignUp = () => { - const signUp = useSignUp() + const dispatch = useThunk() const onSubmit = useCallback(async ({ email, password }) => { - await signUp(email, password) + await dispatch(signUp(email, password)) await pushRoute('/hello') }, []) diff --git a/front/src/Link.tsx b/front/src/features/routing/Link.tsx similarity index 85% rename from front/src/Link.tsx rename to front/src/features/routing/Link.tsx index a2cf17c..1d25d6c 100644 --- a/front/src/Link.tsx +++ b/front/src/features/routing/Link.tsx @@ -1,6 +1,6 @@ import { ReactChild, ReactFragment } from 'react' -import NextRoutes from '../routes' +import NextRoutes from '../../../routes' interface Props { route?: string diff --git a/front/src/features/routing/index.ts b/front/src/features/routing/index.ts new file mode 100644 index 0000000..ebc2026 --- /dev/null +++ b/front/src/features/routing/index.ts @@ -0,0 +1,3 @@ +export { Link } from './Link' +export { pushRoute } from './pushRoute' +export { useRoutePrefetching } from './useRoutePrefetching' diff --git a/front/src/features/routing/prefetchRoute.ts b/front/src/features/routing/prefetchRoute.ts new file mode 100644 index 0000000..1e97010 --- /dev/null +++ b/front/src/features/routing/prefetchRoute.ts @@ -0,0 +1,4 @@ +import NextRoutes from '../../../routes' + +export const prefetchRoute = async (route: string): Promise => + NextRoutes.Router.prefetchRoute(route) diff --git a/front/src/pushRoute.ts b/front/src/features/routing/pushRoute.ts similarity index 81% rename from front/src/pushRoute.ts rename to front/src/features/routing/pushRoute.ts index 95b2406..c3e20b6 100644 --- a/front/src/pushRoute.ts +++ b/front/src/features/routing/pushRoute.ts @@ -1,7 +1,7 @@ import { Option } from 'tsoption' -import NextRoutes from '../routes' -import { AppContext } from './domain/AppContext' +import NextRoutes from '../../../routes' +import { AppContext } from '../../domain/AppContext' const redirectOnServer = (route: string, context: AppContext) => { context.res.writeHead(302, { Location: route }) diff --git a/front/src/features/routing/useRoutePrefetching.ts b/front/src/features/routing/useRoutePrefetching.ts new file mode 100644 index 0000000..5eccc39 --- /dev/null +++ b/front/src/features/routing/useRoutePrefetching.ts @@ -0,0 +1,9 @@ +import { useEffect } from 'react' + +import { prefetchRoute } from './prefetchRoute' + +export const useRoutePrefetching = (paths: string[]) => { + useEffect(() => { + paths.forEach(prefetchRoute) + }, []) +} diff --git a/front/src/ui/organisms/bar-char/BarChart.tsx b/front/src/ui/components/chart/bar-chart/BarChart.tsx similarity index 100% rename from front/src/ui/organisms/bar-char/BarChart.tsx rename to front/src/ui/components/chart/bar-chart/BarChart.tsx diff --git a/front/src/ui/organisms/bar-char/index.ts b/front/src/ui/components/chart/bar-chart/index.ts similarity index 100% rename from front/src/ui/organisms/bar-char/index.ts rename to front/src/ui/components/chart/bar-chart/index.ts diff --git a/front/src/ui/atoms/button/Button.tsx b/front/src/ui/components/form/button/Button.tsx similarity index 100% rename from front/src/ui/atoms/button/Button.tsx rename to front/src/ui/components/form/button/Button.tsx diff --git a/front/src/ui/atoms/button/ButtonProps.tsx b/front/src/ui/components/form/button/ButtonProps.tsx similarity index 100% rename from front/src/ui/atoms/button/ButtonProps.tsx rename to front/src/ui/components/form/button/ButtonProps.tsx diff --git a/front/src/ui/atoms/button/helpers/resolveType.ts b/front/src/ui/components/form/button/helpers/resolveType.ts similarity index 100% rename from front/src/ui/atoms/button/helpers/resolveType.ts rename to front/src/ui/components/form/button/helpers/resolveType.ts diff --git a/front/src/ui/atoms/button/index.ts b/front/src/ui/components/form/button/index.ts similarity index 100% rename from front/src/ui/atoms/button/index.ts rename to front/src/ui/components/form/button/index.ts diff --git a/front/src/ui/molecules/date-picker/DatePicker.css b/front/src/ui/components/form/date-picker/DatePicker.css similarity index 100% rename from front/src/ui/molecules/date-picker/DatePicker.css rename to front/src/ui/components/form/date-picker/DatePicker.css diff --git a/front/src/ui/molecules/date-picker/DatePicker.tsx b/front/src/ui/components/form/date-picker/DatePicker.tsx similarity index 100% rename from front/src/ui/molecules/date-picker/DatePicker.tsx rename to front/src/ui/components/form/date-picker/DatePicker.tsx diff --git a/front/src/ui/molecules/date-picker/DatePickerProps.ts b/front/src/ui/components/form/date-picker/DatePickerProps.ts similarity index 100% rename from front/src/ui/molecules/date-picker/DatePickerProps.ts rename to front/src/ui/components/form/date-picker/DatePickerProps.ts diff --git a/front/src/ui/molecules/date-picker/index.ts b/front/src/ui/components/form/date-picker/index.ts similarity index 100% rename from front/src/ui/molecules/date-picker/index.ts rename to front/src/ui/components/form/date-picker/index.ts diff --git a/front/src/ui/atoms/input-money/InputMoney.css b/front/src/ui/components/form/input-money/InputMoney.css similarity index 100% rename from front/src/ui/atoms/input-money/InputMoney.css rename to front/src/ui/components/form/input-money/InputMoney.css diff --git a/front/src/ui/atoms/input-money/InputMoney.tsx b/front/src/ui/components/form/input-money/InputMoney.tsx similarity index 100% rename from front/src/ui/atoms/input-money/InputMoney.tsx rename to front/src/ui/components/form/input-money/InputMoney.tsx diff --git a/front/src/ui/atoms/input-money/InputMoneyProps.tsx b/front/src/ui/components/form/input-money/InputMoneyProps.tsx similarity index 100% rename from front/src/ui/atoms/input-money/InputMoneyProps.tsx rename to front/src/ui/components/form/input-money/InputMoneyProps.tsx diff --git a/front/src/ui/atoms/input-money/helpers/format.ts b/front/src/ui/components/form/input-money/helpers/format.ts similarity index 100% rename from front/src/ui/atoms/input-money/helpers/format.ts rename to front/src/ui/components/form/input-money/helpers/format.ts diff --git a/front/src/ui/atoms/input-money/index.ts b/front/src/ui/components/form/input-money/index.ts similarity index 100% rename from front/src/ui/atoms/input-money/index.ts rename to front/src/ui/components/form/input-money/index.ts diff --git a/front/src/ui/atoms/input/Input.tsx b/front/src/ui/components/form/input/Input.tsx similarity index 100% rename from front/src/ui/atoms/input/Input.tsx rename to front/src/ui/components/form/input/Input.tsx diff --git a/front/src/ui/atoms/input/InputProps.ts b/front/src/ui/components/form/input/InputProps.ts similarity index 100% rename from front/src/ui/atoms/input/InputProps.ts rename to front/src/ui/components/form/input/InputProps.ts diff --git a/front/src/ui/atoms/input/InputType.ts b/front/src/ui/components/form/input/InputType.ts similarity index 100% rename from front/src/ui/atoms/input/InputType.ts rename to front/src/ui/components/form/input/InputType.ts diff --git a/front/src/ui/atoms/input/helpers/resolveType.ts b/front/src/ui/components/form/input/helpers/resolveType.ts similarity index 100% rename from front/src/ui/atoms/input/helpers/resolveType.ts rename to front/src/ui/components/form/input/helpers/resolveType.ts diff --git a/front/src/ui/atoms/input/index.ts b/front/src/ui/components/form/input/index.ts similarity index 100% rename from front/src/ui/atoms/input/index.ts rename to front/src/ui/components/form/input/index.ts diff --git a/front/src/ui/atoms/label/Label.css b/front/src/ui/components/form/label/Label.css similarity index 100% rename from front/src/ui/atoms/label/Label.css rename to front/src/ui/components/form/label/Label.css diff --git a/front/src/ui/atoms/label/Label.tsx b/front/src/ui/components/form/label/Label.tsx similarity index 100% rename from front/src/ui/atoms/label/Label.tsx rename to front/src/ui/components/form/label/Label.tsx diff --git a/front/src/ui/atoms/label/helpers/resolveContainerClassName.ts b/front/src/ui/components/form/label/helpers/resolveContainerClassName.ts similarity index 100% rename from front/src/ui/atoms/label/helpers/resolveContainerClassName.ts rename to front/src/ui/components/form/label/helpers/resolveContainerClassName.ts diff --git a/front/src/ui/atoms/label/helpers/resolveTextClassName.ts b/front/src/ui/components/form/label/helpers/resolveTextClassName.ts similarity index 100% rename from front/src/ui/atoms/label/helpers/resolveTextClassName.ts rename to front/src/ui/components/form/label/helpers/resolveTextClassName.ts diff --git a/front/src/ui/atoms/label/index.ts b/front/src/ui/components/form/label/index.ts similarity index 100% rename from front/src/ui/atoms/label/index.ts rename to front/src/ui/components/form/label/index.ts diff --git a/front/src/ui/atoms/loading-button/LoadingButton.tsx b/front/src/ui/components/form/loading-button/LoadingButton.tsx similarity index 84% rename from front/src/ui/atoms/loading-button/LoadingButton.tsx rename to front/src/ui/components/form/loading-button/LoadingButton.tsx index f00320a..ce9f174 100644 --- a/front/src/ui/atoms/loading-button/LoadingButton.tsx +++ b/front/src/ui/components/form/loading-button/LoadingButton.tsx @@ -1,6 +1,6 @@ import { Omit } from 'utility-types' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { FetchingState } from '@front/domain/fetching-redux' import { Button, ButtonProps } from '../button' diff --git a/front/src/ui/atoms/loading-button/index.ts b/front/src/ui/components/form/loading-button/index.ts similarity index 100% rename from front/src/ui/atoms/loading-button/index.ts rename to front/src/ui/components/form/loading-button/index.ts diff --git a/front/src/ui/organisms/period/Period.tsx b/front/src/ui/components/form/period/Period.tsx similarity index 84% rename from front/src/ui/organisms/period/Period.tsx rename to front/src/ui/components/form/period/Period.tsx index 6a19ae4..b9498a9 100644 --- a/front/src/ui/organisms/period/Period.tsx +++ b/front/src/ui/components/form/period/Period.tsx @@ -1,5 +1,5 @@ -import { Label } from '@front/ui/atoms/label' -import { DatePicker } from '@front/ui/molecules/date-picker' +import { DatePicker } from '../date-picker' +import { Label } from '../label' interface Props { start: Date diff --git a/front/src/ui/organisms/period/index.ts b/front/src/ui/components/form/period/index.ts similarity index 100% rename from front/src/ui/organisms/period/index.ts rename to front/src/ui/components/form/period/index.ts diff --git a/front/src/ui/molecules/select/EnumSelect/EnumSelect.tsx b/front/src/ui/components/form/select/EnumSelect/EnumSelect.tsx similarity index 100% rename from front/src/ui/molecules/select/EnumSelect/EnumSelect.tsx rename to front/src/ui/components/form/select/EnumSelect/EnumSelect.tsx diff --git a/front/src/ui/molecules/select/EnumSelect/EnumSelectProps.ts b/front/src/ui/components/form/select/EnumSelect/EnumSelectProps.ts similarity index 100% rename from front/src/ui/molecules/select/EnumSelect/EnumSelectProps.ts rename to front/src/ui/components/form/select/EnumSelect/EnumSelectProps.ts diff --git a/front/src/ui/molecules/select/Option/Option.tsx b/front/src/ui/components/form/select/Option/Option.tsx similarity index 100% rename from front/src/ui/molecules/select/Option/Option.tsx rename to front/src/ui/components/form/select/Option/Option.tsx diff --git a/front/src/ui/molecules/select/Option/OptionProps.ts b/front/src/ui/components/form/select/Option/OptionProps.ts similarity index 100% rename from front/src/ui/molecules/select/Option/OptionProps.ts rename to front/src/ui/components/form/select/Option/OptionProps.ts diff --git a/front/src/ui/molecules/select/Select/Select.tsx b/front/src/ui/components/form/select/Select/Select.tsx similarity index 100% rename from front/src/ui/molecules/select/Select/Select.tsx rename to front/src/ui/components/form/select/Select/Select.tsx diff --git a/front/src/ui/molecules/select/Select/SelectProps.ts b/front/src/ui/components/form/select/Select/SelectProps.ts similarity index 100% rename from front/src/ui/molecules/select/Select/SelectProps.ts rename to front/src/ui/components/form/select/Select/SelectProps.ts diff --git a/front/src/ui/molecules/select/Select/helpers/filterOption.ts b/front/src/ui/components/form/select/Select/helpers/filterOption.ts similarity index 100% rename from front/src/ui/molecules/select/Select/helpers/filterOption.ts rename to front/src/ui/components/form/select/Select/helpers/filterOption.ts diff --git a/front/src/ui/molecules/select/index.ts b/front/src/ui/components/form/select/index.ts similarity index 100% rename from front/src/ui/molecules/select/index.ts rename to front/src/ui/components/form/select/index.ts diff --git a/front/src/ui/molecules/card/Card.tsx b/front/src/ui/components/layout/card/Card.tsx similarity index 100% rename from front/src/ui/molecules/card/Card.tsx rename to front/src/ui/components/layout/card/Card.tsx diff --git a/front/src/ui/molecules/card/index.ts b/front/src/ui/components/layout/card/index.ts similarity index 100% rename from front/src/ui/molecules/card/index.ts rename to front/src/ui/components/layout/card/index.ts diff --git a/front/src/ui/molecules/loader/Loader.tsx b/front/src/ui/components/layout/loader/Loader.tsx similarity index 80% rename from front/src/ui/molecules/loader/Loader.tsx rename to front/src/ui/components/layout/loader/Loader.tsx index 792fe55..5eab2ec 100644 --- a/front/src/ui/molecules/loader/Loader.tsx +++ b/front/src/ui/components/layout/loader/Loader.tsx @@ -1,6 +1,6 @@ import { ReactNode } from 'react' -import { FetchingState } from '@front/domain/store/fetchingRedux/FetchingState' +import { FetchingState } from '@front/domain/fetching-redux' interface Props { status: FetchingState diff --git a/front/src/ui/molecules/loader/index.ts b/front/src/ui/components/layout/loader/index.ts similarity index 100% rename from front/src/ui/molecules/loader/index.ts rename to front/src/ui/components/layout/loader/index.ts diff --git a/front/src/ui/molecules/table/Table.tsx b/front/src/ui/components/layout/table/Table.tsx similarity index 100% rename from front/src/ui/molecules/table/Table.tsx rename to front/src/ui/components/layout/table/Table.tsx diff --git a/front/src/ui/molecules/table/index.ts b/front/src/ui/components/layout/table/index.ts similarity index 100% rename from front/src/ui/molecules/table/index.ts rename to front/src/ui/components/layout/table/index.ts