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
+51 -38
View File
@@ -7274,8 +7274,8 @@ speechSynthesis.getVoices();
treeData: [], treeData: [],
memo: '', memo: '',
$avatarInfo: { $avatarInfo: {
id: '', ownerId: '',
name: '', avatarName: '',
} }
}; };
@@ -7877,18 +7877,23 @@ 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); for (var ref of API.cachedAvatars.values()) {
if (id) { if (ref.imageUrl === currentAvatarImageUrl) {
API.call(`file/${id}`).then(({ ownerId }) => { this.showAvatarDialog(ref.id);
for (var ref of API.cachedAvatars.values()) { return;
if (ref.imageUrl === currentAvatarImageUrl) { }
this.showAvatarDialog(ref.id); }
return; var fileId = extractFileId(currentAvatarImageUrl);
} if (fileId) {
} if (API.cachedAvatarNames.has(fileId)) {
D.loading = true; var { ownerId } = API.cachedAvatarNames.get(fileId);
var params = { } else {
n: 50, var args = API.getAvatarImages({fileId: fileId});
var ownerId = args.json.ownerId;
}
D.loading = true;
var params = {
n: 50,
offset: 0, offset: 0,
sort: 'updated', sort: 'updated',
order: 'descending', order: 'descending',
@@ -7919,9 +7924,8 @@ speechSynthesis.getVoices();
}); });
return; return;
} }
this.showUserDialog(ownerId); this.showUserDialog(ownerId);
} }
});
}); });
} else { } else {
this.$message({ this.$message({
@@ -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