Skip to content
Snippets Groups Projects
Commit 4c9b4cb8 authored by syuilo's avatar syuilo
Browse files

wip

parent c7f80182
No related branches found
No related tags found
No related merge requests found
import Stream from './stream';
import MiOS from '../../mios';
export class UserListStream extends Stream {
constructor(os: MiOS, me, listId) {
super(os, 'user-list', {
i: me.token,
listId
});
(this as any).on('_connected_', () => {
this.send({
i: me.token
});
});
}
}
......@@ -4,6 +4,7 @@
<script lang="ts">
import Vue from 'vue';
import { UserListStream } from '../../../common/scripts/streaming/user-list';
const fetchLimit = 10;
......@@ -21,21 +22,19 @@ export default Vue.extend({
$route: 'fetch'
},
mounted() {
this.connection = new UserListStream((this as any).os, (this as any).os.i, this.list.id);
this.connection.on('note', this.onNote);
this.connection.on('userAdded', this.onUserAdded);
this.connection.on('userRemoved', this.onUserRemoved);
this.fetch();
},
beforeDestroy() {
this.connection.off('note', this.onNote);
this.connection.off('userAdded', this.onUserAdded);
this.connection.off('userRemoved', this.onUserRemoved);
this.connection.close();
},
methods: {
fetch() {
if (this.connection) this.connection.close();
this.connection = new UserListStream((this as any).os, (this as any).os.i, this.list.id);
this.connection.on('note', this.onNote);
this.connection.on('userAdded', this.onUserAdded);
this.connection.on('userRemoved', this.onUserRemoved);
this.fetching = true;
(this as any).api('notes/list-timeline', {
......
......@@ -20,6 +20,8 @@
<script lang="ts">
import Vue from 'vue';
import { url } from '../../../config';
import XNote from './notes.note.vue';
const displayLimit = 30;
......@@ -83,10 +85,35 @@ export default Vue.extend({
this.notes = notes;
},
prepend(note) {
prepend(note, silent = false) {
//#region 弾く
const isMyNote = note.userId == (this as any).os.i.id;
const isPureRenote = note.renoteId != null && note.text == null && note.mediaIds.length == 0 && note.poll == null;
if ((this as any).os.i.clientSettings.showMyRenotes === false) {
if (isMyNote && isPureRenote) {
return;
}
}
if ((this as any).os.i.clientSettings.showRenotedMyNotes === false) {
if (isPureRenote && (note.renote.userId == (this as any).os.i.id)) {
return;
}
}
//#endregion
if (this.isScrollTop()) {
// Prepend the note
this.notes.unshift(note);
// サウンドを再生する
if ((this as any).os.isEnableSounds && !silent) {
const sound = new Audio(`${url}/assets/post.mp3`);
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
sound.play();
}
// オーバーフローしたら古い投稿は捨てる
if (this.notes.length >= displayLimit) {
this.notes = this.notes.slice(0, displayLimit);
......@@ -105,7 +132,7 @@ export default Vue.extend({
},
releaseQueue() {
this.queue.forEach(n => this.prepend(n));
this.queue.forEach(n => this.prepend(n, true));
this.queue = [];
},
......
......@@ -14,7 +14,6 @@
<script lang="ts">
import Vue from 'vue';
import { url } from '../../../config';
const fetchLimit = 10;
......@@ -136,30 +135,6 @@ export default Vue.extend({
},
onNote(note) {
//#region 弾く
const isMyNote = note.userId == (this as any).os.i.id;
const isPureRenote = note.renoteId != null && note.text == null && note.mediaIds.length == 0 && note.poll == null;
if ((this as any).os.i.clientSettings.showMyRenotes === false) {
if (isMyNote && isPureRenote) {
return;
}
}
if ((this as any).os.i.clientSettings.showRenotedMyNotes === false) {
if (isPureRenote && (note.renote.userId == (this as any).os.i.id)) {
return;
}
}
//#endregion
// サウンドを再生する
if ((this as any).os.isEnableSounds) {
const sound = new Audio(`${url}/assets/post.mp3`);
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
sound.play();
}
// Prepend a note
(this.$refs.timeline as any).prepend(note);
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment