Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client

add more toggleable metrics

adds hiding the followers, following and posts/skeets count, also adds option to hide "followed by" text

renames a very small amount of experiments to be nicer to read n to be consistent

also removes unused code from deer settings

+209 -82
+37 -22
src/components/ProfileHoverCard/index.web.tsx
··· 18 import {sanitizeDisplayName} from '#/lib/strings/display-names' 19 import {sanitizeHandle} from '#/lib/strings/handles' 20 import {useProfileShadow} from '#/state/cache/profile-shadow' 21 import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons' 22 import {useModerationOpts} from '#/state/preferences/moderation-opts' 23 import {usePrefetchProfileQuery, useProfileQuery} from '#/state/queries/profile' ··· 463 464 const enableSquareButtons = useEnableSquareButtons() 465 466 return ( 467 <View> 468 <View style={[a.flex_row, a.justify_between, a.align_start]}> ··· 572 573 {!isBlockedUser && ( 574 <> 575 - <View style={[a.flex_row, a.flex_wrap, a.gap_md, a.pt_xs]}> 576 - <InlineLinkText 577 - to={makeProfileLink(profile, 'followers')} 578 - label={`${followers} ${pluralizedFollowers}`} 579 - style={[t.atoms.text]} 580 - onPress={hide}> 581 - <Text style={[a.text_md, a.font_semi_bold]}>{followers} </Text> 582 - <Text style={[t.atoms.text_contrast_medium]}> 583 - {pluralizedFollowers} 584 - </Text> 585 - </InlineLinkText> 586 - <InlineLinkText 587 - to={makeProfileLink(profile, 'follows')} 588 - label={_(msg`${following} following`)} 589 - style={[t.atoms.text]} 590 - onPress={hide}> 591 - <Text style={[a.text_md, a.font_semi_bold]}>{following} </Text> 592 - <Text style={[t.atoms.text_contrast_medium]}> 593 - {pluralizedFollowings} 594 - </Text> 595 - </InlineLinkText> 596 - </View> 597 598 {profile.description?.trim() && !moderation.ui('profileView').blur ? ( 599 <View style={[a.pt_md]}> ··· 606 ) : undefined} 607 608 {!isMe && 609 shouldShowKnownFollowers(profile.viewer?.knownFollowers) && ( 610 <View style={[a.flex_row, a.align_center, a.gap_sm, a.pt_md]}> 611 <KnownFollowers
··· 18 import {sanitizeDisplayName} from '#/lib/strings/display-names' 19 import {sanitizeHandle} from '#/lib/strings/handles' 20 import {useProfileShadow} from '#/state/cache/profile-shadow' 21 + import {useDisableFollowedByMetrics} from '#/state/preferences/disable-followed-by-metrics' 22 + import {useDisableFollowersMetrics} from '#/state/preferences/disable-followers-metrics' 23 + import {useDisableFollowingMetrics} from '#/state/preferences/disable-following-metrics' 24 import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons' 25 import {useModerationOpts} from '#/state/preferences/moderation-opts' 26 import {usePrefetchProfileQuery, useProfileQuery} from '#/state/queries/profile' ··· 466 467 const enableSquareButtons = useEnableSquareButtons() 468 469 + // disable metrics 470 + const disableFollowersMetrics = useDisableFollowersMetrics() 471 + const disableFollowingMetrics = useDisableFollowingMetrics() 472 + const disableFollowedByMetrics = useDisableFollowedByMetrics() 473 + 474 return ( 475 <View> 476 <View style={[a.flex_row, a.justify_between, a.align_start]}> ··· 580 581 {!isBlockedUser && ( 582 <> 583 + {disableFollowersMetrics && disableFollowingMetrics ? ( null ) : 584 + <View style={[a.flex_row, a.flex_wrap, a.gap_md, a.pt_xs]}> 585 + {!disableFollowersMetrics ? ( 586 + <InlineLinkText 587 + to={makeProfileLink(profile, 'followers')} 588 + label={`${followers} ${pluralizedFollowers}`} 589 + style={[t.atoms.text]} 590 + onPress={hide}> 591 + <Text style={[a.text_md, a.font_semi_bold]}>{followers} </Text> 592 + <Text style={[t.atoms.text_contrast_medium]}> 593 + {pluralizedFollowers} 594 + </Text> 595 + </InlineLinkText> 596 + ) : null} 597 + {!disableFollowingMetrics ? ( 598 + <InlineLinkText 599 + to={makeProfileLink(profile, 'follows')} 600 + label={_(msg`${following} following`)} 601 + style={[t.atoms.text]} 602 + onPress={hide}> 603 + <Text style={[a.text_md, a.font_semi_bold]}>{following} </Text> 604 + <Text style={[t.atoms.text_contrast_medium]}> 605 + {pluralizedFollowings} 606 + </Text> 607 + </InlineLinkText> 608 + ) : null} 609 + </View> 610 + } 611 612 {profile.description?.trim() && !moderation.ui('profileView').blur ? ( 613 <View style={[a.pt_md]}> ··· 620 ) : undefined} 621 622 {!isMe && 623 + !disableFollowedByMetrics && 624 shouldShowKnownFollowers(profile.viewer?.knownFollowers) && ( 625 <View style={[a.flex_row, a.align_center, a.gap_sm, a.pt_md]}> 626 <KnownFollowers
+48 -30
src/screens/Profile/Header/Metrics.tsx
··· 5 6 import {makeProfileLink} from '#/lib/routes/links' 7 import {type Shadow} from '#/state/cache/types' 8 import {formatCount} from '#/view/com/util/numeric/format' 9 import {atoms as a, useTheme} from '#/alf' 10 import {InlineLinkText} from '#/components/Link' ··· 28 other: 'following', 29 }) 30 31 return ( 32 - <View 33 - style={[a.flex_row, a.gap_sm, a.align_center]} 34 - pointerEvents="box-none"> 35 - <InlineLinkText 36 - testID="profileHeaderFollowersButton" 37 - style={[a.flex_row, t.atoms.text]} 38 - to={makeProfileLink(profile, 'followers')} 39 - label={`${profile.followersCount || 0} ${pluralizedFollowers}`}> 40 - <Text style={[a.font_semi_bold, a.text_md]}>{followers} </Text> 41 - <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 42 - {pluralizedFollowers} 43 - </Text> 44 - </InlineLinkText> 45 - <InlineLinkText 46 - testID="profileHeaderFollowsButton" 47 - style={[a.flex_row, t.atoms.text]} 48 - to={makeProfileLink(profile, 'follows')} 49 - label={_(msg`${profile.followsCount || 0} following`)}> 50 - <Text style={[a.font_semi_bold, a.text_md]}>{following} </Text> 51 - <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 52 - {pluralizedFollowings} 53 - </Text> 54 - </InlineLinkText> 55 - <Text style={[a.font_semi_bold, t.atoms.text, a.text_md]}> 56 - {formatCount(i18n, profile.postsCount || 0)}{' '} 57 - <Text style={[t.atoms.text_contrast_medium, a.font_normal, a.text_md]}> 58 - {plural(profile.postsCount || 0, {one: 'skeet', other: 'skeets'})} 59 - </Text> 60 - </Text> 61 - </View> 62 ) 63 }
··· 5 6 import {makeProfileLink} from '#/lib/routes/links' 7 import {type Shadow} from '#/state/cache/types' 8 + import {useDisableFollowersMetrics} from '#/state/preferences/disable-followers-metrics' 9 + import {useDisableFollowingMetrics} from '#/state/preferences/disable-following-metrics' 10 + import {useDisablePostsMetrics} from '#/state/preferences/disable-posts-metrics' 11 import {formatCount} from '#/view/com/util/numeric/format' 12 import {atoms as a, useTheme} from '#/alf' 13 import {InlineLinkText} from '#/components/Link' ··· 31 other: 'following', 32 }) 33 34 + // disable metrics 35 + const disableFollowersMetrics = useDisableFollowersMetrics() 36 + const disableFollowingMetrics = useDisableFollowingMetrics() 37 + const disablePostsMetrics = useDisablePostsMetrics() 38 + 39 return ( 40 + <> 41 + {disableFollowersMetrics && disableFollowingMetrics && disablePostsMetrics ? ( null ) : 42 + <View 43 + style={[a.flex_row, a.gap_sm, a.align_center]} 44 + pointerEvents="box-none"> 45 + {!disableFollowersMetrics ? ( 46 + <InlineLinkText 47 + testID="profileHeaderFollowersButton" 48 + style={[a.flex_row, t.atoms.text]} 49 + to={makeProfileLink(profile, 'followers')} 50 + label={`${profile.followersCount || 0} ${pluralizedFollowers}`}> 51 + <Text style={[a.font_semi_bold, a.text_md]}>{followers} </Text> 52 + <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 53 + {pluralizedFollowers} 54 + </Text> 55 + </InlineLinkText> 56 + ) : null} 57 + {!disableFollowingMetrics ? ( 58 + <InlineLinkText 59 + testID="profileHeaderFollowsButton" 60 + style={[a.flex_row, t.atoms.text]} 61 + to={makeProfileLink(profile, 'follows')} 62 + label={_(msg`${profile.followsCount || 0} following`)}> 63 + <Text style={[a.font_semi_bold, a.text_md]}>{following} </Text> 64 + <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 65 + {pluralizedFollowings} 66 + </Text> 67 + </InlineLinkText> 68 + ) : null} 69 + {!disablePostsMetrics ? ( 70 + <Text style={[a.font_semi_bold, t.atoms.text, a.text_md]}> 71 + {formatCount(i18n, profile.postsCount || 0)}{' '} 72 + <Text style={[t.atoms.text_contrast_medium, a.font_normal, a.text_md]}> 73 + {plural(profile.postsCount || 0, {one: 'skeet', other: 'skeets'})} 74 + </Text> 75 + </Text> 76 + ) : null} 77 + </View> 78 + } 79 + </> 80 ) 81 }
+5
src/screens/Profile/Header/ProfileHeaderStandard.tsx
··· 17 import {logger} from '#/logger' 18 import {isIOS} from '#/platform/detection' 19 import {type Shadow, useProfileShadow} from '#/state/cache/profile-shadow' 20 import { 21 useProfileBlockMutationQueue, 22 useProfileFollowMutationQueue, ··· 94 95 const {isActive: live} = useActorStatus(profile) 96 97 return ( 98 <> 99 <ProfileHeaderShell ··· 164 ) : undefined} 165 166 {!isMe && 167 !isBlockedUser && 168 shouldShowKnownFollowers(profile.viewer?.knownFollowers) && ( 169 <View style={[a.flex_row, a.align_center, a.gap_sm]}>
··· 17 import {logger} from '#/logger' 18 import {isIOS} from '#/platform/detection' 19 import {type Shadow, useProfileShadow} from '#/state/cache/profile-shadow' 20 + import {useDisableFollowedByMetrics} from '#/state/preferences/disable-followed-by-metrics' 21 import { 22 useProfileBlockMutationQueue, 23 useProfileFollowMutationQueue, ··· 95 96 const {isActive: live} = useActorStatus(profile) 97 98 + // disable metrics 99 + const disableFollowedByMetrics = useDisableFollowedByMetrics() 100 + 101 return ( 102 <> 103 <ProfileHeaderShell ··· 168 ) : undefined} 169 170 {!isMe && 171 + !disableFollowedByMetrics && 172 !isBlockedUser && 173 shouldShowKnownFollowers(profile.viewer?.knownFollowers) && ( 174 <View style={[a.flex_row, a.align_center, a.gap_sm]}>
+92 -23
src/screens/Settings/DeerSettings.tsx
··· 17 import * as persisted from '#/state/persisted' 18 import {useGoLinksEnabled, useSetGoLinksEnabled} from '#/state/preferences' 19 import { 20 - useConstellationEnabled, 21 - useSetConstellationEnabled, 22 - } from '#/state/preferences/constellation-enabled' 23 - import { 24 useConstellationInstance, 25 useSetConstellationInstance, 26 } from '#/state/preferences/constellation-instance' ··· 34 useSetDirectFetchRecords, 35 } from '#/state/preferences/direct-fetch-records' 36 import { 37 useDisableLikesMetrics, 38 useSetDisableLikesMetrics, 39 } from '#/state/preferences/disable-likes-metrics' ··· 45 useDisableReplyMetrics, 46 useSetDisableReplyMetrics, 47 } from '#/state/preferences/disable-reply-metrics' 48 import { 49 useDisableRepostsMetrics, 50 useSetDisableRepostsMetrics, ··· 66 useSetEnableSquareButtons, 67 } from '#/state/preferences/enable-square-buttons' 68 import { 69 useHideFeedsPromoTab, 70 useSetHideFeedsPromoTab, 71 } from '#/state/preferences/hide-feeds-promo-tab' ··· 95 useShowLinkInHandle, 96 } from '#/state/preferences/show-link-in-handle.tsx' 97 import {useProfilesQuery} from '#/state/queries/profile' 98 - import { 99 - useSetShowExternalShareButtons, 100 - useShowExternalShareButtons, 101 - } from '#/state/preferences/external-share-buttons' 102 import * as SettingsList from '#/screens/Settings/components/SettingsList' 103 import {atoms as a, useBreakpoints} from '#/alf' 104 import {Admonition} from '#/components/Admonition' ··· 250 const goLinksEnabled = useGoLinksEnabled() 251 const setGoLinksEnabled = useSetGoLinksEnabled() 252 253 - const constellationEnabled = useConstellationEnabled() 254 - const setConstellationEnabled = useSetConstellationEnabled() 255 - 256 const directFetchRecords = useDirectFetchRecords() 257 const setDirectFetchRecords = useSetDirectFetchRecords() 258 ··· 288 289 const disableReplyMetrics = useDisableReplyMetrics() 290 const setDisableReplyMetrics = useSetDisableReplyMetrics() 291 292 const hideSimilarAccountsRecomm = useHideSimilarAccountsRecomm() 293 const setHideSimilarAccountsRecomm = useSetHideSimilarAccountsRecomm() ··· 545 546 <Toggle.Item 547 name="disable_via_repost_notification" 548 - label={_(msg`Disable via reskeet notifications`)} 549 value={disableViaRepostNotification} 550 onChange={value => setDisableViaRepostNotification(value)} 551 style={[a.w_full]}> 552 <Toggle.LabelText style={[a.flex_1]}> 553 - <Trans>Disable via reskeet notifications</Trans> 554 </Toggle.LabelText> 555 <Toggle.Platform /> 556 </Toggle.Item> ··· 606 607 <Toggle.Item 608 name="disable_likes_metrics" 609 - label={_(msg`Disable Likes Metrics`)} 610 value={disableLikesMetrics} 611 onChange={value => setDisableLikesMetrics(value)} 612 style={[a.w_full]}> 613 <Toggle.LabelText style={[a.flex_1]}> 614 - <Trans>Disable Likes Metrics</Trans> 615 </Toggle.LabelText> 616 <Toggle.Platform /> 617 </Toggle.Item> 618 619 <Toggle.Item 620 name="disable_reposts_metrics" 621 - label={_(msg`Disable Reskeets Metrics`)} 622 value={disableRepostsMetrics} 623 onChange={value => setDisableRepostsMetrics(value)} 624 style={[a.w_full]}> 625 <Toggle.LabelText style={[a.flex_1]}> 626 - <Trans>Disable Reskeets Metrics</Trans> 627 </Toggle.LabelText> 628 <Toggle.Platform /> 629 </Toggle.Item> 630 631 <Toggle.Item 632 name="disable_quotes_metrics" 633 - label={_(msg`Disable Quotes Metrics`)} 634 value={disableQuotesMetrics} 635 onChange={value => setDisableQuotesMetrics(value)} 636 style={[a.w_full]}> 637 <Toggle.LabelText style={[a.flex_1]}> 638 - <Trans>Disable Quotes Metrics</Trans> 639 </Toggle.LabelText> 640 <Toggle.Platform /> 641 </Toggle.Item> 642 643 <Toggle.Item 644 name="disable_saves_metrics" 645 - label={_(msg`Disable Saves Metrics`)} 646 value={disableSavesMetrics} 647 onChange={value => setDisableSavesMetrics(value)} 648 style={[a.w_full]}> 649 <Toggle.LabelText style={[a.flex_1]}> 650 - <Trans>Disable Saves Metrics</Trans> 651 </Toggle.LabelText> 652 <Toggle.Platform /> 653 </Toggle.Item> 654 655 <Toggle.Item 656 name="disable_reply_metrics" 657 - label={_(msg`Disable Reply Metrics`)} 658 value={disableReplyMetrics} 659 onChange={value => setDisableReplyMetrics(value)} 660 style={[a.w_full]}> 661 <Toggle.LabelText style={[a.flex_1]}> 662 - <Trans>Disable Reply Metrics</Trans> 663 </Toggle.LabelText> 664 <Toggle.Platform /> 665 </Toggle.Item>
··· 17 import * as persisted from '#/state/persisted' 18 import {useGoLinksEnabled, useSetGoLinksEnabled} from '#/state/preferences' 19 import { 20 useConstellationInstance, 21 useSetConstellationInstance, 22 } from '#/state/preferences/constellation-instance' ··· 30 useSetDirectFetchRecords, 31 } from '#/state/preferences/direct-fetch-records' 32 import { 33 + useDisableFollowersMetrics, 34 + useSetDisableFollowersMetrics 35 + } from '#/state/preferences/disable-followers-metrics' 36 + import { 37 + useDisableFollowingMetrics, 38 + useSetDisableFollowingMetrics 39 + } from '#/state/preferences/disable-following-metrics' 40 + import { 41 + useDisableFollowedByMetrics, 42 + useSetDisableFollowedByMetrics 43 + } from '#/state/preferences/disable-followed-by-metrics' 44 + import { 45 useDisableLikesMetrics, 46 useSetDisableLikesMetrics, 47 } from '#/state/preferences/disable-likes-metrics' ··· 53 useDisableReplyMetrics, 54 useSetDisableReplyMetrics, 55 } from '#/state/preferences/disable-reply-metrics' 56 + import { 57 + useDisablePostsMetrics, 58 + useSetDisablePostsMetrics, 59 + } from '#/state/preferences/disable-posts-metrics' 60 import { 61 useDisableRepostsMetrics, 62 useSetDisableRepostsMetrics, ··· 78 useSetEnableSquareButtons, 79 } from '#/state/preferences/enable-square-buttons' 80 import { 81 + useSetShowExternalShareButtons, 82 + useShowExternalShareButtons, 83 + } from '#/state/preferences/external-share-buttons' 84 + import { 85 useHideFeedsPromoTab, 86 useSetHideFeedsPromoTab, 87 } from '#/state/preferences/hide-feeds-promo-tab' ··· 111 useShowLinkInHandle, 112 } from '#/state/preferences/show-link-in-handle.tsx' 113 import {useProfilesQuery} from '#/state/queries/profile' 114 import * as SettingsList from '#/screens/Settings/components/SettingsList' 115 import {atoms as a, useBreakpoints} from '#/alf' 116 import {Admonition} from '#/components/Admonition' ··· 262 const goLinksEnabled = useGoLinksEnabled() 263 const setGoLinksEnabled = useSetGoLinksEnabled() 264 265 const directFetchRecords = useDirectFetchRecords() 266 const setDirectFetchRecords = useSetDirectFetchRecords() 267 ··· 297 298 const disableReplyMetrics = useDisableReplyMetrics() 299 const setDisableReplyMetrics = useSetDisableReplyMetrics() 300 + 301 + const disableFollowersMetrics = useDisableFollowersMetrics() 302 + const setDisableFollowersMetrics = useSetDisableFollowersMetrics() 303 + 304 + const disableFollowingMetrics = useDisableFollowingMetrics() 305 + const setDisableFollowingMetrics = useSetDisableFollowingMetrics() 306 + 307 + const disableFollowedByMetrics = useDisableFollowedByMetrics() 308 + const setDisableFollowedByMetrics = useSetDisableFollowedByMetrics() 309 + 310 + const disablePostsMetrics = useDisablePostsMetrics() 311 + const setDisablePostsMetrics = useSetDisablePostsMetrics() 312 313 const hideSimilarAccountsRecomm = useHideSimilarAccountsRecomm() 314 const setHideSimilarAccountsRecomm = useSetHideSimilarAccountsRecomm() ··· 566 567 <Toggle.Item 568 name="disable_via_repost_notification" 569 + label={_(msg`Disable "via reskeet" notifications`)} 570 value={disableViaRepostNotification} 571 onChange={value => setDisableViaRepostNotification(value)} 572 style={[a.w_full]}> 573 <Toggle.LabelText style={[a.flex_1]}> 574 + <Trans>Disable "via reskeet" notifications</Trans> 575 </Toggle.LabelText> 576 <Toggle.Platform /> 577 </Toggle.Item> ··· 627 628 <Toggle.Item 629 name="disable_likes_metrics" 630 + label={_(msg`Disable likes metrics`)} 631 value={disableLikesMetrics} 632 onChange={value => setDisableLikesMetrics(value)} 633 style={[a.w_full]}> 634 <Toggle.LabelText style={[a.flex_1]}> 635 + <Trans>Disable likes metrics</Trans> 636 </Toggle.LabelText> 637 <Toggle.Platform /> 638 </Toggle.Item> 639 640 <Toggle.Item 641 name="disable_reposts_metrics" 642 + label={_(msg`Disable reskeets metrics`)} 643 value={disableRepostsMetrics} 644 onChange={value => setDisableRepostsMetrics(value)} 645 style={[a.w_full]}> 646 <Toggle.LabelText style={[a.flex_1]}> 647 + <Trans>Disable reskeets metrics</Trans> 648 </Toggle.LabelText> 649 <Toggle.Platform /> 650 </Toggle.Item> 651 652 <Toggle.Item 653 name="disable_quotes_metrics" 654 + label={_(msg`Disable quotes metrics`)} 655 value={disableQuotesMetrics} 656 onChange={value => setDisableQuotesMetrics(value)} 657 style={[a.w_full]}> 658 <Toggle.LabelText style={[a.flex_1]}> 659 + <Trans>Disable quotes metrics</Trans> 660 </Toggle.LabelText> 661 <Toggle.Platform /> 662 </Toggle.Item> 663 664 <Toggle.Item 665 name="disable_saves_metrics" 666 + label={_(msg`Disable saves metrics`)} 667 value={disableSavesMetrics} 668 onChange={value => setDisableSavesMetrics(value)} 669 style={[a.w_full]}> 670 <Toggle.LabelText style={[a.flex_1]}> 671 + <Trans>Disable saves metrics</Trans> 672 </Toggle.LabelText> 673 <Toggle.Platform /> 674 </Toggle.Item> 675 676 <Toggle.Item 677 name="disable_reply_metrics" 678 + label={_(msg`Disable reply metrics`)} 679 value={disableReplyMetrics} 680 onChange={value => setDisableReplyMetrics(value)} 681 style={[a.w_full]}> 682 <Toggle.LabelText style={[a.flex_1]}> 683 + <Trans>Disable reply metrics</Trans> 684 + </Toggle.LabelText> 685 + <Toggle.Platform /> 686 + </Toggle.Item> 687 + 688 + <Toggle.Item 689 + name="disable_followers_metrics" 690 + label={_(msg`Disable followers metrics`)} 691 + value={disableFollowersMetrics} 692 + onChange={value => setDisableFollowersMetrics(value)} 693 + style={[a.w_full]}> 694 + <Toggle.LabelText style={[a.flex_1]}> 695 + <Trans>Disable followers metrics</Trans> 696 + </Toggle.LabelText> 697 + <Toggle.Platform /> 698 + </Toggle.Item> 699 + 700 + <Toggle.Item 701 + name="disable_following_metrics" 702 + label={_(msg`Disable following metrics`)} 703 + value={disableFollowingMetrics} 704 + onChange={value => setDisableFollowingMetrics(value)} 705 + style={[a.w_full]}> 706 + <Toggle.LabelText style={[a.flex_1]}> 707 + <Trans>Disable following metrics</Trans> 708 + </Toggle.LabelText> 709 + <Toggle.Platform /> 710 + </Toggle.Item> 711 + 712 + <Toggle.Item 713 + name="disable_followed_by_metrics" 714 + label={_(msg`Disable "followed by" metrics`)} 715 + value={disableFollowedByMetrics} 716 + onChange={value => setDisableFollowedByMetrics(value)} 717 + style={[a.w_full]}> 718 + <Toggle.LabelText style={[a.flex_1]}> 719 + <Trans>Disable "followed by" metrics</Trans> 720 + </Toggle.LabelText> 721 + <Toggle.Platform /> 722 + </Toggle.Item> 723 + 724 + <Toggle.Item 725 + name="disable_posts_metrics" 726 + label={_(msg`Disable skeets metrics`)} 727 + value={disablePostsMetrics} 728 + onChange={value => setDisablePostsMetrics(value)} 729 + style={[a.w_full]}> 730 + <Toggle.LabelText style={[a.flex_1]}> 731 + <Trans>Disable skeets metrics</Trans> 732 </Toggle.LabelText> 733 <Toggle.Platform /> 734 </Toggle.Item>
+8
src/state/persisted/schema.ts
··· 151 disableQuotesMetrics: z.boolean().optional(), 152 disableSavesMetrics: z.boolean().optional(), 153 disableReplyMetrics: z.boolean().optional(), 154 hideSimilarAccountsRecomm: z.boolean().optional(), 155 enableSquareAvatars: z.boolean().optional(), 156 enableSquareButtons: z.boolean().optional(), ··· 234 disableQuotesMetrics: false, 235 disableSavesMetrics: false, 236 disableReplyMetrics: false, 237 hideSimilarAccountsRecomm: true, 238 enableSquareAvatars: false, 239 enableSquareButtons: false,
··· 151 disableQuotesMetrics: z.boolean().optional(), 152 disableSavesMetrics: z.boolean().optional(), 153 disableReplyMetrics: z.boolean().optional(), 154 + disableFollowersMetrics: z.boolean().optional(), 155 + disableFollowingMetrics: z.boolean().optional(), 156 + disableFollowedByMetrics: z.boolean().optional(), 157 + disablePostsMetrics: z.boolean().optional(), 158 hideSimilarAccountsRecomm: z.boolean().optional(), 159 enableSquareAvatars: z.boolean().optional(), 160 enableSquareButtons: z.boolean().optional(), ··· 238 disableQuotesMetrics: false, 239 disableSavesMetrics: false, 240 disableReplyMetrics: false, 241 + disableFollowersMetrics: false, 242 + disableFollowingMetrics: false, 243 + disableFollowedByMetrics: false, 244 + disablePostsMetrics: false, 245 hideSimilarAccountsRecomm: true, 246 enableSquareAvatars: false, 247 enableSquareButtons: false,
+19 -7
src/state/preferences/index.tsx
··· 6 import {Provider as ConstellationInstanceProvider} from './constellation-instance' 7 import {Provider as DeerVerificationProvider} from './deer-verification' 8 import {Provider as DirectFetchRecordsProvider} from './direct-fetch-records' 9 import {Provider as DisableHapticsProvider} from './disable-haptics' 10 import {Provider as DisableLikesMetricsProvider} from './disable-likes-metrics' 11 import {Provider as DisableQuotesMetricsProvider} from './disable-quotes-metrics' 12 import {Provider as DisableReplyMetricsProvider} from './disable-reply-metrics' 13 import {Provider as DisableRepostsMetricsProvider} from './disable-reposts-metrics' ··· 86 <DisableQuotesMetricsProvider> 87 <DisableSavesMetricsProvider> 88 <DisableReplyMetricsProvider> 89 - <HideSimilarAccountsRecommProvider> 90 - <EnableSquareAvatarsProvider> 91 - <EnableSquareButtonsProvider> 92 - {children} 93 - </EnableSquareButtonsProvider> 94 - </EnableSquareAvatarsProvider> 95 - </HideSimilarAccountsRecommProvider> 96 </DisableReplyMetricsProvider> 97 </DisableSavesMetricsProvider> 98 </DisableQuotesMetricsProvider>
··· 6 import {Provider as ConstellationInstanceProvider} from './constellation-instance' 7 import {Provider as DeerVerificationProvider} from './deer-verification' 8 import {Provider as DirectFetchRecordsProvider} from './direct-fetch-records' 9 + import {Provider as DisableFollowedByMetricsProvider} from './disable-followed-by-metrics' 10 + import {Provider as DisableFollowersMetricsProvider} from './disable-followers-metrics' 11 + import {Provider as DisableFollowingMetricsProvider} from './disable-following-metrics' 12 import {Provider as DisableHapticsProvider} from './disable-haptics' 13 import {Provider as DisableLikesMetricsProvider} from './disable-likes-metrics' 14 + import {Provider as DisablePostsMetricsProvider} from './disable-posts-metrics' 15 import {Provider as DisableQuotesMetricsProvider} from './disable-quotes-metrics' 16 import {Provider as DisableReplyMetricsProvider} from './disable-reply-metrics' 17 import {Provider as DisableRepostsMetricsProvider} from './disable-reposts-metrics' ··· 90 <DisableQuotesMetricsProvider> 91 <DisableSavesMetricsProvider> 92 <DisableReplyMetricsProvider> 93 + <DisableFollowersMetricsProvider> 94 + <DisableFollowingMetricsProvider> 95 + <DisableFollowedByMetricsProvider> 96 + <DisablePostsMetricsProvider> 97 + <HideSimilarAccountsRecommProvider> 98 + <EnableSquareAvatarsProvider> 99 + <EnableSquareButtonsProvider> 100 + {children} 101 + </EnableSquareButtonsProvider> 102 + </EnableSquareAvatarsProvider> 103 + </HideSimilarAccountsRecommProvider> 104 + </DisablePostsMetricsProvider> 105 + </DisableFollowedByMetricsProvider> 106 + </DisableFollowingMetricsProvider> 107 + </DisableFollowersMetricsProvider> 108 </DisableReplyMetricsProvider> 109 </DisableSavesMetricsProvider> 110 </DisableQuotesMetricsProvider>