fix: new sessions miss notifications
Docker Image CI / build-and-push-image (push) Waiting to run
Maintain Release Merge PR / update-release-pr (push) Waiting to run
release-please / release-please (push) Waiting to run
test / test (18.x) (push) Waiting to run
test / test (20.x) (push) Waiting to run
test / test (22.x) (push) Waiting to run

This commit is contained in:
KernelDeimos
2024-11-14 19:25:57 -05:00
parent d0f16c8105
commit b1ffb8eca1
3 changed files with 19 additions and 5 deletions
@@ -35,6 +35,10 @@ class NotificationService extends BaseService {
express: require('express'),
}
_construct () {
this.merged_on_user_connected_ = {};
}
async _init () {
const svc_database = this.services.get('database');
this.db = svc_database.get(DB_WRITE, 'notification');
@@ -109,6 +113,13 @@ class NotificationService extends BaseService {
}
async on_user_connected ({ user }) {
if ( this.merged_on_user_connected_[user.uuid] ) {
clearTimeout(this.merged_on_user_connected_[user.uuid]);
}
this.merged_on_user_connected_[user.uuid] =
setTimeout(() => this.do_on_user_connected({ user }), 2000);
}
async do_on_user_connected ({ user }) {
// query the users unread notifications
const notifications = await this.db.read(
'SELECT * FROM `notification` ' +
@@ -116,7 +127,7 @@ class NotificationService extends BaseService {
'ORDER BY created_at ASC',
[user.id]
);
// set all the notifications to "shown"
const shown_ts = Math.floor(Date.now() / 1000);
await this.db.write(
@@ -140,7 +151,7 @@ class NotificationService extends BaseService {
notification: notif.value,
})
}
// send the unread notifications to gui
const svc_event = this.services.get('event');
svc_event.emit('outer.gui.notif.unreads', {
+5 -3
View File
@@ -183,9 +183,11 @@ class WebServerService extends BaseService {
socket.on('trash.is_empty', (msg) => {
socket.broadcast.to(socket.user.id).emit('trash.is_empty', msg);
});
const svc_event = this.services.get('event');
svc_event.emit('web.socket.user-connected', {
user: socket.user
socket.on('puter_is_actually_open', (msg) => {
const svc_event = this.services.get('event');
svc_event.emit('web.socket.user-connected', {
user: socket.user
});
});
});
+1
View File
@@ -66,6 +66,7 @@ async function UIDesktop(options){
window.socket.on('connect', function(){
// console.log('GUI Socket: Connected', window.socket.id);
window.socket.emit('puter_is_actually_open');
});
window.socket.on('reconnect', function(){