// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Globalization;
using Microsoft.PowerToys.Settings.UI.Helpers;
namespace Microsoft.PowerToys.Settings.UI.OOBE.Views
{
///
/// View model for a group of releases (grouped by major.minor version).
///
public class ScoobeReleaseGroupViewModel
{
///
/// Gets the list of releases in this group.
///
public IList Releases { get; }
///
/// Gets the version text to display (e.g., "0.96.0").
///
public string VersionText { get; }
///
/// Gets the date text to display (e.g., "December 2025").
///
public string DateText { get; }
public ScoobeReleaseGroupViewModel(IList releases)
{
Releases = releases ?? throw new ArgumentNullException(nameof(releases));
if (releases.Count > 0)
{
var latestRelease = releases[0];
VersionText = GetVersionFromRelease(latestRelease);
DateText = latestRelease.PublishedDate.ToString("MMMM yyyy", CultureInfo.CurrentCulture);
}
else
{
VersionText = "Unknown";
DateText = string.Empty;
}
}
internal static string GetVersionFromRelease(PowerToysReleaseInfo release)
{
// TagName is typically like "v0.96.0", Name might be "Release v0.96.0"
string version = release.TagName ?? release.Name ?? "Unknown";
if (version.StartsWith("v", StringComparison.OrdinalIgnoreCase))
{
version = version.Substring(1);
}
return version;
}
}
}