Skip to content

Code Quality: Reduce duplicated functionality classes #14572

@0x5bfa

Description

@0x5bfa

Description

I'm planning to remove Utils namespace by moving classes to service or Files.App.Storage.
Providing a single, simple and common way of accessing the application functionalities allows us to implement unit tests easily as well as enables us to maintain codes easily.

Services.App

  • IAppThemeModeService
  • IAppThreadingService
  • IAppUpdateNoneService
  • IAppUpdateSideloadService
  • IAppUpdateStoreService
  • IAppResourcesService
    • (extension) AppThemeResourcesHelper
  • IAppDialogService
    • (helper) DialogDisplayService
    • (helper) UIHelper
    • (helper) DynamicDialogHelper
    • Remarks: Convert all ContentDialogs into Pages and move them to the Views namespace. The service shall have methods for every dialog to display (e.g. ShowComfirmEmptyBinDialog and ShowFileInUseDialog) instead of instancing ContentDialogs. Also all dialogs that need user interaction should have each view models. Note that some dialog contents use their own 'PrimaryButton' in the contents instead of ContentDialog's one.
  • IAppNavigationService
    • (helper) MultitaskingTabsHelpers
    • (helper) NavigationHelpers

Files.Integrations

  • IFileTagsService
    • (helper) FileTagsHelper
    • (watcher) FileTagsManager
    • (service) FileTagsService
    • (context) FileTagsContext
    • (item) FileTagItem
    • (item) TagsListItem
    • (item) TaggedFile
    • (utility) FileTagsDatabase
  • IGitService
    • (helper) GitHelpers

Services.Storages

Almost all of them should be heavily discussed ahead of time since they are related to the SAL (Storage Abstraction Layer). For more information, refer to #8974

  • IStorageArchiveService
  • IStorageCacheService
  • IStorageNetworkService
  • IStorageLinkService
    • (helper) UIFilesystemHelper (partial)
  • IStorageOperationService
    • (utility) FileOperationsHelpers
    • (utility) FilesystemHelpers
    • (utility) FilesystemOperations
    • (utility) IFilesystemHelpers
    • (utility) IFilesystemOperations
    • (utility) ShellFilesystemOperations
    • (utility) ShellFileOperations2
  • IStorageEnumerationService
    • (utility) UniversalStorageEnumerator
    • (utility) Win32StorageEnumerator
  • IStorageCalculationService
    • (utility) FileSizeCalculator
  • IStorageDevicesService
    • (service) RemovableDrivesService
    • (watcher) DrivesViewModel
    • (watcher) DeviceManager
    • (watcher) WindowsStorageDeviceWatcher & IStorageDeviceWatcher
    • (helper) DriveHelpers
    • (utility) RemovableDevice

Services.Windows

  • IWindowsCompatibilityService
  • IWindowsDialogService
  • IWindowsIniService
  • IWindowsJumpListService
  • IWindowsStartMenuService
  • IWindowsRecycleBinService
    • (helper) RecycleBinHelpers
    • (watcher) RecycleBinManager
  • IWindowsQuickAccessService
    • (service) QuickAccessService
    • (watcher) QuickAccessManager
    • (utility) PinnedFoldersManager
  • IWindowsLibraryService
    • (watcher) LibraryManager
  • IWindowsWSLService
    • (watcher) WSLDistroManager
  • IWindowsTaskbarService
    • (utility) SystemTrayIcon
    • (window proc) SystemTrayIconWindow
  • IWindowsShellService
    • (item) ContextMenu, Win32ContextMenu
    • (item) ContextMenuItem, Win32ContextMenuItem
    • (helper) ShellFolderExtensions
    • (utility) ShellLibraryEx
    • (utility) ShellLibraryFolders
    • (helper) ShellNewMenuHelper
    • (item) ShellFileItem
    • (item) ShellLibraryItem
    • (item) ShellNewEntry

Classes to Remove

  • Move to HomeViewModel
    • (helper) WidgetsHelpers

Gains

  • Better maintainability
  • Reduced duplicated classes
  • Better test experience when we are going to implement Unit tests.

Requirements

  • Use single service per a functionality

Comments

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    🏗 In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions