ClaimTilesDiscover: stop repeating claim_search on failure

Just like ClaimListDiscover, stop `claim_search`-ing if the result is a failure (null).

Leaving the placeholder tiles as is for now. Can show the timed out message like ClaimListDiscover -- just toggle SHOW_TIMEOUT_MSG.
This commit is contained in:
infinite-persistence 2022-04-11 11:04:25 +08:00 committed by Thomas Zarebczan
parent 5288fb3de8
commit b03d3305c1
2 changed files with 30 additions and 1 deletions

View file

@ -871,6 +871,7 @@
"Hide reposts": "Hide reposts",
"You will not see reposts by people you follow or receive email notifying about them.": "You will not see reposts by people you follow or receive email notifying about them.",
"Sorry, your request timed out. Modify your options or %again%": "Sorry, your request timed out. Modify your options or %again%",
"Sorry, your request timed out. Try refreshing in a bit.": "Sorry, your request timed out. Try refreshing in a bit.",
"Pause at any time to select a thumbnail from your video": "Pause at any time to select a thumbnail from your video",
"For video content, use MP4s in H264/AAC format and a friendly bitrate (under 5 Mbps) and resolution (720p) for more reliable streaming. %SITE_NAME% uploads are restricted to %limit% GB.": "For video content, use MP4s in H264/AAC format and a friendly bitrate (under 5 Mbps) and resolution (720p) for more reliable streaming. %SITE_NAME% uploads are restricted to %limit% GB.",
"Share this channel": "Share this channel",

View file

@ -1,12 +1,16 @@
// @flow
import type { Node } from 'react';
import React from 'react';
import Button from 'component/button';
import ClaimPreviewTile from 'component/claimPreviewTile';
import I18nMessage from 'component/i18nMessage';
import useFetchViewCount from 'effects/use-fetch-view-count';
import useLastVisibleItem from 'effects/use-last-visible-item';
import useResolvePins from 'effects/use-resolve-pins';
import useGetUserMemberships from 'effects/use-get-user-memberships';
const SHOW_TIMEOUT_MSG = false;
function urisEqual(prev: ?Array<string>, next: ?Array<string>) {
if (!prev || !next) {
// ClaimList: "null" and "undefined" have special meaning,
@ -96,7 +100,8 @@ function ClaimTilesDiscover(props: Props) {
const isUnfetchedClaimSearch = claimSearchResults === undefined;
const resolvedPinUris = useResolvePins({ pins, claimsById, doResolveClaimIds, doResolveUris });
const shouldPerformSearch = !fetchingClaimSearch && claimSearchUris.length === 0;
const timedOut = claimSearchResults === null;
const shouldPerformSearch = !fetchingClaimSearch && !timedOut && claimSearchUris.length === 0;
const uris = (prefixUris || []).concat(claimSearchUris);
if (prefixUris && prefixUris.length) uris.splice(prefixUris.length * -1, prefixUris.length);
@ -153,6 +158,29 @@ function ClaimTilesDiscover(props: Props) {
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
if (timedOut && SHOW_TIMEOUT_MSG) {
return (
<div className="empty empty--centered">
<p>{__('Sorry, your request timed out. Try refreshing in a bit.')}</p>
<p>
<I18nMessage
tokens={{
contact_support: (
<Button
button="link"
label={__('contact support')}
href="https://odysee.com/@OdyseeHelp:b?view=about"
/>
),
}}
>
If you continue to have issues, please %contact_support%.
</I18nMessage>
</p>
</div>
);
}
return (
<ul ref={listRef} className="claim-grid">
{finalUris && finalUris.length