From 246a7a979798930c6186947bf11ea760dae8d576 Mon Sep 17 00:00:00 2001 From: Alexey Kasyanchuk Date: Fri, 20 Jul 2018 13:08:30 +0300 Subject: [PATCH] feat(gui): remember scroll on back #13 --- src/app/remember-scroll.js | 21 +++++++++++++++++++++ src/app/router.js | 7 +++++-- src/app/torrent-page.js | 4 ++-- src/app/torrent.js | 4 ++++ 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/app/remember-scroll.js diff --git a/src/app/remember-scroll.js b/src/app/remember-scroll.js new file mode 100644 index 0000000..f8bf97e --- /dev/null +++ b/src/app/remember-scroll.js @@ -0,0 +1,21 @@ +let scrollLock = false + +export default () => { + if(scrollLock) + return + scrollLock = true + // set scroll to prev position + if(window.rememberYOffset) + { + console.log('scroll back') + setTimeout(() => { + window.scrollTo(0, window.rememberYOffset + (window.rememberYOffset > 15 ? 330 : 0)) + delete window.rememberYOffset + scrollLock = false + }, 10); + } + else + { + scrollLock = false + } +} \ No newline at end of file diff --git a/src/app/router.js b/src/app/router.js index d3eecc2..3d83297 100644 --- a/src/app/router.js +++ b/src/app/router.js @@ -16,7 +16,7 @@ const history = [] let currentPage let routers = {} -const router = (page, callback) => { +const router = (page, callback, dontClearRemember) => { if(!callback) { currentPage = page ? page : '/' @@ -24,6 +24,9 @@ const router = (page, callback) => { history.shift() history.push(currentPage) + if(window.rememberYOffset && !dontClearRemember) + delete window.rememberYOffset + if(!page) routers['/'].callback() else @@ -66,7 +69,7 @@ window.routerOpenPrev = () => { if(history.length < 2) return history.pop() // last page - router(history.pop()) + router(history.pop(), null, true) } window.routerFix = () => { diff --git a/src/app/torrent-page.js b/src/app/torrent-page.js index a2d4e16..9f66cc3 100644 --- a/src/app/torrent-page.js +++ b/src/app/torrent-page.js @@ -319,8 +319,8 @@ export default class TorrentPage extends Page { return (
- { - window.router('/') + { + window.routerOpenPrev(); }} />
{ if(category == 'xxx') @@ -186,6 +187,8 @@ export default class Torrent extends Component { componentDidMount() { + scrollBack() + this.downloading = (hash) => { if(this.props.torrent.hash != hash) return; @@ -272,6 +275,7 @@ export default class Torrent extends Component { return true; } */ + window.rememberYOffset = window.pageYOffset window.routerFix() PagesPie.instance().open(TorrentPage, {replace: 'all', hash: torrent.hash, peer: torrent.peer}) }}