VRCMelonAssistant/ModAssistant/Classes/External Interfaces/Utils.cs
2020-11-16 13:22:30 +00:00

80 lines
2.8 KiB
C#

using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Windows;
namespace ModAssistant.API
{
public class Utils
{
public static readonly string BeatSaberPath = App.BeatSaberInstallDirectory;
public static void SetMessage(string message)
{
if (App.OCIWindow != "No")
{
if (App.window == null)
{
if (App.OCIWindow == "No") OneClickStatus.Instance = null;
if (OneClickStatus.Instance == null) return;
OneClickStatus.Instance.MainText = message;
}
else
{
MainWindow.Instance.MainText = message;
}
}
}
public static async Task DownloadAsset(string link, string folder, bool showNotifcation, string fileName = null)
{
await DownloadAsset(link, folder, fileName, null, showNotifcation);
}
public static async Task DownloadAsset(string link, string folder, string fileName = null, string displayName = null)
{
await DownloadAsset(link, folder, fileName, displayName, true);
}
public static async Task DownloadAsset(string link, string folder, string fileName, string displayName, bool showNotification, bool beatsaver = false)
{
if (string.IsNullOrEmpty(BeatSaberPath))
{
ModAssistant.Utils.SendNotify((string)Application.Current.FindResource("OneClick:InstallDirNotFound"));
}
try
{
Directory.CreateDirectory(Path.Combine(BeatSaberPath, folder));
if (string.IsNullOrEmpty(fileName))
{
fileName = WebUtility.UrlDecode(Path.Combine(BeatSaberPath, folder, new Uri(link).Segments.Last()));
}
else
{
fileName = WebUtility.UrlDecode(Path.Combine(BeatSaberPath, folder, fileName));
}
if (string.IsNullOrEmpty(displayName))
{
displayName = Path.GetFileNameWithoutExtension(fileName);
}
if (beatsaver) await BeatSaver.Download(link, fileName);
else await ModAssistant.Utils.Download(link, fileName);
if (showNotification)
{
SetMessage(string.Format((string)Application.Current.FindResource("OneClick:InstalledAsset"), displayName));
}
}
catch
{
SetMessage((string)Application.Current.FindResource("OneClick:AssetInstallFailed"));
App.CloseWindowOnFinish = false;
}
}
}
}