Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 3, 2025

Identified and eliminated ~280 lines of duplicated code across ViewModels, primarily repetitive property setter boilerplate (1073+ instances) and duplicate command initialization patterns.

Changes

Infrastructure

  • Added PropertyChangedBase.SetProperty<T>() - Generic helper using EqualityComparer<T> and CallerMemberName
  • Added DialogViewModelBase<T> - Generic base for OK/Cancel dialog ViewModels
  • Added ConnectDialogViewModelBase<T> - Generic base for Connect/Cancel dialog ViewModels

Refactored ViewModels (15 files)

Dialog ViewModels: DropdownViewModel, IPAddressViewModel, IPAddressAndSubnetmaskViewModel, HostsFileEditorEntryViewModel, OKCancelInfoMessageViewModel, CredentialsPasswordViewModel, CredentialsSetPasswordViewModel, CredentialsChangePasswordViewModel, CredentialsPasswordProfileFileViewModel, PortProfilesViewModel, SNMPOIDProfilesViewModel

Connect ViewModels: RemoteDesktopConnectViewModel, PuTTYConnectViewModel

Property simplification: PingMonitorHostViewModel (13 properties), multiple others (70+ total)

Example

Before (6 lines):

public string Name
{
    get => _name;
    set
    {
        if (value == _name)
            return;
        _name = value;
        OnPropertyChanged();
    }
}

After (1 line):

public string Name
{
    get => _name;
    set => SetProperty(ref _name, value);
}

Future Opportunities

Remaining ViewModels with similar patterns: AWSSessionManagerConnectViewModel, TigerVNCConnectViewModel, WiFiConnectViewModel, PowerShellConnectViewModel, WebConsoleConnectViewModel

Large files with many property setters: SettingsInfo.cs (271), ProfileViewModel.cs (160), GroupViewModel.cs (96)

Original prompt

Find and refactor duplicated code


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI self-assigned this Nov 3, 2025
Copilot AI changed the title [WIP] Find and refactor duplicated code Refactor duplicated code: Add SetProperty helper and generic dialog base classes Nov 3, 2025
Copilot finished work on behalf of BornToBeRoot November 3, 2025 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants