safeSaveFile for both strings and bytes

Co-Authored-By: Ne_Eo <NeeEoo@users.noreply.github.com>
This commit is contained in:
⍚~Nex
2024-03-17 19:16:37 +01:00
co-authored by Ne_Eo
parent 69c9030b9c
commit b87e3f79f7
+10 -5
View File
@@ -2,6 +2,7 @@ package funkin.backend.utils;
import flixel.text.FlxText;
import funkin.backend.utils.XMLUtil.TextFormat;
import flixel.util.typeLimit.OneOfTwo;
import flixel.tweens.FlxTween;
import flixel.system.frontEnds.SoundFrontEnd;
import flixel.sound.FlxSound;
@@ -9,6 +10,7 @@ import funkin.backend.system.Conductor;
import flixel.sound.FlxSoundGroup;
import haxe.Json;
import haxe.io.Path;
import haxe.io.Bytes;
import haxe.xml.Access;
import flixel.input.keyboard.FlxKey;
import lime.utils.Assets;
@@ -78,14 +80,17 @@ class CoolUtil
}
/**
* Safe saves a file (even adding missing folder) and shows a warning box instead of making the program crash
* Safe saves a file (even adding eventual missing folders) and shows a warning box instead of making the program crash
* @param path Path to save the file at.
* @param data Content of the file to save.
* @param content Content of the file to save (as String or Bytes).
*/
@:noUsing public static function safeSaveFile(path:String, content:String, showErrorBox:Bool = true) {
@:noUsing public static function safeSaveFile(path:String, content:OneOfTwo<String, Bytes>, showErrorBox:Bool = true) {
#if sys
try sys.io.File.saveContent(addMissingFolders(path), content)
catch(e) {
try {
addMissingFolders(Path.directory(path));
if(content is Bytes) sys.io.File.saveBytes(path, content);
else sys.io.File.saveContent(path, content);
} catch(e) {
var errMsg:String = 'Error while trying to save the file: ${Std.string(e).replace('\n', ' ')}';
Logs.traceColored([Logs.logText(errMsg, RED)], ERROR);
if(showErrorBox) funkin.backend.utils.NativeAPI.showMessageBox("Codename Engine Warning", errMsg, MSG_WARNING);