Cleanup avatar name cache

This commit is contained in:
Natsumi
2021-04-05 08:07:02 +12:00
parent 90ff269815
commit d0b0317b76
2 changed files with 54 additions and 41 deletions

View File

@@ -7274,8 +7274,8 @@ speechSynthesis.getVoices();
treeData: [],
memo: '',
$avatarInfo: {
id: '',
name: '',
ownerId: '',
avatarName: '',
}
};
@@ -7877,18 +7877,23 @@ speechSynthesis.getVoices();
});
} else if (command === 'Show Avatar Details') {
var { currentAvatarImageUrl } = D.ref;
var id = extractFileId(currentAvatarImageUrl);
if (id) {
API.call(`file/${id}`).then(({ ownerId }) => {
for (var ref of API.cachedAvatars.values()) {
if (ref.imageUrl === currentAvatarImageUrl) {
this.showAvatarDialog(ref.id);
return;
}
}
D.loading = true;
var params = {
n: 50,
for (var ref of API.cachedAvatars.values()) {
if (ref.imageUrl === currentAvatarImageUrl) {
this.showAvatarDialog(ref.id);
return;
}
}
var fileId = extractFileId(currentAvatarImageUrl);
if (fileId) {
if (API.cachedAvatarNames.has(fileId)) {
var { ownerId } = API.cachedAvatarNames.get(fileId);
} else {
var args = API.getAvatarImages({fileId: fileId});
var ownerId = args.json.ownerId;
}
D.loading = true;
var params = {
n: 50,
offset: 0,
sort: 'updated',
order: 'descending',
@@ -7919,9 +7924,8 @@ speechSynthesis.getVoices();
});
return;
}
this.showUserDialog(ownerId);
}
});
this.showUserDialog(ownerId);
}
});
} else {
this.$message({
@@ -10339,8 +10343,8 @@ speechSynthesis.getVoices();
});
};
API.getAvatarImages = function (params) {
return this.call(`file/${params.fileId}`, {
API.getAvatarImages = async function (params) {
return await this.call(`file/${params.fileId}`, {
method: 'GET',
params
}).then((json) => {
@@ -10348,10 +10352,32 @@ speechSynthesis.getVoices();
json,
params
};
this.$emit('AVATARIMAGE:GET', args);
return args;
});
};
API.$on('AVATARIMAGE:GET', function (args) {
$app.storeAvatarImage(args);
});
$app.methods.storeAvatarImage = function (args) {
var fileId = args.params.fileId;
var avatarName = '';
var imageName = args.json.name;
var avatarNameRegex = /Avatar - (.*) - Image -/g.exec(imageName);
if (avatarNameRegex) {
avatarName = avatarNameRegex[1];
}
var ownerId = args.json.ownerId;
var avatarInfo = {
ownerId,
avatarName
};
API.cachedAvatarNames.set(fileId, avatarInfo);
return avatarInfo;
};
$app.methods.setAvatarImage = function (image) {
this.changeAvatarImageDialogLoading = true;
var parmas = {
@@ -10388,19 +10414,17 @@ speechSynthesis.getVoices();
$app.methods.getAvatarName = function (args) {
var D = this.userDialog;
D.$avatarInfo = {
id: '',
name: '-'
ownerId: '',
avatarName: '-'
};
if (!D.visible) {
return;
}
var imageUrl = D.ref.currentAvatarImageUrl;
if (imageUrl.substring(0, 41) !== 'https://api.vrchat.cloud/api/1/file/file_') {
var fileId = extractFileId(imageUrl);
if (!fileId) {
return;
}
var url = new URL(imageUrl);
var pathArray = url.pathname.split('/');
var fileId = pathArray[4];
if (API.cachedAvatarNames.has(fileId)) {
D.$avatarInfo = API.cachedAvatarNames.get(fileId);
return;
@@ -10409,19 +10433,8 @@ speechSynthesis.getVoices();
fileId
};
API.getAvatarImages(params).then((args) => {
var name = '';
var imageName = args.json.name;
var avatarNameRegex = /Avatar - (.*) - Image -/g.exec(imageName);
if (avatarNameRegex) {
name = avatarNameRegex[1];
}
var id = args.json.ownerId;
var avatarInfo = {
id,
name
};
API.cachedAvatarNames.set(fileId, avatarInfo);
D.$avatarInfo = avatarInfo;
var avatarInfo = this.storeAvatarImage(args);
this.userDialog.$avatarInfo = avatarInfo;
});
};

View File

@@ -1018,9 +1018,9 @@ html
.detail
span.name Avatar Name
.extra(@click="userDialogCommand('Show Avatar Details')" style="cursor:pointer;width:fit-content")
span(v-text="userDialog.$avatarInfo.name" style="display:inline-block;margin-right:5px")
span(v-if="userDialog.$avatarInfo.id === userDialog.id" style="display:inline-block;color:#E6A23C" ) (own)
span(v-else-if="userDialog.$avatarInfo.name && userDialog.$avatarInfo.id" style="display:inline-block;color:#67C23A") (public)
span(v-text="userDialog.$avatarInfo.avatarName" style="display:inline-block;margin-right:5px")
span(v-if="userDialog.$avatarInfo.ownerId === userDialog.id" style="display:inline-block;color:#E6A23C" ) (own)
span(v-else-if="userDialog.$avatarInfo.avatarName && userDialog.$avatarInfo.ownerId" style="display:inline-block;color:#67C23A") (public)
.x-friend-item(style="width:100%;cursor:default")
.detail
span.name Bio