Bluesky app fork with some witchin' additions 💫

Improve error handling on Explore page (#9890)

authored by

DS Boyce and committed by
GitHub
74330500 ac939dc8

+48 -12
+48 -12
src/screens/Search/Explore.tsx
··· 78 78 const t = useTheme() 79 79 const {_} = useLingui() 80 80 81 + const handleOnPress = () => { 82 + void item.onLoadMore() 83 + } 84 + 81 85 return ( 82 86 <Button 83 87 label={_(msg`Load more`)} 84 - onPress={item.onLoadMore} 88 + onPress={handleOnPress} 85 89 style={[a.relative, a.w_full]}> 86 90 {({hovered, pressed}) => ( 87 91 <> ··· 171 175 key: string 172 176 message: string 173 177 isLoadingMore: boolean 174 - onLoadMore: () => void 178 + onLoadMore: () => void | Promise<void> 175 179 } 176 180 | { 177 181 type: 'profilePlaceholder' ··· 358 362 i.push({ 359 363 type: 'tabbedHeader', 360 364 key: 'suggested-accounts-header', 361 - title: _(msg`Suggested Accounts`), 365 + title: _(msg`Suggested accounts`), 362 366 icon: Person, 363 367 searchButton: { 364 368 label: _(msg`Search for more accounts`), ··· 435 439 i.push({ 436 440 type: 'header', 437 441 key: 'suggested-feeds-header', 438 - title: _(msg`Discover New Feeds`), 442 + title: _(msg`Discover new feeds`), 439 443 icon: ListSparkle, 440 444 searchButton: { 441 445 label: _(msg`Search for more feeds`), ··· 463 467 if (suggestedFeedsError) { 464 468 i.push({ 465 469 type: 'error', 466 - key: 'feedsError', 470 + key: 'suggestedFeedsError', 467 471 message: _(msg`Failed to load suggested feeds`), 468 - error: cleanError(feedsError), 472 + error: cleanError(suggestedFeedsError), 469 473 }) 470 474 } else if (preferencesError) { 471 475 i.push({ ··· 512 516 i.push({ 513 517 type: 'error', 514 518 key: 'feedsError', 519 + message: _(msg`Failed to load feeds`), 520 + error: cleanError(feedsError), 521 + }) 522 + } else if (suggestedFeedsError) { 523 + i.push({ 524 + type: 'error', 525 + key: 'suggestedFeedsError', 515 526 message: _(msg`Failed to load suggested feeds`), 516 - error: cleanError(feedsError), 527 + error: cleanError(suggestedFeedsError), 517 528 }) 518 529 } else if (preferencesError) { 519 530 i.push({ ··· 550 561 i.push({ 551 562 type: 'error', 552 563 key: 'feedsError', 553 - message: _(msg`Failed to load suggested feeds`), 564 + message: _(msg`Failed to load feeds`), 554 565 error: cleanError(feedsError), 555 566 }) 567 + } else if (suggestedFeedsError) { 568 + i.push({ 569 + type: 'error', 570 + key: 'suggestedFeedsError', 571 + message: _(msg`Failed to load suggested feeds`), 572 + error: cleanError(suggestedFeedsError), 573 + }) 556 574 } else if (preferencesError) { 557 575 i.push({ 558 576 type: 'error', ··· 589 607 i.push({ 590 608 type: 'error', 591 609 key: 'feedsError', 610 + message: _(msg`Failed to load feeds`), 611 + error: cleanError(feedsError), 612 + }) 613 + } else if (suggestedFeedsError) { 614 + i.push({ 615 + type: 'error', 616 + key: 'feedsError', 592 617 message: _(msg`Failed to load suggested feeds`), 593 - error: cleanError(feedsError), 618 + error: cleanError(suggestedFeedsError), 594 619 }) 595 620 } else if (preferencesError) { 596 621 i.push({ ··· 714 739 715 740 const renderItem = useCallback( 716 741 ({item, index}: {item: ExploreScreenItems; index: number}) => { 742 + const handleOnPressRetry = () => { 743 + void fetchNextPageFeedPreviews() 744 + } 717 745 switch (item.type) { 718 746 case 'topBorder': 719 747 return ( ··· 987 1015 label={_( 988 1016 msg`There was an issue fetching posts. Tap here to try again.`, 989 1017 )} 990 - onPress={fetchNextPageFeedPreviews} 1018 + onPress={handleOnPressRetry} 991 1019 /> 992 1020 ) 993 1021 } ··· 1069 1097 [ax, suggestedFollowsModule], 1070 1098 ) 1071 1099 1100 + const handleOnEndReached = () => { 1101 + void onLoadMoreFeedPreviews() 1102 + } 1103 + 1104 + const handleOnRefresh = () => { 1105 + void onPTR() 1106 + } 1107 + 1072 1108 return ( 1073 1109 <List 1074 1110 data={items} ··· 1081 1117 stickyHeaderIndices={native(stickyHeaderIndices)} 1082 1118 viewabilityConfig={viewabilityConfig} 1083 1119 onItemSeen={onItemSeen} 1084 - onEndReached={onLoadMoreFeedPreviews} 1120 + onEndReached={handleOnEndReached} 1085 1121 /** 1086 1122 * Default: 2 1087 1123 */ ··· 1117 1153 */ 1118 1154 updateCellsBatchingPeriod={50} 1119 1155 refreshing={isPTR} 1120 - onRefresh={onPTR} 1156 + onRefresh={handleOnRefresh} 1121 1157 /> 1122 1158 ) 1123 1159 }