mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-19 14:53:50 +02:00
Fix friends++, saving prints, deleted userdata
This commit is contained in:
@@ -199,17 +199,20 @@ namespace VRCX
|
|||||||
|
|
||||||
await print.SaveAsPngAsync(tempPath);
|
await print.SaveAsPngAsync(tempPath);
|
||||||
|
|
||||||
using var oldPngFile = new PNGFile(path);
|
var oldPngFile = new PNGFile(path);
|
||||||
using var newPngFile = new PNGFile(tempPath);
|
var newPngFile = new PNGFile(tempPath);
|
||||||
|
|
||||||
// Copy all iTXt chunks to new file
|
// Copy all iTXt chunks to new file
|
||||||
var textChunks = oldPngFile.GetChunksOfType(PNGChunkTypeFilter.iTXt);
|
var textChunks = oldPngFile.GetChunksOfType(PNGChunkTypeFilter.iTXt);
|
||||||
|
|
||||||
for (var i = 0; i < textChunks.Count; i++)
|
for (var i = 0; i < textChunks.Count; i++)
|
||||||
{
|
{
|
||||||
newPngFile.WriteChunk(textChunks[i]);
|
newPngFile.WriteChunk(textChunks[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldPngFile.Dispose();
|
||||||
|
newPngFile.Dispose();
|
||||||
|
|
||||||
File.Move(tempPath, path, true);
|
File.Move(tempPath, path, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,20 +24,8 @@ namespace VRCX
|
|||||||
internal void Init()
|
internal void Init()
|
||||||
{
|
{
|
||||||
var userDataDir = Path.Join(Program.AppDataDirectory, "userdata");
|
var userDataDir = Path.Join(Program.AppDataDirectory, "userdata");
|
||||||
|
|
||||||
// delete userdata if Cef version has been downgraded, fixes VRCX not opening after a downgrade
|
// delete userdata if Cef version has been downgraded, fixes VRCX not opening after a downgrade
|
||||||
var currentVersion = Cef.ChromiumVersion;
|
CheckCefVersion(userDataDir);
|
||||||
if (File.Exists(_lastCefVersionPath))
|
|
||||||
{
|
|
||||||
var lastCefVersion = File.ReadAllText(_lastCefVersionPath).Trim();
|
|
||||||
if (string.Compare(lastCefVersion, currentVersion, StringComparison.Ordinal) > 0)
|
|
||||||
{
|
|
||||||
logger.Info("Cef downgrade detected, deleting userdata: {0} -> {1}", lastCefVersion, currentVersion);
|
|
||||||
Directory.Delete(userDataDir, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File.WriteAllBytes(_lastCefVersionPath, Encoding.UTF8.GetBytes(currentVersion));
|
|
||||||
logger.Info("Cef version: {0}", currentVersion);
|
|
||||||
|
|
||||||
var cefSettings = new CefSettings
|
var cefSettings = new CefSettings
|
||||||
{
|
{
|
||||||
@@ -125,6 +113,51 @@ namespace VRCX
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckCefVersion(string userDataDir)
|
||||||
|
{
|
||||||
|
var currentVersion = Cef.ChromiumVersion;
|
||||||
|
if (File.Exists(_lastCefVersionPath))
|
||||||
|
{
|
||||||
|
var lastCefVersion = File.ReadAllText(_lastCefVersionPath).Trim();
|
||||||
|
var lastCefVersionParts = lastCefVersion.Split('.');
|
||||||
|
var currentVersionParts = currentVersion.Split('.');
|
||||||
|
if (lastCefVersionParts.Length != currentVersionParts.Length)
|
||||||
|
{
|
||||||
|
logger.Info("Cef version mismatch detected, deleting userdata: {0} -> {1}", lastCefVersion,
|
||||||
|
currentVersion);
|
||||||
|
DeleteUserData(userDataDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < lastCefVersionParts.Length; i++)
|
||||||
|
{
|
||||||
|
if (int.TryParse(lastCefVersionParts[i], out var lastPart) &&
|
||||||
|
int.TryParse(currentVersionParts[i], out var currentPart) &&
|
||||||
|
lastPart > currentPart)
|
||||||
|
{
|
||||||
|
logger.Info("Cef downgrade detected, deleting userdata: {0} -> {1}", lastCefVersion,
|
||||||
|
currentVersion);
|
||||||
|
DeleteUserData(userDataDir);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
File.WriteAllBytes(_lastCefVersionPath, Encoding.UTF8.GetBytes(currentVersion));
|
||||||
|
logger.Info("Cef version: {0}", currentVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DeleteUserData(string userDataDir)
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(userDataDir))
|
||||||
|
return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Directory.Delete(userDataDir, true);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.Error(ex, "Failed to delete userdata directory: {0}", userDataDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal void Exit()
|
internal void Exit()
|
||||||
{
|
{
|
||||||
Cef.Shutdown();
|
Cef.Shutdown();
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ export const useDiscordPresenceSettingsStore = defineStore(
|
|||||||
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_friend')} #${L.instanceName} (${platform})`;
|
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_friend')} #${L.instanceName} (${platform})`;
|
||||||
break;
|
break;
|
||||||
case 'friends+':
|
case 'friends+':
|
||||||
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_friend_plus')}+ #${L.instanceName} (${platform})`;
|
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_friend_plus')} #${L.instanceName} (${platform})`;
|
||||||
break;
|
break;
|
||||||
case 'group':
|
case 'group':
|
||||||
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_group')} #${L.instanceName} (${platform})`;
|
state.lastLocationDetails.accessName = `${t('dialog.new_instance.access_type_group')} #${L.instanceName} (${platform})`;
|
||||||
|
|||||||
Reference in New Issue
Block a user