fix: notification.vueのIntersectionObserverまわりを修正 (#8010)
* fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * Update packages/client/src/components/notification.vue Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * disconnect * oops Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
This commit is contained in:
parent
d9775c147f
commit
8e0108a0b8
1 changed files with 9 additions and 12 deletions
|
@ -107,28 +107,25 @@ export default defineComponent({
|
|||
const reactionRef = ref(null);
|
||||
|
||||
onMounted(() => {
|
||||
let readObserver: IntersectionObserver | null = null;
|
||||
let connection = null;
|
||||
|
||||
if (!props.notification.isRead) {
|
||||
readObserver = new IntersectionObserver((entries, observer) => {
|
||||
const readObserver = new IntersectionObserver((entries, observer) => {
|
||||
if (!entries.some(entry => entry.isIntersecting)) return;
|
||||
os.stream.send('readNotification', {
|
||||
id: props.notification.id
|
||||
});
|
||||
entries.map(({ target }) => observer.unobserve(target));
|
||||
observer.disconnect();
|
||||
});
|
||||
|
||||
readObserver.observe(elRef.value);
|
||||
|
||||
connection = os.stream.useChannel('main');
|
||||
connection.on('readAllNotifications', () => readObserver.unobserve(elRef.value));
|
||||
}
|
||||
const connection = os.stream.useChannel('main');
|
||||
connection.on('readAllNotifications', () => readObserver.disconnect());
|
||||
|
||||
onUnmounted(() => {
|
||||
if (readObserver) readObserver.unobserve(elRef.value);
|
||||
if (connection) connection.dispose();
|
||||
readObserver.disconnect();
|
||||
connection.dispose();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const followRequestDone = ref(false);
|
||||
|
|
Loading…
Reference in a new issue