Remove userdialog playtime & fix screenshot search worldName

This commit is contained in:
Natsumi
2025-02-25 05:58:23 +13:00
parent a5a5e6f892
commit dd54bd3c05
6 changed files with 57 additions and 21 deletions
+8
View File
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
using System.Threading.Tasks;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
@@ -16,6 +18,12 @@ namespace VRCX
{
public partial class AppApi
{
public void PopulateImageHosts(string json)
{
var hosts = JsonSerializer.Deserialize<List<string>>(json);
ImageCache.PopulateImageHosts(hosts);
}
public async Task<string> GetImage(string url, string fileId, string version)
{
return await ImageCache.GetImage(url, fileId, version);
+19 -3
View File
@@ -12,7 +12,7 @@ internal static class ImageCache
{
private static readonly string cacheLocation;
private static readonly HttpClient httpClient;
private static readonly List<string> _imageHosts =
private static readonly List<string> ImageHosts =
[
"api.vrchat.cloud",
"files.vrchat.cloud",
@@ -30,6 +30,22 @@ internal static class ImageCache
httpClient = new HttpClient(httpClientHandler);
httpClient.DefaultRequestHeaders.Add("User-Agent", Program.Version);
}
public static void PopulateImageHosts(List<string> hosts)
{
foreach (var host in hosts)
{
if (string.IsNullOrEmpty(host))
continue;
var uri = new Uri(host);
if (string.IsNullOrEmpty(uri.Host))
continue;
if (!ImageHosts.Contains(uri.Host))
ImageHosts.Add(uri.Host);
}
}
public static async Task<string> GetImage(string url, string fileId, string version)
{
@@ -47,7 +63,7 @@ internal static class ImageCache
Directory.CreateDirectory(directoryLocation);
var uri = new Uri(url);
if (!_imageHosts.Contains(uri.Host))
if (!ImageHosts.Contains(uri.Host))
throw new ArgumentException("Invalid image host", url);
var cookieString = string.Empty;
@@ -91,7 +107,7 @@ internal static class ImageCache
public static async Task<bool> SaveImageToFile(string url, string path)
{
var uri = new Uri(url);
if (!_imageHosts.Contains(uri.Host))
if (!ImageHosts.Contains(uri.Host))
throw new ArgumentException("Invalid image host", url);
var cookieString = string.Empty;
@@ -101,7 +101,10 @@ namespace VRCX
break;
case ScreenshotSearchType.WorldName:
if (metadata.World.Name.IndexOf(query, StringComparison.OrdinalIgnoreCase) != -1)
if (metadata.World.Name == null)
continue;
if (metadata.World.Name.Contains(query, StringComparison.OrdinalIgnoreCase))
result.Add(metadata);
break;
@@ -107,7 +107,7 @@ namespace VRCX
/// <summary>
/// The display name of the user.
/// </summary>
public string DisplayName { get; set; }
public string? DisplayName { get; set; }
}
public class WorldDetail
@@ -120,7 +120,7 @@ namespace VRCX
/// <summary>
/// The name of the world.
/// </summary>
public string Name { get; set; }
public string? Name { get; set; }
/// <summary>
/// The full ID of the game instance.