about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-05-25 15:56:19 -0500
committerPaul Frazee <pfrazee@gmail.com>2023-05-25 15:56:19 -0500
commite33dad8b723673a36979aea1d3d3132220a84a5d (patch)
tree78b3b428a5fdf6af6ec9ea48e8539adb54c38b2c /src
parenta39a06ba09803412bca053d9fc836d1d2cdd4b4b (diff)
parent881be748d52f0bbf19543ac8a08d81b46bb8af5d (diff)
downloadvoidsky-e33dad8b723673a36979aea1d3d3132220a84a5d.tar.zst
Merge branch 'custom-algos' of github.com:bluesky-social/social-app into custom-algos
Diffstat (limited to 'src')
-rw-r--r--src/state/models/ui/profile.ts2
-rw-r--r--src/view/com/feeds/CustomFeed.tsx1
-rw-r--r--src/view/com/feeds/SavedFeeds.tsx151
-rw-r--r--src/view/com/pager/FeedsTabBar.web.tsx2
-rw-r--r--src/view/com/pager/FeedsTabBarMobile.tsx7
-rw-r--r--src/view/com/pager/TabBar.tsx16
-rw-r--r--src/view/com/search/HeaderWithInput.tsx2
-rw-r--r--src/view/screens/CustomFeed.tsx6
-rw-r--r--src/view/screens/DiscoverFeeds.tsx5
-rw-r--r--src/view/shell/desktop/LeftNav.tsx18
10 files changed, 49 insertions, 161 deletions
diff --git a/src/state/models/ui/profile.ts b/src/state/models/ui/profile.ts
index 35831d1f7..81daf797f 100644
--- a/src/state/models/ui/profile.ts
+++ b/src/state/models/ui/profile.ts
@@ -8,7 +8,7 @@ import {ListsListModel} from '../lists/lists-list'
 export enum Sections {
   Posts = 'Posts',
   PostsWithReplies = 'Posts & replies',
-  CustomAlgorithms = 'Algos',
+  CustomAlgorithms = 'Feeds',
   Lists = 'Lists',
 }
 
diff --git a/src/view/com/feeds/CustomFeed.tsx b/src/view/com/feeds/CustomFeed.tsx
index 9a71eb846..748b89c02 100644
--- a/src/view/com/feeds/CustomFeed.tsx
+++ b/src/view/com/feeds/CustomFeed.tsx
@@ -98,6 +98,7 @@ export const CustomFeed = observer(
                 }
                 accessibilityHint=""
                 onPress={onToggleSaved}
+                hitSlop={15}
                 style={styles.btn}>
                 {item.isSaved ? (
                   <FontAwesomeIcon
diff --git a/src/view/com/feeds/SavedFeeds.tsx b/src/view/com/feeds/SavedFeeds.tsx
deleted file mode 100644
index 1214e7abd..000000000
--- a/src/view/com/feeds/SavedFeeds.tsx
+++ /dev/null
@@ -1,151 +0,0 @@
-import React, {useEffect, useCallback} from 'react'
-import {RefreshControl, StyleSheet, View} from 'react-native'
-import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {usePalette} from 'lib/hooks/usePalette'
-import {observer} from 'mobx-react-lite'
-import {useStores} from 'state/index'
-import {FlatList} from 'view/com/util/Views'
-import {Text} from 'view/com/util/text/Text'
-import {isDesktopWeb} from 'platform/detection'
-import {s} from 'lib/styles'
-import {Link, TextLink} from 'view/com/util/Link'
-import {CustomFeed} from './CustomFeed'
-
-export const SavedFeeds = observer(
-  ({
-    headerOffset = 0,
-    isPageFocused,
-  }: {
-    headerOffset?: number
-    isPageFocused: boolean
-  }) => {
-    const pal = usePalette('default')
-    const store = useStores()
-
-    useEffect(() => {
-      if (isPageFocused) {
-        store.shell.setMinimalShellMode(false)
-        store.me.savedFeeds.refresh(true)
-      }
-    }, [store, isPageFocused])
-
-    const onRefresh = useCallback(() => {
-      store.me.savedFeeds.refresh()
-    }, [store])
-
-    const renderListEmptyComponent = useCallback(() => {
-      return (
-        <View
-          style={[
-            pal.border,
-            !isDesktopWeb && s.flex1,
-            pal.viewLight,
-            styles.empty,
-          ]}>
-          <Text type="lg" style={[pal.text]}>
-            You don't have any saved feeds. You can find feeds by searching on
-            Bluesky.
-          </Text>
-        </View>
-      )
-    }, [pal])
-
-    const renderListFooterComponent = useCallback(() => {
-      return (
-        <>
-          <View style={[styles.footerLinks, pal.border]}>
-            <Link style={[styles.footerLink, pal.border]} href="/search/feeds">
-              <FontAwesomeIcon
-                icon="search"
-                size={18}
-                color={pal.colors.icon}
-              />
-              <Text type="lg-medium" style={pal.textLight}>
-                Discover new feeds
-              </Text>
-            </Link>
-            {!store.me.savedFeeds.isEmpty && (
-              <Link
-                style={[styles.footerLink, pal.border]}
-                href="/settings/saved-feeds">
-                <FontAwesomeIcon icon="cog" size={18} color={pal.colors.icon} />
-                <Text type="lg-medium" style={pal.textLight}>
-                  Change Order
-                </Text>
-              </Link>
-            )}
-          </View>
-          <View style={styles.footerText}>
-            <Text type="sm" style={pal.textLight}>
-              Feeds are custom algorithms that users build with a little coding
-              expertise.{' '}
-              <TextLink
-                type="sm"
-                style={pal.link}
-                href="https://github.com/bluesky-social/feed-generator"
-                text="See this guide"
-              />{' '}
-              for more information.
-            </Text>
-          </View>
-        </>
-      )
-    }, [pal, store.me.savedFeeds.isEmpty])
-
-    const renderItem = useCallback(
-      ({item}) => <CustomFeed key={item.data.uri} item={item} />,
-      [],
-    )
-
-    return (
-      <FlatList
-        style={[!isDesktopWeb && s.flex1, {paddingTop: headerOffset}]}
-        data={store.me.savedFeeds.feeds}
-        keyExtractor={item => item.data.uri}
-        refreshing={store.me.savedFeeds.isRefreshing}
-        refreshControl={
-          <RefreshControl
-            refreshing={store.me.savedFeeds.isRefreshing}
-            onRefresh={onRefresh}
-            tintColor={pal.colors.text}
-            titleColor={pal.colors.text}
-            progressViewOffset={headerOffset}
-          />
-        }
-        renderItem={renderItem}
-        initialNumToRender={10}
-        ListFooterComponent={renderListFooterComponent}
-        ListEmptyComponent={renderListEmptyComponent}
-        extraData={store.me.savedFeeds.isLoading}
-        contentOffset={{x: 0, y: headerOffset * -1}}
-        // @ts-ignore our .web version only -prf
-        desktopFixedHeight
-      />
-    )
-  },
-)
-
-const styles = StyleSheet.create({
-  footerLinks: {
-    marginTop: 8,
-    borderBottomWidth: 1,
-  },
-  footerLink: {
-    flexDirection: 'row',
-    borderTopWidth: 1,
-    paddingHorizontal: 26,
-    paddingVertical: 18,
-    gap: 18,
-  },
-  empty: {
-    paddingHorizontal: 18,
-    paddingVertical: 16,
-    borderRadius: 8,
-    marginHorizontal: 18,
-    marginTop: 10,
-  },
-  footerText: {
-    paddingHorizontal: 26,
-    paddingVertical: 22,
-  },
-})
diff --git a/src/view/com/pager/FeedsTabBar.web.tsx b/src/view/com/pager/FeedsTabBar.web.tsx
index b51db1741..0df915950 100644
--- a/src/view/com/pager/FeedsTabBar.web.tsx
+++ b/src/view/com/pager/FeedsTabBar.web.tsx
@@ -28,7 +28,7 @@ const FeedsTabBarDesktop = observer(
   ) => {
     const store = useStores()
     const items = useMemo(
-      () => ['Following', ...store.me.savedFeeds.pinnedFeedNames, 'My Feeds'],
+      () => ['Following', ...store.me.savedFeeds.pinnedFeedNames],
       [store.me.savedFeeds.pinnedFeedNames],
     )
     const pal = usePalette('default')
diff --git a/src/view/com/pager/FeedsTabBarMobile.tsx b/src/view/com/pager/FeedsTabBarMobile.tsx
index 426f7628b..94d04f32d 100644
--- a/src/view/com/pager/FeedsTabBarMobile.tsx
+++ b/src/view/com/pager/FeedsTabBarMobile.tsx
@@ -58,7 +58,12 @@ export const FeedsTabBar = observer(
             Bluesky
           </Text>
           <View style={[pal.view]}>
-            <Link href="/settings/saved-feeds" hitSlop={10}>
+            <Link
+              href="/settings/saved-feeds"
+              hitSlop={10}
+              accessibilityRole="button"
+              accessibilityLabel="Edit Saved Feeds"
+              accessibilityHint="Opens screen to edit Saved Feeds">
               <FontAwesomeIcon
                 icon="satellite-dish"
                 size={19}
diff --git a/src/view/com/pager/TabBar.tsx b/src/view/com/pager/TabBar.tsx
index f89dbe88a..ec636d053 100644
--- a/src/view/com/pager/TabBar.tsx
+++ b/src/view/com/pager/TabBar.tsx
@@ -110,13 +110,16 @@ const styles = isDesktopWeb
       outer: {
         flexDirection: 'row',
         width: 598,
-        paddingHorizontal: 14,
       },
-      contentContainer: {},
+      contentContainer: {
+        columnGap: 14,
+        marginLeft: 14,
+        paddingRight: 14,
+        backgroundColor: 'transparent',
+      },
       item: {
         paddingTop: 14,
         paddingBottom: 12,
-        paddingHorizontal: 12,
         borderBottomWidth: 3,
         borderBottomColor: 'transparent',
       },
@@ -125,10 +128,13 @@ const styles = isDesktopWeb
       outer: {
         flex: 1,
         flexDirection: 'row',
+        backgroundColor: 'transparent',
       },
       contentContainer: {
-        gap: 18,
-        paddingHorizontal: 18,
+        columnGap: 14,
+        marginLeft: 14,
+        paddingRight: 28,
+        backgroundColor: 'transparent',
       },
       item: {
         paddingTop: 8,
diff --git a/src/view/com/search/HeaderWithInput.tsx b/src/view/com/search/HeaderWithInput.tsx
index 7a9e0cc62..7d0eeb2db 100644
--- a/src/view/com/search/HeaderWithInput.tsx
+++ b/src/view/com/search/HeaderWithInput.tsx
@@ -87,6 +87,8 @@ export function HeaderWithInput({
           accessibilityRole="search"
           accessibilityLabel="Search"
           accessibilityHint=""
+          autoCorrect={false}
+          autoCapitalize="none"
         />
         {query ? (
           <TouchableOpacity
diff --git a/src/view/screens/CustomFeed.tsx b/src/view/screens/CustomFeed.tsx
index 49798d758..79b10de04 100644
--- a/src/view/screens/CustomFeed.tsx
+++ b/src/view/screens/CustomFeed.tsx
@@ -338,7 +338,11 @@ export const CustomFeedScreen = withAuthRequired(
           extraData={[uri, isPinned]}
         />
         {isScrolledDown ? (
-          <LoadLatestBtn onPress={onScrollToTop} label="Scroll to top" />
+          <LoadLatestBtn
+            onPress={onScrollToTop}
+            label="Scroll to top"
+            showIndicator={false}
+          />
         ) : null}
         <FAB
           testID="composeFAB"
diff --git a/src/view/screens/DiscoverFeeds.tsx b/src/view/screens/DiscoverFeeds.tsx
index 82a37942f..cd32ec655 100644
--- a/src/view/screens/DiscoverFeeds.tsx
+++ b/src/view/screens/DiscoverFeeds.tsx
@@ -72,6 +72,7 @@ export const DiscoverFeedsScreen = withAuthRequired(
           style={[!isDesktopWeb && s.flex1]}
           data={feeds.feeds}
           keyExtractor={item => item.data.uri}
+          contentContainerStyle={styles.contentContainer}
           refreshControl={
             <RefreshControl
               refreshing={feeds.isRefreshing}
@@ -93,7 +94,9 @@ export const DiscoverFeedsScreen = withAuthRequired(
 const styles = StyleSheet.create({
   container: {
     flex: 1,
-    paddingBottom: isDesktopWeb ? 0 : 100,
+  },
+  contentContainer: {
+    paddingBottom: 100,
   },
   containerDesktop: {
     borderLeftWidth: 1,
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index ba48dd2ae..01cace154 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -205,6 +205,24 @@ export const DesktopLeftNav = observer(function DesktopLeftNav() {
         label="Notifications"
       />
       <NavItem
+        href="/settings/saved-feeds"
+        icon={
+          <FontAwesomeIcon
+            icon="satellite-dish"
+            style={pal.text as FontAwesomeIconStyle}
+            size={20}
+          />
+        }
+        iconFilled={
+          <FontAwesomeIcon
+            icon="satellite-dish"
+            style={pal.text as FontAwesomeIconStyle}
+            size={20}
+          />
+        }
+        label="My Feeds"
+      />
+      <NavItem
         href="/moderation"
         icon={
           <HandIcon