6dadd272创建于 8月26日历史提交
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Threading;
using DeviceId;
using PixiEditor.OperatingSystem;
using PixiEditor.OperatingSystem.Cryptography;

namespace PixiEditor.MacOs;

public sealed class MacOperatingSystem : IOperatingSystem
{
    public string Name { get; } = "MacOS";

    public string AnalyticsId => "macOS";

    public IInputKeys InputKeys { get; } = new MacOsInputKeys();
    public IProcessUtility ProcessUtility { get; } = new MacOsProcessUtility();

    public IEncryptor Encryptor { get; } = new AesHmacEncryptor(
        new MacDeviceIdBuilder(new DeviceIdBuilder().AddMachineName()).AddSystemDriveSerialNumber()
            .AddPlatformSerialNumber().ToString());

    private List<Uri> activationUris;

    public string ExecutableExtension { get; } = string.Empty;

    public void OpenUri(string uri)
    {
        ProcessUtility.ShellExecute(uri);
    }

    public void OpenFolder(string path)
    {
        ProcessUtility.ShellExecute(Path.GetDirectoryName(path));
    }

    public bool HandleNewInstance(Dispatcher? dispatcher, Action<string, bool> openInExistingAction,
        IApplicationLifetime lifetime)
    {
        return true;
    }

    public string[] GetAvailableRenderers()
    {
        return ["OpenGL"];
    }
}