diff --git a/packages/app/src/pages/music/components/feed/index.jsx b/packages/app/src/pages/music/components/feed/index.jsx index 303c1238..7d967188 100755 --- a/packages/app/src/pages/music/components/feed/index.jsx +++ b/packages/app/src/pages/music/components/feed/index.jsx @@ -8,6 +8,98 @@ import FeedModel from "models/feed" import "./index.less" +const PlaylistsList = (props) => { + const hopNumber = props.hopsPerPage ?? 6 + + const [offset, setOffset] = React.useState(0) + const [ended, setEnded] = React.useState(false) + + const [loading, result, error, makeRequest] = app.cores.api.useRequest(props.fetchMethod, { + limit: hopNumber, + trim: offset + }) + + const onClickPrev = () => { + if (offset === 0) { + return + } + + setOffset((value) => value - hopNumber) + } + + const onClickNext = () => { + if (ended) { + return + } + + setOffset((value) => value + hopNumber) + } + + React.useEffect(() => { + if (typeof makeRequest === "function") { + makeRequest() + } + }, [offset]) + + React.useEffect(() => { + if (result) { + setEnded(result.length < hopNumber) + } + }, [result]) + + if (error) { + console.error(error) + + return