summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-17 07:40:19 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-17 07:40:19 +0900
commita0a2cecc73607eb66f00edf59f2b71ebec9049a7 (patch)
tree1729acea9d86edd899ecf6b9e77fc5dfebb8469b /src/client
parentMerge pull request #1492 from TheKinrar/master (diff)
downloadsharkey-a0a2cecc73607eb66f00edf59f2b71ebec9049a7.tar.gz
sharkey-a0a2cecc73607eb66f00edf59f2b71ebec9049a7.tar.bz2
sharkey-a0a2cecc73607eb66f00edf59f2b71ebec9049a7.zip
:v:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/app/desktop/views/components/timeline.vue18
-rw-r--r--src/client/app/mobile/views/components/timeline.vue23
2 files changed, 20 insertions, 21 deletions
diff --git a/src/client/app/desktop/views/components/timeline.vue b/src/client/app/desktop/views/components/timeline.vue
index dfe3e54373..2db64d6e09 100644
--- a/src/client/app/desktop/views/components/timeline.vue
+++ b/src/client/app/desktop/views/components/timeline.vue
@@ -29,15 +29,16 @@ export default Vue.extend({
notes: [],
connection: null,
connectionId: null,
- date: null,
- isTop: true
+ date: null
};
},
+
computed: {
alone(): boolean {
return (this as any).os.i.followingCount == 0;
}
},
+
mounted() {
this.connection = (this as any).os.stream.getConnection();
this.connectionId = (this as any).os.stream.use();
@@ -51,6 +52,7 @@ export default Vue.extend({
this.fetch();
},
+
beforeDestroy() {
this.connection.off('note', this.onNote);
this.connection.off('follow', this.onChangeFollowing);
@@ -60,6 +62,7 @@ export default Vue.extend({
document.removeEventListener('keydown', this.onKeydown);
window.removeEventListener('scroll', this.onScroll);
},
+
methods: {
fetch(cb?) {
this.fetching = true;
@@ -78,6 +81,7 @@ export default Vue.extend({
if (cb) cb();
});
},
+
more() {
if (this.moreFetching || this.fetching || this.notes.length == 0 || !this.existMore) return;
this.moreFetching = true;
@@ -94,6 +98,7 @@ export default Vue.extend({
this.moreFetching = false;
});
},
+
onNote(note) {
// サウンドを再生する
if ((this as any).os.isEnableSounds) {
@@ -102,19 +107,23 @@ export default Vue.extend({
sound.play();
}
- if (this.isTop) this.notes.pop();
this.notes.unshift(note);
+
+ const isTop = window.scrollY > 8;
+ if (isTop) this.notes.pop();
},
+
onChangeFollowing() {
this.fetch();
},
+
onScroll() {
if ((this as any).os.i.clientSettings.fetchOnScroll !== false) {
const current = window.scrollY + window.innerHeight;
if (current > document.body.offsetHeight - 8) this.more();
}
- this.isTop = window.scrollY < 100;
},
+
onKeydown(e) {
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
if (e.which == 84) { // t
@@ -122,6 +131,7 @@ export default Vue.extend({
}
}
},
+
warp(date) {
this.date = date;
this.fetch();
diff --git a/src/client/app/mobile/views/components/timeline.vue b/src/client/app/mobile/views/components/timeline.vue
index 546270db95..11b82aa456 100644
--- a/src/client/app/mobile/views/components/timeline.vue
+++ b/src/client/app/mobile/views/components/timeline.vue
@@ -37,8 +37,7 @@ export default Vue.extend({
notes: [],
existMore: false,
connection: null,
- connectionId: null,
- isTop: true
+ connectionId: null
};
},
computed: {
@@ -54,18 +53,13 @@ export default Vue.extend({
this.connection.on('follow', this.onChangeFollowing);
this.connection.on('unfollow', this.onChangeFollowing);
- window.addEventListener('scroll', this.onScroll);
-
- this.fetch();
+this.fetch();
},
beforeDestroy() {
this.connection.off('note', this.onNote);
this.connection.off('follow', this.onChangeFollowing);
this.connection.off('unfollow', this.onChangeFollowing);
- this.connection.off('unfollow', this.onChangeFollowing);
(this as any).os.stream.dispose(this.connectionId);
-
- window.removeEventListener('scroll', this.onScroll);
},
methods: {
fetch(cb?) {
@@ -101,18 +95,13 @@ export default Vue.extend({
});
},
onNote(note) {
- this.isTop = window.scrollY < 100;
+ this.notes.unshift(note);
+
+ const isTop = window.scrollY > 8;
+ if (isTop) this.notes.pop();
},
onChangeFollowing() {
this.fetch();
- },
- onScroll() {
- if ((this as any).os.i.clientSettings.fetchOnScroll !== false) {
- const current = window.scrollY + window.innerHeight;
- if (current > document.body.offsetHeight - 8) this.more();
- }
- if (window.scrollY > 100) this.isTop = false;
- else this.isTop = true;
}
}
});