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
},