Use image cache from chromium

This commit is contained in:
Natsumi
2021-04-16 00:07:14 +12:00
parent 96a1f3873c
commit d7526716ad
3 changed files with 28 additions and 17 deletions

View File

@@ -210,22 +210,10 @@ namespace VRCX
return CpuMonitor.Instance.CpuUsage;
}
public bool CacheImage(string ImageURL, string AppVersion)
public void CacheImage(string Base64File)
{
String Icon = Path.Combine(Program.BaseDirectory, "cache\\toast");
try
{
using (var client = new WebClient())
{
client.Headers.Add("user-agent", AppVersion);
client.DownloadFile(ImageURL, Icon);
}
}
catch (WebException)
{
return false;
}
return true;
File.WriteAllBytes(Icon, Convert.FromBase64String(Base64File));
}
public void DesktopNotification(string BoldText, string Text, bool Image)

View File

@@ -1,4 +1,4 @@
using CefSharp;
using CefSharp;
using CefSharp.WinForms;
using System;
using System.IO;
@@ -41,7 +41,7 @@ namespace VRCX
cefSettings.CefCommandLineArgs.Add("disable-extensions");
cefSettings.CefCommandLineArgs["autoplay-policy"] = "no-user-gesture-required";
// cefSettings.CefCommandLineArgs.Add("allow-universal-access-from-files");
// cefSettings.CefCommandLineArgs.Add("disable-web-security");
cefSettings.CefCommandLineArgs.Add("disable-web-security");
cefSettings.SetOffScreenRenderingBestPerformanceArgs();
CefSharpSettings.WcfEnabled = true; // TOOD: REMOVE THIS LINE YO

View File

@@ -4318,7 +4318,30 @@ speechSynthesis.getVoices();
((this.desktopToast === 'Game Closed') && (!this.isGameRunning)) ||
((this.desktopToast === 'Desktop Mode') && (this.isGameNoVR) && (this.isGameRunning))) ||
((this.xsNotifications) && (this.isGameRunning) && (!this.isGameNoVR)))) {
var image = await AppApi.CacheImage(imageURL, appVersion);
try {
await fetch(imageURL, {
method: 'GET',
redirect: 'follow',
headers: {
'User-Agent': appVersion
}
}).then(response => {
return response.arrayBuffer();
}).then(buffer => {
var binary = '';
var bytes = new Uint8Array(buffer);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
var imageData = btoa(binary);
AppApi.CacheImage(imageData);
});
image = true;
} catch (err) {
console.error(err);
image = false;
}
}
if ((this.xsNotifications) && (this.isGameRunning) && (!this.isGameNoVR)) {
this.displayXSNotification(noty, message, image);