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
+40 -27
View File
@@ -7274,8 +7274,8 @@ speechSynthesis.getVoices();
treeData: [], treeData: [],
memo: '', memo: '',
$avatarInfo: { $avatarInfo: {
id: '', ownerId: '',
name: '', avatarName: '',
} }
}; };
@@ -7877,15 +7877,20 @@ speechSynthesis.getVoices();
}); });
} else if (command === 'Show Avatar Details') { } else if (command === 'Show Avatar Details') {
var { currentAvatarImageUrl } = D.ref; var { currentAvatarImageUrl } = D.ref;
var id = extractFileId(currentAvatarImageUrl);
if (id) {
API.call(`file/${id}`).then(({ ownerId }) => {
for (var ref of API.cachedAvatars.values()) { for (var ref of API.cachedAvatars.values()) {
if (ref.imageUrl === currentAvatarImageUrl) { if (ref.imageUrl === currentAvatarImageUrl) {
this.showAvatarDialog(ref.id); this.showAvatarDialog(ref.id);
return; 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; D.loading = true;
var params = { var params = {
n: 50, n: 50,
@@ -7922,7 +7927,6 @@ speechSynthesis.getVoices();
this.showUserDialog(ownerId); this.showUserDialog(ownerId);
} }
}); });
});
} else { } else {
this.$message({ this.$message({
message: 'Sorry, the author is unknown', message: 'Sorry, the author is unknown',
@@ -10339,8 +10343,8 @@ speechSynthesis.getVoices();
}); });
}; };
API.getAvatarImages = function (params) { API.getAvatarImages = async function (params) {
return this.call(`file/${params.fileId}`, { return await this.call(`file/${params.fileId}`, {
method: 'GET', method: 'GET',
params params
}).then((json) => { }).then((json) => {
@@ -10348,10 +10352,32 @@ speechSynthesis.getVoices();
json, json,
params params
}; };
this.$emit('AVATARIMAGE:GET', args);
return 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) { $app.methods.setAvatarImage = function (image) {
this.changeAvatarImageDialogLoading = true; this.changeAvatarImageDialogLoading = true;
var parmas = { var parmas = {
@@ -10388,19 +10414,17 @@ speechSynthesis.getVoices();
$app.methods.getAvatarName = function (args) { $app.methods.getAvatarName = function (args) {
var D = this.userDialog; var D = this.userDialog;
D.$avatarInfo = { D.$avatarInfo = {
id: '', ownerId: '',
name: '-' avatarName: '-'
}; };
if (!D.visible) { if (!D.visible) {
return; return;
} }
var imageUrl = D.ref.currentAvatarImageUrl; 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; return;
} }
var url = new URL(imageUrl);
var pathArray = url.pathname.split('/');
var fileId = pathArray[4];
if (API.cachedAvatarNames.has(fileId)) { if (API.cachedAvatarNames.has(fileId)) {
D.$avatarInfo = API.cachedAvatarNames.get(fileId); D.$avatarInfo = API.cachedAvatarNames.get(fileId);
return; return;
@@ -10409,19 +10433,8 @@ speechSynthesis.getVoices();
fileId fileId
}; };
API.getAvatarImages(params).then((args) => { API.getAvatarImages(params).then((args) => {
var name = ''; var avatarInfo = this.storeAvatarImage(args);
var imageName = args.json.name; this.userDialog.$avatarInfo = avatarInfo;
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;
}); });
}; };
+3 -3
View File
@@ -1018,9 +1018,9 @@ html
.detail .detail
span.name Avatar Name span.name Avatar Name
.extra(@click="userDialogCommand('Show Avatar Details')" style="cursor:pointer;width:fit-content") .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-text="userDialog.$avatarInfo.avatarName" style="display:inline-block;margin-right:5px")
span(v-if="userDialog.$avatarInfo.id === userDialog.id" style="display:inline-block;color:#E6A23C" ) (own) span(v-if="userDialog.$avatarInfo.ownerId === 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-else-if="userDialog.$avatarInfo.avatarName && userDialog.$avatarInfo.ownerId" style="display:inline-block;color:#67C23A") (public)
.x-friend-item(style="width:100%;cursor:default") .x-friend-item(style="width:100%;cursor:default")
.detail .detail
span.name Bio span.name Bio