using InkForge.Desktop.Data.Options;

using Microsoft.Extensions.DependencyInjection;

namespace InkForge.Desktop.Models;

public sealed class Workspace(IServiceScope scope) : IDisposable
{
	private bool _disposedValue;
	private IServiceScope? _scope = scope;

	public string Name { get; set; } = default!;

	public LocalWorkspaceOptions Options { get; set; } = default!;

	public IServiceProvider Services { get; } = scope.ServiceProvider;

	public void Dispose()
	{
		if (!_disposedValue)
		{
			if (_scope is { })
			{
				_scope.Dispose();
				_scope = null;
			}

			_disposedValue = true;
		}
	}
}
