diff --git a/html/src/app.js b/html/src/app.js index a161da40..cb23cfd5 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -329,8 +329,13 @@ speechSynthesis.getVoices(); console.error('API.$on(USER) invalid args', args); return; } - $app.updateFriend({ id: args.json.id, state: args.json.state }); // online/offline - args.ref = this.applyUser(args.json); // GPS + if (args.json.state === 'online') { + args.ref = this.applyUser(args.json); // GPS + $app.updateFriend({ id: args.json.id, state: args.json.state }); // online/offline + } else { + $app.updateFriend({ id: args.json.id, state: args.json.state }); // online/offline + args.ref = this.applyUser(args.json); // GPS + } }); API.$on('USER:LIST', function (args) { @@ -487,6 +492,7 @@ speechSynthesis.getVoices(); } if (typeof ref === 'undefined') { ref = { + ageVerificationStatus: '', allowAvatarCopying: false, badges: [], bio: '', diff --git a/html/src/classes/currentUser.js b/html/src/classes/currentUser.js index 95105bb3..3310f8e9 100644 --- a/html/src/classes/currentUser.js +++ b/html/src/classes/currentUser.js @@ -195,6 +195,8 @@ export default class extends baseClass { accountDeletionDate: null, accountDeletionLog: null, activeFriends: [], + ageVerificationStatus: '', + ageVerified: false, allowAvatarCopying: false, badges: [], bio: '', diff --git a/html/src/classes/websocket.js b/html/src/classes/websocket.js index fabe4476..231e4984 100644 --- a/html/src/classes/websocket.js +++ b/html/src/classes/websocket.js @@ -1,6 +1,6 @@ import * as workerTimers from 'worker-timers'; import Noty from 'noty'; -import { baseClass, $app, API, $t } from './baseClass.js'; +import { baseClass, $app, API, $t, $utils } from './baseClass.js'; export default class extends baseClass { constructor(_app, _API, _t) { @@ -262,12 +262,28 @@ export default class extends baseClass { break; case 'friend-online': + // Where is instanceId, travelingToWorld, travelingToInstance? + // More JANK, what a mess + var $location = $utils.parseLocation(content.location); + var $travelingToLocation = $utils.parseLocation( + content.travelingToLocation + ); if (content?.user?.id) { this.$emit('USER', { json: { + id: content.userId, + platform: content.platform, + state: 'online', + location: content.location, + worldId: content.worldId, + instanceId: $location.instanceId, travelingToLocation: content.travelingToLocation, + travelingToWorld: $travelingToLocation.worldId, + travelingToInstance: + $travelingToLocation.instanceId, + ...content.user }, params: { @@ -288,13 +304,6 @@ export default class extends baseClass { case 'friend-active': if (content?.user?.id) { - this.$emit('USER', { - json: content.user, - params: { - userId: content.userId - } - }); - } else { this.$emit('USER', { json: { id: content.userId, @@ -306,7 +315,18 @@ export default class extends baseClass { instanceId: 'offline', travelingToLocation: 'offline', travelingToWorld: 'offline', - travelingToInstance: 'offline' + travelingToInstance: 'offline', + + ...content.user + }, + params: { + userId: content.userId + } + }); + } else { + this.$emit('FRIEND:STATE', { + json: { + state: 'active' }, params: { userId: content.userId @@ -346,6 +366,10 @@ export default class extends baseClass { break; case 'friend-location': + var $location = $utils.parseLocation(content.location); + var $travelingToLocation = $utils.parseLocation( + content.travelingToLocation + ); if (!content?.user?.id) { var ref = this.cachedUsers.get(content.userId); if (typeof ref !== 'undefined') { @@ -353,8 +377,14 @@ export default class extends baseClass { json: { ...ref, location: content.location, + worldId: content.worldId, + instanceId: $location.instanceId, travelingToLocation: - content.travelingToLocation + content.travelingToLocation, + travelingToWorld: + $travelingToLocation.worldId, + travelingToInstance: + $travelingToLocation.instanceId }, params: { userId: content.userId @@ -366,7 +396,12 @@ export default class extends baseClass { this.$emit('USER', { json: { location: content.location, + worldId: content.worldId, + instanceId: $location.instanceId, travelingToLocation: content.travelingToLocation, + travelingToWorld: $travelingToLocation.worldId, + travelingToInstance: + $travelingToLocation.instanceId, ...content.user, state: 'online' // JANK },