Woah, another user state bug

This commit is contained in:
Natsumi
2024-11-14 07:53:27 +13:00
parent e903b27c27
commit cb3078e73b
3 changed files with 55 additions and 12 deletions

View File

@@ -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: '',

View File

@@ -195,6 +195,8 @@ export default class extends baseClass {
accountDeletionDate: null,
accountDeletionLog: null,
activeFriends: [],
ageVerificationStatus: '',
ageVerified: false,
allowAvatarCopying: false,
badges: [],
bio: '',

View File

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