Repository: microsoft/PowerToys
File: src/settings-ui/Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs (C#)

Code before:

                return _additionalOptions;
            }
        }

        public IEnumerable<PluginMetadataViewModel> PluginMetadataItems => _pluginMetadataList;

        /// <summary>
        /// Generates the list of metadata properties like version, author, website from the plugin settings.
        /// </summary>
        /// <remarks>
        /// The items order in the list defines the order in the ui.
        /// </remarks>
        private static List<PluginMetadataViewModel> GeneratePluginMetadataList(PowerLauncherPluginSettings pluginSettings)
        {
            List<PluginMetadataViewModel> metadataList = new()
                {
                    { PluginMetadataViewModel.MetadataItem(pluginSettings.Version, PluginMetadataViewModel.PluginMetadataType.Version) },
                    { PluginMetadataViewModel.ItemSeparator() },
                    { PluginMetadataViewModel.MetadataItem(pluginSettings.Author, PluginMetadataViewModel.PluginMetadataType.Author) },
                };

            if (Uri.IsWellFormedUriString(pluginSettings.Website, UriKind.Absolute))
            {
                metadataList.Add(PluginMetadataViewModel.ItemSeparator());
                metadataList.Add(PluginMetadataViewModel.MetadataItem(pluginSettings.Website, PluginMetadataViewModel.PluginMetadataType.Link));
            }

            return metadataList;
        }

        public bool ShowAdditionalOptions
        {
            get => AdditionalOptions.Any();
        }

        public override string ToString()
        {
            return $"{Name}. {Description}";
        }

#nullable enable
        public Uri? IconPath => Uri.TryCreate(isDark() ? settings.IconPathDark : settings.IconPathLight, UriKind.Absolute, out var uri) ? uri : null;
#nullable restore

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

Review comment (suggestion):
```suggestion
                metadataList.AddRange(PluginMetadataViewModel.ItemSeparator(), PluginMetadataViewModel.MetadataItem(pluginSettings.Website, PluginMetadataViewModel.PluginMetadataType.Link));
```

Minor improvement: consider using `AddRange(...)`

Code after:
        }

        private IEnumerable<PluginAdditionalOptionViewModel> _additionalOptions;

        public IEnumerable<PluginAdditionalOptionViewModel> AdditionalOptions
        {
            get
            {
                if (_additionalOptions == null)
                {
                    _additionalOptions = settings.AdditionalOptions.Select(x => new PluginAdditionalOptionViewModel(x)).ToList();
                }

                return _additionalOptions;
            }
        }

        public bool ShowAdditionalOptions
        {
            get => AdditionalOptions.Any();
        }

        public override string ToString()
        {
            return $"{Name}. {Description}";
        }

#nullable enable
        public Uri? IconPath => Uri.TryCreate(isDark() ? settings.IconPathDark : settings.IconPathLight, UriKind.Absolute, out var uri) ? uri : null;
#nullable restore

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        public bool ShowNotAccessibleWarning
        {
            get => !Disabled && !IsGlobal && string.IsNullOrWhiteSpace(ActionKeyword);
        }

        // The Badge is shown in case of ANY error event, but NEVER when the plugin is disabled.
        // Logic = !disabled && (errorA or errorB or errorC...)
        // Current count of possible error events: 1 (NotAccessible)
        public bool ShowBadgeOnPluginSettingError
        {
            get => !Disabled && ShowNotAccessibleWarning;
        }
    }