import React, {useState, useEffect} from 'react' import {observer} from 'mobx-react-lite' import {StyleProp, StyleSheet, TextStyle, View} from 'react-native' import {LoadingPlaceholder} from '../util/LoadingPlaceholder' import {ErrorMessage} from '../util/error/ErrorMessage' import {Text} from '../util/text/Text' import {PostModel} from 'state/models/content/post' import {useStores} from 'state/index' export const PostText = observer(function PostText({ uri, style, }: { uri: string style?: StyleProp }) { const store = useStores() const [model, setModel] = useState() useEffect(() => { if (model?.uri === uri) { return // no change needed? or trigger refresh? } const newModel = new PostModel(store, uri) setModel(newModel) newModel.setup().catch(err => store.log.error('Failed to fetch post', err)) }, [uri, model?.uri, store]) // loading // = if (!model || model.isLoading || model.uri !== uri) { return ( ) } // error // = if (model.hasError) { return ( ) } // loaded // = return ( {model.text} ) }) const styles = StyleSheet.create({ mt6: {marginTop: 6}, })