Factor our feed source model (#1887)

* Refactor first onboarding step

* Replace old FeedSourceCard

* Clean up CustomFeedEmbed

* Remove discover feeds model

* Refactor ProfileFeed screen

* Remove useCustomFeed

* Delete some unused models

* Rip out more prefs

* Factor out treeView from thread comp

* Improve last commit
This commit is contained in:
Eric Bailey 2023-11-13 15:53:57 -06:00 committed by GitHub
parent a01463788d
commit 06eb8b9a4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 526 additions and 1356 deletions

View file

@ -52,6 +52,7 @@ export function Button({
accessibilityLabelledBy,
onAccessibilityEscape,
withLoading = false,
disabled = false,
}: React.PropsWithChildren<{
type?: ButtonType
label?: string
@ -65,6 +66,7 @@ export function Button({
accessibilityLabelledBy?: string
onAccessibilityEscape?: () => void
withLoading?: boolean
disabled?: boolean
}>) {
const theme = useTheme()
const typeOuterStyle = choose<ViewStyle, Record<ButtonType, ViewStyle>>(
@ -198,7 +200,7 @@ export function Button({
<Pressable
style={getStyle}
onPress={onPressWrapped}
disabled={isLoading}
disabled={disabled || isLoading}
testID={testID}
accessibilityRole="button"
accessibilityLabel={accessibilityLabel}

View file

@ -1,38 +0,0 @@
import React, {useMemo} from 'react'
import {AppBskyFeedDefs} from '@atproto/api'
import {usePalette} from 'lib/hooks/usePalette'
import {StyleSheet} from 'react-native'
import {useStores} from 'state/index'
import {FeedSourceModel} from 'state/models/content/feed-source'
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
export function CustomFeedEmbed({
record,
}: {
record: AppBskyFeedDefs.GeneratorView
}) {
const pal = usePalette('default')
const store = useStores()
const item = useMemo(() => {
const model = new FeedSourceModel(store, record.uri)
model.hydrateFeedGenerator(record)
return model
}, [store, record])
return (
<FeedSourceCard
item={item}
style={[pal.view, pal.border, styles.customFeedOuter]}
showLikes
/>
)
}
const styles = StyleSheet.create({
customFeedOuter: {
borderWidth: 1,
borderRadius: 8,
marginTop: 4,
paddingHorizontal: 12,
paddingVertical: 12,
},
})

View file

@ -28,9 +28,9 @@ import {ExternalLinkEmbed} from './ExternalLinkEmbed'
import {getYoutubeVideoId} from 'lib/strings/url-helpers'
import {MaybeQuoteEmbed} from './QuoteEmbed'
import {AutoSizedImage} from '../images/AutoSizedImage'
import {CustomFeedEmbed} from './CustomFeedEmbed'
import {ListEmbed} from './ListEmbed'
import {isCauseALabelOnUri} from 'lib/moderation'
import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
type Embed =
| AppBskyEmbedRecord.View
@ -72,7 +72,13 @@ export function PostEmbeds({
// custom feed embed (i.e. generator view)
// =
if (AppBskyFeedDefs.isGeneratorView(embed.record)) {
return <CustomFeedEmbed record={embed.record} />
return (
<FeedSourceCard
feedUri={embed.record.uri}
style={[pal.view, pal.border, styles.customFeedOuter]}
showLikes
/>
)
}
// list embed
@ -206,4 +212,11 @@ const styles = StyleSheet.create({
fontSize: 10,
fontWeight: 'bold',
},
customFeedOuter: {
borderWidth: 1,
borderRadius: 8,
marginTop: 4,
paddingHorizontal: 12,
paddingVertical: 12,
},
})