diff --git a/backend/moonstream/actions.py b/backend/moonstream/actions.py index c6cd028d..0b459577 100644 --- a/backend/moonstream/actions.py +++ b/backend/moonstream/actions.py @@ -84,6 +84,8 @@ async def get_transaction_in_blocks( .filter(filters) ) + ethereum_transactions = ethereum_transactions_in_subscriptions + # If not start_time and end_time not present # Get latest transaction if boundaries.end_time == 0: @@ -92,10 +94,11 @@ async def get_transaction_in_blocks( text("timestamp desc") ).limit(1) ).one_or_none() - boundaries.end_time = ethereum_transaction_start_point[-1] - boundaries.start_time = ( - ethereum_transaction_start_point[-1] - DEFAULT_STREAM_TIMEINTERVAL - ) + if ethereum_transaction_start_point: + boundaries.end_time = ethereum_transaction_start_point[-1] + boundaries.start_time = ( + ethereum_transaction_start_point[-1] - DEFAULT_STREAM_TIMEINTERVAL + ) if boundaries.start_time != 0 and boundaries.end_time != 0: if boundaries.start_time > boundaries.end_time: @@ -105,7 +108,7 @@ async def get_transaction_in_blocks( ) if boundaries.end_time: - ethereum_transactions = ethereum_transactions_in_subscriptions.filter( + ethereum_transactions = ethereum_transactions.filter( include_or_not_lower( EthereumBlock.timestamp, boundaries.include_end, boundaries.end_time ) diff --git a/backend/moonstream/routes/streams.py b/backend/moonstream/routes/streams.py index 579154ca..dae72c70 100644 --- a/backend/moonstream/routes/streams.py +++ b/backend/moonstream/routes/streams.py @@ -60,10 +60,10 @@ app.add_middleware(BroodAuthMiddleware, whitelist=whitelist_paths) async def search_transactions( request: Request, q: str = Query(""), - start_time: Optional[int] = Query(0), # Optional[int] = Query(0), # - end_time: Optional[int] = Query(0), # Optional[int] = Query(0), # - include_start: bool = Query(False), - include_end: bool = Query(False), + start_time: Optional[int] = Query(0), + end_time: Optional[int] = Query(0), + include_start: Optional[bool] = Query(False), + include_end: Optional[bool] = Query(False), db_session: Session = Depends(db.yield_db_session), ): @@ -87,8 +87,6 @@ async def search_transactions( for resource in user_subscriptions_resources.resources } - # transactions: List[Any] = [] - boundaries = data.PageBoundary( start_time=start_time, end_time=end_time, @@ -97,17 +95,14 @@ async def search_transactions( include_start=include_start, include_end=include_end, ) - print(boundaries) if address_to_subscriptions: - print("address_to_subscriptions") response = await actions.get_transaction_in_blocks( db_session=db_session, query=q, user_subscriptions_resources_by_address=address_to_subscriptions, boundaries=boundaries, ) - print(response.boundaries) return response else: diff --git a/frontend/src/components/EntriesNavigation.js b/frontend/src/components/EntriesNavigation.js index f08df544..870c7b52 100644 --- a/frontend/src/components/EntriesNavigation.js +++ b/frontend/src/components/EntriesNavigation.js @@ -174,12 +174,6 @@ const EntriesNavigation = () => { // } // }; - useEffect(() => { - if (!streamBoundary.start_time && !streamBoundary.end_time) { - refetch(); - } - }, [streamBoundary]); - const setFilterProps = useCallback( (filterIdx, props) => { const newFilterProps = [...newFilterState]; @@ -192,7 +186,7 @@ const EntriesNavigation = () => { useEffect(() => { if ( subscriptionsCache.data?.subscriptions[0]?.id && - newFilterState[0].value === null + newFilterState[0]?.value === null ) { setFilterProps(0, { value: subscriptionsCache?.data?.subscriptions[0]?.address, @@ -556,17 +550,19 @@ const EntriesNavigation = () => { "" // some strange behaivior without else condition return 0 wich can see on frontend page )} - {entries.map((entry, idx) => ( - - ))} - {streamBoundary.previous_event_time || isFetching ? ( + {entries + ?.sort((a, b) => b.timestamp - a.timestamp) // TODO(Andrey) improve that for bi chunks of data sorting can take time + .map((entry, idx) => ( + + ))} + {streamBoundary.previous_event_time && !isFetching ? (
) : ( - "" +
+ {!isFetching ? ( + "Тransactions not found. You can subscribe to more addresses in Subscriptions menu." + ) : ( + + )} +
)} - {streamBoundary.previous_event_time && isLoading && ( + {streamBoundary.previous_event_time && isLoading ? (
+ ) : ( + "" )} diff --git a/frontend/src/components/SubscriptionsList.js b/frontend/src/components/SubscriptionsList.js index 6ceada85..64e76ce1 100644 --- a/frontend/src/components/SubscriptionsList.js +++ b/frontend/src/components/SubscriptionsList.js @@ -59,7 +59,7 @@ const SubscriptionsList = () => { {subscriptionsCache.data.subscriptions.map((subscription) => { let iconLink; switch (subscription.subscription_type_id) { - case "1": + case "0": iconLink = "https://ethereum.org/static/c48a5f760c34dfadcf05a208dab137cc/31987/eth-diamond-rainbow.png"; break; diff --git a/frontend/src/core/hooks/useStream.js b/frontend/src/core/hooks/useStream.js index bf589599..6d20bec6 100644 --- a/frontend/src/core/hooks/useStream.js +++ b/frontend/src/core/hooks/useStream.js @@ -43,6 +43,7 @@ const useJournalEntries = ({ //refetchInterval: refreshRate, ...queryCacheProps, keepPreviousData: true, + retry: 3, onSuccess: (response) => { // response is object which return condition in getStream // TODO(andrey): Response should send page parameters inside "boundary" object (can be null). diff --git a/frontend/src/core/services/stream.service.js b/frontend/src/core/services/stream.service.js index 8e14258a..60995a25 100644 --- a/frontend/src/core/services/stream.service.js +++ b/frontend/src/core/services/stream.service.js @@ -9,15 +9,32 @@ export const getStream = ({ end_time, include_start, include_end, -}) => - http({ +}) => { + let params = {}; + + if (searchTerm) { + params.q = encodeURIComponent(searchTerm); + } + + if (start_time) { + params.start_time = encodeURIComponent(start_time); + } + + if (end_time) { + params.end_time = encodeURIComponent(end_time); + } + + if (include_start) { + params.include_start = encodeURIComponent(true); + } + + if (include_end) { + params.include_end = encodeURIComponent(true); + } + + return http({ method: "GET", url: `${API}/streams/`, - params: { - q: searchTerm, - start_time: start_time, - end_time: end_time, - include_start: include_start, - include_end: include_end, - }, + params: params, }); +};