feat(gui): remember scroll on back #13
This commit is contained in:
parent
454d65d623
commit
246a7a9797
21
src/app/remember-scroll.js
Normal file
21
src/app/remember-scroll.js
Normal file
@ -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
|
||||
}
|
||||
}
|
@ -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 = () => {
|
||||
|
@ -319,8 +319,8 @@ export default class TorrentPage extends Page {
|
||||
return (
|
||||
<div className='pad1 w100p column center'>
|
||||
<div className='row center pad0-75'>
|
||||
<RaisedButton label={__('Back to main page')} primary={true} onClick={() => {
|
||||
window.router('/')
|
||||
<RaisedButton label={__('Back to previus')} primary={true} onClick={() => {
|
||||
window.routerOpenPrev();
|
||||
}} />
|
||||
</div>
|
||||
<RefreshIndicator
|
||||
|
@ -9,6 +9,7 @@ import TorrentPage from './torrent-page'
|
||||
|
||||
import LinearProgress from 'material-ui/LinearProgress';
|
||||
let rating = require('./rating');
|
||||
import scrollBack from './remember-scroll'
|
||||
|
||||
const contentIcon = (type, category, fill = 'grey') => {
|
||||
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})
|
||||
}}
|
||||
|
Loading…
Reference in New Issue
Block a user