Skip to content

Commit db1bcbc

Browse files
committed
Add ?v= cache breaker to avatar
1 parent d92ce9d commit db1bcbc

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

BlazorDiffusion.ServiceInterface/MyServices.cs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
using System.Linq;
77
using BlazorDiffusion.ServiceInterface.AiServer;
88
using ServiceStack.Text;
9+
using SixLabors.ImageSharp;
10+
using SixLabors.ImageSharp.Formats.Webp;
911

1012
namespace BlazorDiffusion.ServiceInterface;
1113

@@ -40,13 +42,35 @@ public async Task<object> Any(UpdateUserProfile request)
4042
var file = Request.Files.FirstOrDefault();
4143
if (file != null)
4244
{
43-
var fileName = $"/avatars/{userId.ToString()}.{file.FileName.LastRightPart('.')}";
44-
var response = await aiClient.Client.PostFileWithRequestAsync<StoreFileUploadResponse>(file.InputStream, fileName, new StoreFileUpload {
45+
var imageStream = file.InputStream;
46+
var ms = MemoryStreamFactory.GetStream((int)file.ContentLength);
47+
var ext = file.FileName.LastRightPart('.');
48+
if (ext != "webp")
49+
{
50+
var image = await Image.LoadAsync(imageStream);
51+
await image.SaveAsWebpAsync(ms, new WebpEncoder { Quality = 80 });
52+
await imageStream.DisposeAsync();
53+
ms.Position = 0;
54+
imageStream = ms;
55+
ext = "webp";
56+
}
57+
58+
var fileName = $"/avatars/{userId.ToString()}.{ext}";
59+
var response = await aiClient.Client.PostFileWithRequestAsync<StoreFileUploadResponse>(imageStream, fileName, new StoreFileUpload {
4560
Name = "pub"
4661
});
4762
var publicPath = response.Results?.FirstOrDefault()
4863
?? throw new Exception("File Upload Failed");
49-
request.Avatar = "/variants/width=128".CombineWith(publicPath);
64+
var v = 0;
65+
if (userInfo.Avatar != null && userInfo.Avatar.Contains('?'))
66+
{
67+
var qs = PclExportClient.Instance.ParseQueryString(userInfo.Avatar);
68+
if (qs["v"] != null && int.TryParse(qs["v"], out var qsValue))
69+
v = qsValue;
70+
}
71+
v += 1;
72+
var nextAvatar = "/variants/width=128".CombineWith(publicPath).AddQueryParam("v", v.ToString());
73+
request.Avatar = nextAvatar;
5074
}
5175

5276
if (string.IsNullOrWhiteSpace(request.DisplayName))

BlazorDiffusion/wwwroot/pages/Header.mjs

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)