@ -17,14 +17,28 @@
import React from "react"
import { connect } from "react-redux"
import { Scrollbars } from "react-custom-scrollbars"
import InfiniteScroll from "react-infinite-scroller"
import * as actionsBuckets from "./actions"
import { getVisible Buckets } from "./selectors"
import { getFiltered Buckets } from "./selectors"
import BucketContainer from "./BucketContainer"
import web from "../web"
import history from "../history"
import { pathSlice } from "../utils"
export class BucketList extends React . Component {
constructor ( props ) {
super ( props )
this . state = {
page : 1
}
}
componentWillReceiveProps ( nexProps ) {
if ( this . props . filter != nexProps . filter ) {
this . setState ( {
page : 1
} )
}
}
componentWillMount ( ) {
const { fetchBuckets , setBucketList , selectBucket } = this . props
if ( web . LoggedIn ( ) ) {
@ -39,13 +53,29 @@ export class BucketList extends React.Component {
}
}
}
loadNextPage ( ) {
this . setState ( {
page : this . state . page + 1
} )
}
render ( ) {
const { visibleBuckets } = this . props
const { filteredBuckets } = this . props
const visibleBuckets = filteredBuckets . slice ( 0 , this . state . page * 100 )
return (
< div className = "buckets__list" >
{ visibleBuckets . map ( bucket => (
< BucketContainer key = { bucket } bucket = { bucket } / >
) ) }
< InfiniteScroll
pageStart = { 0 }
loadMore = { this . loadNextPage . bind ( this ) }
hasMore = { filteredBuckets . length > visibleBuckets . length }
useWindow = { false }
element = "div"
initialLoad = { false }
className = "buckets__scroll"
>
{ visibleBuckets . map ( bucket => (
< BucketContainer key = { bucket } bucket = { bucket } / >
) ) }
< / I n f i n i t e S c r o l l >
< / d i v >
)
}
@ -53,7 +83,8 @@ export class BucketList extends React.Component {
const mapStateToProps = state => {
return {
visibleBuckets : getVisibleBuckets ( state ) ,
filteredBuckets : getFilteredBuckets ( state ) ,
filter : state . buckets . filter
}
}
@ -61,7 +92,7 @@ const mapDispatchToProps = dispatch => {
return {
fetchBuckets : ( ) => dispatch ( actionsBuckets . fetchBuckets ( ) ) ,
setBucketList : buckets => dispatch ( actionsBuckets . setList ( buckets ) ) ,
selectBucket : bucket => dispatch ( actionsBuckets . selectBucket ( bucket ) ) ,
selectBucket : bucket => dispatch ( actionsBuckets . selectBucket ( bucket ) )
}
}