Fix avatars not being found in cache (#1027)

This commit is contained in:
Nekromateion
2024-12-16 08:29:38 +01:00
committed by GitHub
parent ba7464d9c2
commit 8f95bb5139
2 changed files with 16 additions and 8 deletions
+15 -6
View File
@@ -66,13 +66,13 @@ namespace VRCX
return versionHex.PadLeft(32, '0'); return versionHex.PadLeft(32, '0');
} }
public int ReverseHexToDecimal(string hexString) public (int, int) ReverseHexToDecimal(string hexString)
{ {
if (hexString.Length != 32) if (hexString.Length != 32)
return 0; // it's cooked return (0, 0); // it's cooked
try { try {
var variantVersionHexString = hexString.Substring(16, 8); // 16..24 var variantVersionHexString = hexString.Substring(0, 8); // 0..8
var versionHexString = hexString.Substring(24, 8); // 24..32 var versionHexString = hexString.Substring(24, 8); // 24..32
var versionBytes = new byte[4]; var versionBytes = new byte[4];
var variantVersionBytes = new byte[4]; var variantVersionBytes = new byte[4];
@@ -85,12 +85,12 @@ namespace VRCX
} }
var version = BitConverter.ToInt32(versionBytes, 0); var version = BitConverter.ToInt32(versionBytes, 0);
var variantVersion = BitConverter.ToInt32(variantVersionBytes, 0); var variantVersion = BitConverter.ToInt32(variantVersionBytes, 0);
return version + variantVersion; return (version, variantVersion);
} }
catch (Exception ex) catch (Exception ex)
{ {
logger.Error($"Failed to convert hex to decimal: {hexString} {ex}"); logger.Error($"Failed to convert hex to decimal: {hexString} {ex}");
return 0; // it's cooked return (0, 0); // it's cooked
} }
} }
@@ -111,8 +111,17 @@ namespace VRCX
{ {
var cachePath = GetVRChatCacheLocation(); var cachePath = GetVRChatCacheLocation();
var idHash = GetAssetId(id, variant); var idHash = GetAssetId(id, variant);
var topDir = Path.Combine(cachePath, idHash);
var versionLocation = GetAssetVersion(version, variantVersion); var versionLocation = GetAssetVersion(version, variantVersion);
return Path.Combine(cachePath, idHash, versionLocation); if (!Directory.Exists(topDir))
return Path.Combine(topDir, versionLocation);
var versionSearchPattern = string.Concat("*", versionLocation.AsSpan(8));
var dirs = Directory.GetDirectories(topDir, versionSearchPattern);
if (dirs.Length > 0)
return dirs.OrderByDescending(dir => ReverseHexToDecimal(Path.GetFileName(dir)).Item2).First();
return Path.Combine(topDir, versionLocation);
} }
/// <summary> /// <summary>
-1
View File
@@ -16699,7 +16699,6 @@ speechSynthesis.getVoices();
var unityPackage = ref.unityPackages[i]; var unityPackage = ref.unityPackages[i];
if ( if (
unityPackage.variant && unityPackage.variant &&
unityPackage.variant !== 'standard' &&
unityPackage.variant !== 'security' unityPackage.variant !== 'security'
) { ) {
continue; continue;