mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 22:46:06 +02:00
Cleanup avatar name cache
This commit is contained in:
+40
-27
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user