forked from polka_billy/porridger
@ -9,6 +9,7 @@ import { isObject } from '../utils/types'
|
||||
import { handleHTTPErrors } from '../utils'
|
||||
import { categories, categoryNames } from '../assets/category'
|
||||
import { stations, lines, lineNames } from '../assets/metro'
|
||||
import { gotError } from '../hooks/api/useFetch'
|
||||
|
||||
function AddPage() {
|
||||
const [addressPosition, setAddressPosition] = useState(latLng(59.972, 30.3227))
|
||||
@ -165,7 +166,7 @@ function AddPage() {
|
||||
<p>Загрузка...</p>
|
||||
</div>
|
||||
) : (
|
||||
trashboxes.error ? (
|
||||
gotError(trashboxes) ? (
|
||||
<p
|
||||
style={{ height: 400 }}
|
||||
className='text-danger'
|
||||
@ -191,7 +192,7 @@ function AddPage() {
|
||||
)
|
||||
}
|
||||
</div>
|
||||
{selectedTrashbox.index > -1 ? (
|
||||
{!gotError(trashboxes) && selectedTrashbox.index > -1 ? (
|
||||
<p>Выбран пункт сбора мусора на {
|
||||
trashboxes.data[selectedTrashbox.index].Address
|
||||
} с категорией {selectedTrashbox.category}</p>
|
||||
|
@ -4,12 +4,14 @@ import { Story } from 'react-insta-stories/dist/interfaces'
|
||||
|
||||
import { BottomNavBar, AnnouncementDetails, Filters } from '../components'
|
||||
import { useStoryDimensions } from '../hooks'
|
||||
import { useHomeAnnouncementList } from '../hooks/api'
|
||||
import { useAnnouncements } from '../hooks/api'
|
||||
import { defaultFilters } from '../utils/filters'
|
||||
import { Announcement } from '../hooks/api/useHomeAnnouncementList'
|
||||
import puffSpinner from '../assets/puff.svg'
|
||||
import { Announcement } from '../api/announcement/types'
|
||||
import { categoryGraphics } from '../assets/category'
|
||||
|
||||
import puffSpinner from '../assets/puff.svg'
|
||||
import { gotError } from '../hooks/api/useFetch'
|
||||
|
||||
function generateStories(announcements: Announcement[]): Story[] {
|
||||
return announcements.map(announcement => {
|
||||
return ({
|
||||
@ -21,15 +23,15 @@ function generateStories(announcements: Announcement[]): Story[] {
|
||||
})
|
||||
}
|
||||
|
||||
function fallbackGenerateStories(announcementsFetch: ReturnType<typeof useHomeAnnouncementList>) {
|
||||
const stories = generateStories(announcementsFetch.data)
|
||||
|
||||
function fallbackGenerateStories(announcementsFetch: ReturnType<typeof useAnnouncements>) {
|
||||
if (announcementsFetch.loading)
|
||||
return fallbackStory()
|
||||
|
||||
if (announcementsFetch.error)
|
||||
if (gotError(announcementsFetch))
|
||||
return fallbackStory(announcementsFetch.error, true)
|
||||
|
||||
const stories = generateStories(announcementsFetch.data)
|
||||
|
||||
if (stories.length === 0)
|
||||
return fallbackStory('Здесь пока пусто')
|
||||
|
||||
@ -49,19 +51,25 @@ const fallbackStory = (text = '', isError = false): Story[] => [{
|
||||
},
|
||||
}]
|
||||
|
||||
const storiesContainerCSS = {
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
backgroundColor: 'rgb(17, 17, 17)'
|
||||
}
|
||||
|
||||
function HomePage() {
|
||||
const { height, width } = useStoryDimensions(16 / 10)
|
||||
|
||||
const [filterShown, setFilterShown] = useState(false)
|
||||
const [filter, setFilter] = useState(defaultFilters)
|
||||
|
||||
const announcementsFetch = useHomeAnnouncementList(filter)
|
||||
const announcementsFetch = useAnnouncements(filter)
|
||||
|
||||
const stories = fallbackGenerateStories(announcementsFetch)
|
||||
|
||||
return (<>
|
||||
<Filters filter={filter} setFilter={setFilter} filterShown={filterShown} setFilterShown={setFilterShown} />
|
||||
<div style={{ display: 'flex', justifyContent: 'center', backgroundColor: 'rgb(17, 17, 17)' }}>
|
||||
<div style={storiesContainerCSS}>
|
||||
<Stories
|
||||
stories={stories}
|
||||
defaultInterval={11000}
|
||||
|
Reference in New Issue
Block a user