From d193b2fcc54d40cd96eb96ab396f848fb68791aa Mon Sep 17 00:00:00 2001 From: Damian Viktorovich Morozov Date: Thu, 23 Jan 2025 16:17:26 +0300 Subject: [PATCH] Version updated to v.0.5.440 --- .gitignore | 1 + .../TgDownloaderDesktop.Core.csproj | 4 +- .../Enums/TgEnumLicenseType.cs | 11 ++ .../Helpers/TgLicenseManagerHelper.cs | 26 ++- Core/TgInfrastructure/License/TgLicense.cs | 4 +- Core/TgInfrastructure/TgInfrastructure.csproj | 6 +- Core/TgStorage/TgStorage.csproj | 16 +- Docs/CHANGELOG-RUS.md | 17 +- Docs/CHANGELOG.md | 23 ++- Docs/GUIDE-SETUP-CONSOLE-RUS.md | 12 ++ Docs/GUIDE-SETUP-CONSOLE.md | 12 ++ Docs/GUIDE-SETUP-DESKTOP-RUS.md | 16 +- Docs/GUIDE-SETUP-DESKTOP.md | 16 +- Docs/GUIDE-SETUP-DOCKER-RUS.md | 2 +- Docs/GUIDE-SETUP-DOCKER.md | 2 +- Docs/GUIDE-SETUP-FILTERS-RUS.md | 32 ++++ Docs/GUIDE-SETUP-FILTERS.md | 32 ++++ Docs/GUIDE-SETUP-GROUPS-RUS.md | 9 + Docs/GUIDE-SETUP-GROUPS.md | 9 + Docs/GUIDES-RUS.md | 77 +------- Docs/GUIDES.md | 77 +------- Docs/RELEASE.md | 1 + .../.config/dotnet-tools.json | 0 .../TgDownloaderBlazor/App.razor | 0 .../TgDownloaderBlazor/App.razor.cs | 2 +- .../Common/TgLayoutComponentBase.cs | 0 .../Common/TgPageComponentBase.cs | 0 .../Common/TgPageComponentEnumerable.cs | 0 .../Common/TgPageComponentItem.cs | 0 .../TgDownloaderBlazor/Dockerfile | 0 .../Features/Client/ClientComponent.razor | 0 .../Features/Client/ClientComponent.razor.cs | 0 .../Features/Filters/FilterComponent.razor | 0 .../Features/Filters/FilterComponent.razor.cs | 0 .../Features/Proxies/ProxyComponent.razor | 0 .../Features/Proxies/ProxyComponent.razor.cs | 0 .../Features/Sources/SourceComponent.razor | 0 .../Features/Sources/SourceComponent.razor.cs | 0 .../Features/Versions/VersionComponent.razor | 0 .../Versions/VersionComponent.razor.cs | 0 .../TgDownloaderBlazor/Pages/Error.cshtml | 0 .../TgDownloaderBlazor/Pages/Error.cshtml.cs | 0 .../TgDownloaderBlazor/Pages/Header.razor | 0 .../TgDownloaderBlazor/Pages/Header.razor.cs | 0 .../TgDownloaderBlazor/Pages/Index.razor | 0 .../TgDownloaderBlazor/Pages/Index.razor.cs | 0 .../TgDownloaderBlazor/Pages/MainLayout.razor | 0 .../Pages/MainLayout.razor.css | 0 .../TgDownloaderBlazor/Pages/NavMenu.razor | 0 .../TgDownloaderBlazor/Pages/NavMenu.razor.cs | 0 .../Pages/NavMenu.razor.css | 0 .../Pages/SurveyPrompt.razor | 0 .../TgDownloaderBlazor/Pages/_Host.cshtml | 0 .../TgDownloaderBlazor/Program.cs | 0 .../Properties/launchSettings.json | 0 .../Services/TgJsService.cs | 0 .../TgDownloaderBlazor.csproj | 14 +- .../TgDownloaderBlazor/Using.cs | 0 .../TgDownloaderBlazor/Utils/TgAppUtils.cs | 0 .../TgDownloaderBlazor/Utils/TgBlazorUtils.cs | 0 .../Utils/TgDatabaseUtility.cs | 0 .../TgDownloaderBlazor/_Imports.razor | 0 .../appsettings.Development.json | 0 .../TgDownloaderBlazor/appsettings.json | 0 .../wwwroot/css/bootstrap/bootstrap.min.css | 0 .../css/bootstrap/bootstrap.min.css.map | 0 .../wwwroot/css/open-iconic/FONT-LICENSE | 0 .../wwwroot/css/open-iconic/ICON-LICENSE | 0 .../wwwroot/css/open-iconic/README.md | 0 .../font/css/open-iconic-bootstrap.min.css | 0 .../open-iconic/font/fonts/open-iconic.eot | Bin .../open-iconic/font/fonts/open-iconic.otf | Bin .../open-iconic/font/fonts/open-iconic.svg | 0 .../open-iconic/font/fonts/open-iconic.ttf | Bin .../open-iconic/font/fonts/open-iconic.woff | Bin .../TgDownloaderBlazor/wwwroot/css/site.css | 0 .../TgDownloaderBlazor/wwwroot/favicon.png | Bin .../TgDownloaderConsole/Dockerfile | 7 +- .../Helpers/TgMenuHelper.cs | 0 .../Helpers/TgMenuHelperAction.cs | 2 +- .../Helpers/TgMenuHelperAdvanced.cs | 0 .../Helpers/TgMenuHelperApp.cs | 0 .../Helpers/TgMenuHelperConnection.cs | 4 +- .../Helpers/TgMenuHelperDownload.cs | 0 .../Helpers/TgMenuHelperFilters.cs | 0 .../Helpers/TgMenuHelperStorage.cs | 0 .../TgDownloaderConsole/Post-build.cmd | 0 .../TgDownloaderConsole/Program.cs | 4 + .../Properties/launchSettings.json | 0 .../TgDownloaderConsole/TgDownloader.xml | Bin 0 -> 248 bytes .../TgDownloaderConsole.csproj | 20 ++- .../TgDownloaderConsole/Using.cs | 0 .../TgDownloaderConsole/applicationIcon.ico | Bin .../Activation/ActivationHandler.cs | 0 .../AppNotificationActivationHandler.cs | 0 .../Activation/DefaultActivationHandler.cs | 0 .../Activation/IActivationHandler.cs | 0 .../TgDownloaderDesktop/App.xaml | 0 .../TgDownloaderDesktop/App.xaml.cs | 19 +- .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../TgDownloaderDesktop/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../Assets/applicationIcon.ico | Bin .../Behaviors/NavigationViewHeaderBehavior.cs | 0 .../Behaviors/NavigationViewHeaderMode.cs | 0 .../Common/TgPageViewModelBase.cs | 0 .../Contracts/Services/IActivationService.cs | 0 .../Services/IAppNotificationService.cs | 0 .../Contracts/Services/INavigationService.cs | 0 .../Services/INavigationViewService.cs | 0 .../Contracts/Services/IPageService.cs | 0 .../Contracts/Services/ITgSettingsService.cs | 0 .../Contracts/Services/IWebViewService.cs | 0 .../Contracts/ViewModels/INavigationAware.cs | 0 .../Helpers/TgBooleanToVisibilityConverter.cs | 0 .../Helpers/TgDesktopUtils.cs | 109 +++++------ .../TgElementThemeToStringConverter.cs | 0 .../Helpers/TgEnumToBooleanConverter.cs | 0 .../Helpers/TgEnumToColumnConverter.cs | 0 .../Helpers/TgEnumToColumnSpanConverter.cs | 0 .../Helpers/TgFrameExtensions.cs | 0 .../Helpers/TgInverseBooleanConverter.cs | 0 .../TgInverseBooleanToVisibilityConverter.cs | 0 .../TgLicenseTypeToVisibilityConverter.cs | 21 +++ .../Helpers/TgNavigationHelper.cs | 0 .../Helpers/TgResourceExtensions.cs | 0 .../Helpers/TgRuntimeHelper.cs | 0 .../Helpers/TgSettingsStorageExtensions.cs | 0 .../Helpers/TgThemeUtils.cs | 0 .../Helpers/TgTitleBarHelper.cs | 0 .../TgDownloaderDesktop/MainWindow.xaml | 1 - .../TgDownloaderDesktop/MainWindow.xaml.cs | 3 +- .../Models/LocalSettingsOptions.cs | 0 .../TgDownloaderDesktop/Package.appinstaller | 0 .../TgDownloaderDesktop/Package.appxmanifest | 0 .../Properties/launchsettings.json | 0 .../Services/ActivationService.cs | 10 -- .../Services/AppNotificationService.cs | 4 +- .../Services/NavigationService.cs | 0 .../Services/NavigationViewService.cs | 0 .../Services/PageService.cs | 1 + .../Services/TgSettingsService.cs | 169 ++++++++++++------ .../Services/WebViewService.cs | 0 .../Strings/en-us/Resources.resw | 10 +- .../Strings/ru-RU/Resources.resw | 10 +- .../TgDownloaderDesktop/Styles/FontSizes.xaml | 0 .../TgDownloaderDesktop/Styles/TextBlock.xaml | 0 .../TgDownloaderDesktop/Styles/Thickness.xaml | 0 .../TgDownloaderDesktop/TemplateStudio.xml | 0 .../TgDownloaderDesktop.csproj | 16 +- .../TgDownloaderDesktop/Usings.cs | 0 .../ViewModels/ContentGridDetailViewModel.cs | 0 .../ViewModels/ContentGridViewModel.cs | 0 .../ViewModels/DataGridViewModel.cs | 0 .../ViewModels/ListDetailsViewModel.cs | 0 .../ViewModels/ShellViewModel.cs | 0 .../ViewModels/TgBotDetailsViewModel.cs | 2 - .../ViewModels/TgBotsViewModel.cs | 2 - .../ViewModels/TgChatDetailsViewModel.cs | 2 - .../ViewModels/TgChatsViewModel.cs | 2 - .../ViewModels/TgConnectViewModel.cs | 9 +- .../ViewModels/TgContactDetailsViewModel.cs | 2 - .../ViewModels/TgContactsViewModel.cs | 2 - .../ViewModels/TgFiltersViewModel.cs | 2 - .../ViewModels/TgLoadDataViewModel.cs | 0 .../ViewModels/TgMainViewModel.cs | 42 ----- .../ViewModels/TgProxiesViewModel.cs | 2 - .../ViewModels/TgSettingsViewModel.cs | 11 +- .../ViewModels/TgStoriesViewModel.cs | 2 - .../ViewModels/TgUpdateViewModel.cs | 72 ++++++++ .../ViewModels/WebViewViewModel.cs | 0 .../Views/ContentGridDetailPage.xaml | 0 .../Views/ContentGridDetailPage.xaml.cs | 0 .../Views/ContentGridPage.xaml | 0 .../Views/ContentGridPage.xaml.cs | 0 .../Views/DataGridPage.xaml | 0 .../Views/DataGridPage.xaml.cs | 0 .../Views/ListDetailsDetailControl.xaml | 0 .../Views/ListDetailsDetailControl.xaml.cs | 0 .../Views/ListDetailsPage.xaml | 0 .../Views/ListDetailsPage.xaml.cs | 0 .../TgDownloaderDesktop/Views/ShellPage.xaml | 6 + .../Views/ShellPage.xaml.cs | 0 .../Views/TgChatDetailsPage.xaml | 0 .../Views/TgChatDetailsPage.xaml.cs | 0 .../Views/TgChatsPage.xaml | 4 +- .../Views/TgChatsPage.xaml.cs | 0 .../Views/TgConnectPage.xaml | 13 +- .../Views/TgConnectPage.xaml.cs | 0 .../Views/TgContactDetailsPage.xaml | 0 .../Views/TgContactDetailsPage.xaml.cs | 0 .../Views/TgContactsPage.xaml | 6 +- .../Views/TgContactsPage.xaml.cs | 0 .../Views/TgFiltersPage.xaml | 0 .../Views/TgFiltersPage.xaml.cs | 0 .../Views/TgLoadDataPage.xaml | 0 .../Views/TgLoadDataPage.xaml.cs | 0 .../TgDownloaderDesktop/Views/TgMainPage.xaml | 65 ++++--- .../Views/TgMainPage.xaml.cs | 0 .../Views/TgProxiesPage.xaml | 0 .../Views/TgProxiesPage.xaml.cs | 0 .../Views/TgSettingsPage.xaml | 62 ++++++- .../Views/TgSettingsPage.xaml.cs | 0 .../Views/TgStoriesPage.xaml | 4 +- .../Views/TgStoriesPage.xaml.cs | 0 .../Views/TgUpdatePage.xaml | 53 ++++++ .../Views/TgUpdatePage.xaml.cs | 32 ++++ .../Views/WebViewPage.xaml | 0 .../Views/WebViewPage.xaml.cs | 0 .../TgDownloaderDesktop/app.manifest | 0 .../TgDownloaderDesktop/appsettings.json | 0 .../TgDownloaderWinDesktopWPF/App.xaml | 0 .../TgDownloaderWinDesktopWPF/App.xaml.cs | 0 .../TgDownloaderWinDesktopWPF/AssemblyInfo.cs | 0 .../Assets/applicationIcon-1024.png | Bin .../Assets/applicationIcon-191.png | Bin .../Assets/applicationIcon-256.png | Bin .../Common/TgPageViewBase.cs | 0 .../Common/TgPageViewModelBase.cs | 0 .../Helpers/EnumToBooleanConverter.cs | 0 .../Helpers/EnumToStringConverter.cs | 0 .../Helpers/ExistsToValueConverter.cs | 0 .../Helpers/NullValueConverter.cs | 0 .../Helpers/ProxyModelToViewModelConverter.cs | 0 .../Helpers/TgXamlHelper.cs | 0 .../Helpers/VisibilityToBooleanConverter.cs | 0 .../Models/AppConfig.cs | 0 .../Services/ApplicationHostService.cs | 0 .../Services/PageService.cs | 0 .../TgDownloaderWinDesktopWPF.csproj | 8 +- .../TgDownloaderWinDesktopWPF/Using.cs | 0 .../Utils/TgDesktopUtils.cs | 0 .../Utils/TgDispatcherExtensions.cs | 0 .../ViewModels/TgClientViewModel.cs | 0 .../ViewModels/TgDashboardViewModel.cs | 0 .../ViewModels/TgDownloadsViewModel.cs | 0 .../ViewModels/TgEfDownloadViewModel.cs | 0 .../ViewModels/TgFiltersViewModel.cs | 0 .../ViewModels/TgItemProxyViewModel.cs | 0 .../ViewModels/TgItemSourceViewModel.cs | 0 .../ViewModels/TgMainWindowViewModel.cs | 0 .../ViewModels/TgProxiesViewModel.cs | 0 .../ViewModels/TgSettingsViewModel.cs | 0 .../ViewModels/TgSourcesViewModel.cs | 0 .../Controls/TgClientStateUserControl.xaml | 0 .../Controls/TgClientStateUserControl.xaml.cs | 0 .../Controls/TgExceptionsUserControl.xaml | 0 .../Controls/TgExceptionsUserControl.xaml.cs | 0 .../Views/MainWindow.xaml | 0 .../Views/MainWindow.xaml.cs | 0 .../Views/Pages/TgClientPage.xaml | 0 .../Views/Pages/TgClientPage.xaml.cs | 0 .../Views/Pages/TgDashboardPage.xaml | 0 .../Views/Pages/TgDashboardPage.xaml.cs | 0 .../Views/Pages/TgDownloadsPage.xaml | 0 .../Views/Pages/TgDownloadsPage.xaml.cs | 0 .../Views/Pages/TgFiltersPage.xaml | 0 .../Views/Pages/TgFiltersPage.xaml.cs | 0 .../Views/Pages/TgItemProxyPage.xaml | 0 .../Views/Pages/TgItemProxyPage.xaml.cs | 0 .../Views/Pages/TgItemSourcePage.xaml | 0 .../Views/Pages/TgItemSourcePage.xaml.cs | 0 .../Views/Pages/TgProxiesPage.xaml | 0 .../Views/Pages/TgProxiesPage.xaml.cs | 0 .../Views/Pages/TgSettingsPage.xaml | 0 .../Views/Pages/TgSettingsPage.xaml.cs | 0 .../Views/Pages/TgSourcesPage.xaml | 0 .../Views/Pages/TgSourcesPage.xaml.cs | 0 .../TgDownloaderWinDesktopWPF/app.manifest | 0 .../applicationIcon.ico | Bin README-RUS.md | 30 ++-- README.md | 30 ++-- .../TgAssertCoreTests.csproj | 6 +- .../TgDownloaderConsoleTest.csproj | 6 +- .../TgDownloaderDesktop.Tests.MSTest.csproj | 16 +- .../TgDownloaderTest/TgDownloaderTest.csproj | 6 +- Tests/TgStorageTest/TgStorageTest.csproj | 11 +- TgDownloader.sln | 16 +- 282 files changed, 838 insertions(+), 519 deletions(-) create mode 100644 Core/TgInfrastructure/Enums/TgEnumLicenseType.cs create mode 100644 Docs/GUIDE-SETUP-CONSOLE-RUS.md create mode 100644 Docs/GUIDE-SETUP-CONSOLE.md create mode 100644 Docs/GUIDE-SETUP-FILTERS-RUS.md create mode 100644 Docs/GUIDE-SETUP-FILTERS.md create mode 100644 Docs/GUIDE-SETUP-GROUPS-RUS.md create mode 100644 Docs/GUIDE-SETUP-GROUPS.md rename {Clients => Presentation}/TgDownloaderBlazor/.config/dotnet-tools.json (100%) rename {Clients => Presentation}/TgDownloaderBlazor/App.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/App.razor.cs (94%) rename {Clients => Presentation}/TgDownloaderBlazor/Common/TgLayoutComponentBase.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Common/TgPageComponentBase.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Common/TgPageComponentEnumerable.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Common/TgPageComponentItem.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Dockerfile (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Client/ClientComponent.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Client/ClientComponent.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Filters/FilterComponent.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Filters/FilterComponent.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Sources/SourceComponent.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Sources/SourceComponent.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Versions/VersionComponent.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Features/Versions/VersionComponent.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Error.cshtml (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Error.cshtml.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Header.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Header.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Index.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/Index.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/MainLayout.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/MainLayout.razor.css (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/NavMenu.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/NavMenu.razor.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/NavMenu.razor.css (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/SurveyPrompt.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Pages/_Host.cshtml (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Program.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Properties/launchSettings.json (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Services/TgJsService.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/TgDownloaderBlazor.csproj (93%) rename {Clients => Presentation}/TgDownloaderBlazor/Using.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Utils/TgAppUtils.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Utils/TgBlazorUtils.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/Utils/TgDatabaseUtility.cs (100%) rename {Clients => Presentation}/TgDownloaderBlazor/_Imports.razor (100%) rename {Clients => Presentation}/TgDownloaderBlazor/appsettings.Development.json (100%) rename {Clients => Presentation}/TgDownloaderBlazor/appsettings.json (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css.map (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/FONT-LICENSE (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/ICON-LICENSE (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/README.md (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/css/site.css (100%) rename {Clients => Presentation}/TgDownloaderBlazor/wwwroot/favicon.png (100%) rename {Clients => Presentation}/TgDownloaderConsole/Dockerfile (75%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelper.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs (99%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperAdvanced.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperApp.cs (100%) rename Clients/TgDownloaderConsole/Helpers/TgMenuHelperClient.cs => Presentation/TgDownloaderConsole/Helpers/TgMenuHelperConnection.cs (98%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperDownload.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperFilters.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/Helpers/TgMenuHelperStorage.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/Post-build.cmd (100%) rename {Clients => Presentation}/TgDownloaderConsole/Program.cs (95%) rename {Clients => Presentation}/TgDownloaderConsole/Properties/launchSettings.json (100%) create mode 100644 Presentation/TgDownloaderConsole/TgDownloader.xml rename {Clients => Presentation}/TgDownloaderConsole/TgDownloaderConsole.csproj (85%) rename {Clients => Presentation}/TgDownloaderConsole/Using.cs (100%) rename {Clients => Presentation}/TgDownloaderConsole/applicationIcon.ico (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Activation/ActivationHandler.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Activation/AppNotificationActivationHandler.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Activation/DefaultActivationHandler.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Activation/IActivationHandler.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/App.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/App.xaml.cs (91%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/LockScreenLogo.scale-200.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/SplashScreen.scale-200.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/Square150x150Logo.scale-200.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/Square44x44Logo.scale-200.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/StoreLogo.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/Wide310x150Logo.scale-200.png (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Assets/applicationIcon.ico (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Behaviors/NavigationViewHeaderBehavior.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Behaviors/NavigationViewHeaderMode.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Common/TgPageViewModelBase.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/IActivationService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/IAppNotificationService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/INavigationService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/INavigationViewService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/IPageService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/ITgSettingsService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/Services/IWebViewService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Contracts/ViewModels/INavigationAware.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgBooleanToVisibilityConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs (85%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgElementThemeToStringConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgEnumToBooleanConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgEnumToColumnConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgEnumToColumnSpanConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgFrameExtensions.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgInverseBooleanConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgInverseBooleanToVisibilityConverter.cs (100%) create mode 100644 Presentation/TgDownloaderDesktop/Helpers/TgLicenseTypeToVisibilityConverter.cs rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgNavigationHelper.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgResourceExtensions.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgRuntimeHelper.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgSettingsStorageExtensions.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgThemeUtils.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Helpers/TgTitleBarHelper.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/MainWindow.xaml (93%) rename {Clients => Presentation}/TgDownloaderDesktop/MainWindow.xaml.cs (88%) rename {Clients => Presentation}/TgDownloaderDesktop/Models/LocalSettingsOptions.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Package.appinstaller (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Package.appxmanifest (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Properties/launchsettings.json (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/ActivationService.cs (79%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/AppNotificationService.cs (94%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/NavigationService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/NavigationViewService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/PageService.cs (97%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/TgSettingsService.cs (62%) rename {Clients => Presentation}/TgDownloaderDesktop/Services/WebViewService.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Strings/en-us/Resources.resw (98%) rename {Clients => Presentation}/TgDownloaderDesktop/Strings/ru-RU/Resources.resw (97%) rename {Clients => Presentation}/TgDownloaderDesktop/Styles/FontSizes.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Styles/TextBlock.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Styles/Thickness.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/TemplateStudio.xml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/TgDownloaderDesktop.csproj (91%) rename {Clients => Presentation}/TgDownloaderDesktop/Usings.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/ContentGridDetailViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/ContentGridViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/DataGridViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/ListDetailsViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/ShellViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs (97%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs (98%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs (98%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs (98%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs (98%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs (96%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs (97%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs (96%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgLoadDataViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs (68%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs (96%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs (81%) rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs (96%) create mode 100644 Presentation/TgDownloaderDesktop/ViewModels/TgUpdateViewModel.cs rename {Clients => Presentation}/TgDownloaderDesktop/ViewModels/WebViewViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ContentGridPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ContentGridPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/DataGridPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/DataGridPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ListDetailsPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ListDetailsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ShellPage.xaml (93%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/ShellPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgChatsPage.xaml (99%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgChatsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgConnectPage.xaml (95%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgConnectPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgContactsPage.xaml (98%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgContactsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgFiltersPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgFiltersPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgLoadDataPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgLoadDataPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgMainPage.xaml (91%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgMainPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgProxiesPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgProxiesPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgSettingsPage.xaml (76%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgSettingsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgStoriesPage.xaml (98%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/TgStoriesPage.xaml.cs (100%) create mode 100644 Presentation/TgDownloaderDesktop/Views/TgUpdatePage.xaml create mode 100644 Presentation/TgDownloaderDesktop/Views/TgUpdatePage.xaml.cs rename {Clients => Presentation}/TgDownloaderDesktop/Views/WebViewPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderDesktop/Views/WebViewPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderDesktop/app.manifest (100%) rename {Clients => Presentation}/TgDownloaderDesktop/appsettings.json (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/App.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/App.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/AssemblyInfo.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Assets/applicationIcon-1024.png (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Assets/applicationIcon-191.png (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Assets/applicationIcon-256.png (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Common/TgPageViewBase.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Common/TgPageViewModelBase.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/EnumToBooleanConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/EnumToStringConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/ExistsToValueConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/NullValueConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/ProxyModelToViewModelConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/TgXamlHelper.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Helpers/VisibilityToBooleanConverter.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Models/AppConfig.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Services/ApplicationHostService.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Services/PageService.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj (94%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Using.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Utils/TgDesktopUtils.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Utils/TgDispatcherExtensions.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgClientViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgDashboardViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgDownloadsViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgEfDownloadViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgFiltersViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgItemProxyViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgItemSourceViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgMainWindowViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgProxiesViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgSettingsViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/ViewModels/TgSourcesViewModel.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml.cs (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/app.manifest (100%) rename {Clients => Presentation}/TgDownloaderWinDesktopWPF/applicationIcon.ico (100%) diff --git a/.gitignore b/.gitignore index 20ed28ea..501f065d 100644 --- a/.gitignore +++ b/.gitignore @@ -405,3 +405,4 @@ FodyWeavers.xsd /Clients/TgDownloaderConsole/TgDownloader.session /Clients/TgDownloaderConsole/TgDownloader.xml /Core/TgStorage/Domain/TgDevContext.cs +/Presentation/TgDownloaderConsole/TgDownloader.session diff --git a/Core/TgDownloaderDesktop.Core/TgDownloaderDesktop.Core.csproj b/Core/TgDownloaderDesktop.Core/TgDownloaderDesktop.Core.csproj index 0479e176..6a0b2b19 100644 --- a/Core/TgDownloaderDesktop.Core/TgDownloaderDesktop.Core.csproj +++ b/Core/TgDownloaderDesktop.Core/TgDownloaderDesktop.Core.csproj @@ -1,11 +1,11 @@  - net8.0 + net9.0 TgDownloaderDesktop.Core AnyCPU;x64;x86 x86;x64;arm64;AnyCPU enable - 0.5.410.0 + 0.5.440.0 diff --git a/Core/TgInfrastructure/Enums/TgEnumLicenseType.cs b/Core/TgInfrastructure/Enums/TgEnumLicenseType.cs new file mode 100644 index 00000000..95d7340d --- /dev/null +++ b/Core/TgInfrastructure/Enums/TgEnumLicenseType.cs @@ -0,0 +1,11 @@ +// This is an independent project of an individual developer. Dear PVS-Studio, please check it. +// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com + +namespace TgInfrastructure.Enums; + +public enum TgEnumLicenseType +{ + Free, + Paid, + Premium +} diff --git a/Core/TgInfrastructure/Helpers/TgLicenseManagerHelper.cs b/Core/TgInfrastructure/Helpers/TgLicenseManagerHelper.cs index e8d44264..e8064c70 100644 --- a/Core/TgInfrastructure/Helpers/TgLicenseManagerHelper.cs +++ b/Core/TgInfrastructure/Helpers/TgLicenseManagerHelper.cs @@ -23,18 +23,32 @@ public void ActivateLicense(string licenseKey = "", string licenseFreeDescriptio { if (licenseKey.StartsWith("PAID")) { - CurrentLicense = new TgLicensePaid { LicenseKey = licenseKey, ExpirationDate = DateTime.Now.AddYears(1) }; - CurrentLicense.Description = licensePaidDescription; + CurrentLicense = new TgLicensePaid + { + LicenseKey = licenseKey, + LicenseType = TgEnumLicenseType.Paid, + ExpirationDate = DateTime.Now.AddYears(1), + Description = licensePaidDescription + }; return; } if (licenseKey.StartsWith("PREMIUM")) { - CurrentLicense = new TgLicensePremium { LicenseKey = licenseKey, ExpirationDate = DateTime.Now.AddYears(1), PrioritySupport = true }; - CurrentLicense.Description = licensePremiumDescription; + CurrentLicense = new TgLicensePremium + { + LicenseKey = licenseKey, + LicenseType = TgEnumLicenseType.Premium, + ExpirationDate = DateTime.Now.AddYears(1), + PrioritySupport = true, + Description = licensePremiumDescription + }; return; } - CurrentLicense = new TgLicenseFree { LicenseKey = licenseKey }; - CurrentLicense.Description = licenseFreeDescription; + CurrentLicense = new TgLicenseFree + { + LicenseKey = licenseKey, + Description = licenseFreeDescription + }; } public bool IsLicenseValid() => CurrentLicense.IsValid(); diff --git a/Core/TgInfrastructure/License/TgLicense.cs b/Core/TgInfrastructure/License/TgLicense.cs index 1c25d78f..b119b660 100644 --- a/Core/TgInfrastructure/License/TgLicense.cs +++ b/Core/TgInfrastructure/License/TgLicense.cs @@ -10,7 +10,9 @@ public abstract partial class TgLicense : ObservableRecipient [ObservableProperty] public partial string Description { get; set; } = "Empty license"; - public string LicenseKey { get; set; } = ""; + [ObservableProperty] + public partial string LicenseKey { get; set; } = ""; + public TgEnumLicenseType LicenseType { get; set; } = TgEnumLicenseType.Free; #endregion diff --git a/Core/TgInfrastructure/TgInfrastructure.csproj b/Core/TgInfrastructure/TgInfrastructure.csproj index db1833ca..be0d0f12 100644 --- a/Core/TgInfrastructure/TgInfrastructure.csproj +++ b/Core/TgInfrastructure/TgInfrastructure.csproj @@ -1,10 +1,10 @@  - net8.0 + net9.0 enable enable AnyCPU;x86;x64 - 0.5.410.0 + 0.5.440.0 none @@ -20,6 +20,6 @@ - + diff --git a/Core/TgStorage/TgStorage.csproj b/Core/TgStorage/TgStorage.csproj index 2522efd9..7471fdd0 100644 --- a/Core/TgStorage/TgStorage.csproj +++ b/Core/TgStorage/TgStorage.csproj @@ -1,9 +1,9 @@  - net8.0 + net9.0 enable enable - 0.5.410.0 + 0.5.440.0 AnyCPU;x64;x86 @@ -18,20 +18,20 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Docs/CHANGELOG-RUS.md b/Docs/CHANGELOG-RUS.md index 4f8c79f5..0f986c40 100644 --- a/Docs/CHANGELOG-RUS.md +++ b/Docs/CHANGELOG-RUS.md @@ -5,17 +5,28 @@ и этот проект придерживается [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Нереализовано] + +## [0.5.440] - 2025-01-25 +### Исправлено +- Исправлены проверки файлов для TgDownloaderDesktop ### Изменено - Обновлена страница подключения в TgDownloaderDesktop -### Изменено -- Обновлена таблица приложений в TgStorage +- Обновлён образ TgDownloaderConsole Docker ### Добавлено - Добавлен Velopack инсталлятор для TgDownloaderDesktop - Добавлен фильтр чатов для TgDownloaderDesktop - Добавлена страница подробностей чата для TgDownloaderDesktop - Добавлен запуск скачивания чата на странице подробностей для TgDownloaderDesktop - Добавлен останов скачивания чата на странице подробностей для TgDownloaderDesktop -- Исправлены проверки файлов для TgDownloaderDesktop + +## [0.5.430] - 2025-01-23 +### Исправлено +- Исправления для TgStorage +- Исправления для TgDownloaderConsole +### Изменено +- Обновлена таблица приложений в TgStorage +- Обновлены NuGet пакеты +- Обновлена версия .NET с 8.0 на 9.0 ## [0.5.410] - 2025-01-18 ### Исправлено diff --git a/Docs/CHANGELOG.md b/Docs/CHANGELOG.md index 09f70f06..f0b4a35f 100644 --- a/Docs/CHANGELOG.md +++ b/Docs/CHANGELOG.md @@ -5,21 +5,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + +## [0.5.440] - 2025-01-25 +### Fixed +- Fixed file checks for TgDownloaderDesktop ### Changed - Updated connection page in TgDownloaderDesktop -### Cganged -- Updated apps table for TgStorage +- Updated TgDownloaderConsole Docker image ### Added - Added Velopack installer for TgDownloaderDesktop - Added chat filter to TgDownloaderDesktop - Added page of chat details to TgDownloaderDesktop - Added launching download chat on the details page to TgDownloaderDesktop - Added chat download stop on the details page to TgDownloaderDesktop -- Fixed file checks for TgDownloaderDesktop + +## [0.5.430] - 2025-01-23 +### Fixed +- Fixed bugs for TgStorage +- Fixed bugs for TgDownloaderConsole +### Changed +- Updated apps table for TgStorage +- Updated NuGet packages +- Updated .NET version from 8.0 to 9.0 ## [0.5.410] - 2025-01-18 ### Fixed - Fixed chat connection check to TgDownloaderConsole +### Changed +- Updated apps table for TgStorage ### Added - Added Velopack installer for TgDownloaderConsole - Added update menu for TgDownloaderConsole @@ -34,7 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed `Sequence contains more than one element` error to TgDownloaderConsole - Fixed `Access to the path ...\TgDownloader.xml is denied` error when connecting to the server to TgDownloaderDesktop -### Cganged +### Changed - Updated contacts page to TgDownloaderDesktop - Updated filters page to TgDownloaderDesktop - Updated sources page to TgDownloaderDesktop @@ -46,7 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.5.300] - 2025-01-03 ### Fixed - Connecting to Telegram server to TgDownloaderDesktop -### Cganged +### Changed - Updated contacts page to TgDownloaderConsole - Updated home page to TgDownloaderDesktop - Updated sources page to TgDownloaderConsole diff --git a/Docs/GUIDE-SETUP-CONSOLE-RUS.md b/Docs/GUIDE-SETUP-CONSOLE-RUS.md new file mode 100644 index 00000000..50510054 --- /dev/null +++ b/Docs/GUIDE-SETUP-CONSOLE-RUS.md @@ -0,0 +1,12 @@ +# Руководство по настройке Консольной версии + +## Установка и запуск TgDownloaderConsole под ОС Windows +- Скачайте и запустите инсталлятор [TgDownloaderConsole-win-x64-Setup.exe](https://github.com/DamianMorozov/TgDownloader/releases) +- Нажмите кнопку `Старт`, затем наберите и выполните `TgDownloaderConsole` + +## Быстрый старт +- Application -> Locate the storage file +- Connection -> Connect the client to TG server + +## Настройки по умолчанию для TgDownloaderConsole +- Удалите файл `TgDownloader.xml` diff --git a/Docs/GUIDE-SETUP-CONSOLE.md b/Docs/GUIDE-SETUP-CONSOLE.md new file mode 100644 index 00000000..7723f983 --- /dev/null +++ b/Docs/GUIDE-SETUP-CONSOLE.md @@ -0,0 +1,12 @@ +# Guide to setup the Console version + +## Setup and run TgDownloaderConsole under Windows OS +- Download and run the installer [TgDownloaderConsole-win-x64-Setup.exe](https://github.com/DamianMorozov/TgDownloader/releases) +- Click the `Start` button, then type and execute `TgDownloaderConsole` +- +## Quick Start +- Application -> Locate the storage file +- Connection -> Connect the client to TG server + +## Default settings for TgDownloaderConsole +- Delete the file `TgDownloader.xml` diff --git a/Docs/GUIDE-SETUP-DESKTOP-RUS.md b/Docs/GUIDE-SETUP-DESKTOP-RUS.md index 2afd2bcd..a324d054 100644 --- a/Docs/GUIDE-SETUP-DESKTOP-RUS.md +++ b/Docs/GUIDE-SETUP-DESKTOP-RUS.md @@ -1,16 +1,10 @@ -# Руководство по настройке десктоп версии +# Руководство по настройке Десктоп версии -## Запуск TgDownloaderDesktop под ОС Windows -- Скачать файл `TgDownloaderDesktop-Installing.ps1` в `c:\TgDownloader-Releases` -- Запустить `PowerShell` с правами администратора -- Выдать временные права доступа на установку `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` -- Запустить файл `TgDownloaderDesktop-Installing.ps1` в `PowerShell` +## Установка и запуск TgDownloaderDesktop под ОС Windows +- Скачайте и запустите инсталлятор [TgDownloaderDesktop-win-x64-Setup.exe](https://github.com/DamianMorozov/TgDownloader/releases) +- Нажмите кнопку `Старт`, затем наберите и выполните `TgDownloaderDesktop` -1. Запустите ПО. -Оба чекбокса должны быть в положении включено. -

- -2. Перейдите на вкладку "Клиент". +## Настройка подключения Кликните по ссылке справа: https://my.telegram.org/auth?to=apps Там вы сможете зарегистрировать своё ПО для использования с телеграм. Введите полученные данные в поля: diff --git a/Docs/GUIDE-SETUP-DESKTOP.md b/Docs/GUIDE-SETUP-DESKTOP.md index 2f38acd5..6257327b 100644 --- a/Docs/GUIDE-SETUP-DESKTOP.md +++ b/Docs/GUIDE-SETUP-DESKTOP.md @@ -1,16 +1,10 @@ -# Guide to setup the desktop version +# Guide to setup the Desktop version -## Run TgDownloaderDesktop under Windows OS -- Download the `TgDownloaderDesktop-Installing.ps1` file to `c:\TgDownloader-Releases` -- Run `PowerShell` with administrator rights -- Grant temporary access rights to install `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` -- Run the `TgDownloaderDesktop-Installing.ps1` file in `PowerShell` +## Setup and run TgDownloaderDesktop under Windows OS +- Download and run the installer [TgDownloaderDesktop-win-x64-Setup.exe](https://github.com/DamianMorozov/TgDownloader/releases) +- Click the `Start` button, then type and execute `TgDownloaderDesktop` -1. Start the software. -Both checkboxes should be in the on position. -

- -2. Click on the "Client" tab. +## Connection setup Click on the link on the right: https://my.telegram.org/auth?to=apps There you will be able to register your software for use with telegram. Enter the data you received into the fields: diff --git a/Docs/GUIDE-SETUP-DOCKER-RUS.md b/Docs/GUIDE-SETUP-DOCKER-RUS.md index 4ee0c227..cc844dfe 100644 --- a/Docs/GUIDE-SETUP-DOCKER-RUS.md +++ b/Docs/GUIDE-SETUP-DOCKER-RUS.md @@ -1,4 +1,4 @@ -# Руководство по настройке докер версии +# Руководство по настройке Докер версии ## Docker compose usage ``` diff --git a/Docs/GUIDE-SETUP-DOCKER.md b/Docs/GUIDE-SETUP-DOCKER.md index 7cb9b96e..eb110883 100644 --- a/Docs/GUIDE-SETUP-DOCKER.md +++ b/Docs/GUIDE-SETUP-DOCKER.md @@ -1,4 +1,4 @@ -# Guide to setup the docker version +# Guide to setup the Docker version ## Docker compose usage ``` diff --git a/Docs/GUIDE-SETUP-FILTERS-RUS.md b/Docs/GUIDE-SETUP-FILTERS-RUS.md new file mode 100644 index 00000000..ff806558 --- /dev/null +++ b/Docs/GUIDE-SETUP-FILTERS-RUS.md @@ -0,0 +1,32 @@ +# Руководство по настройке фильтров +Просмотр фильтров -- список всех фильтров +Добавить фильтр -- добавить новый фильтр +Редактировать фильтр -- редактировать существующий фильтр +Удалить фильтр -- удалить существующий фильтр +Сбросить фильтр -- удалить все существующие фильтры + +## Пример добавления фильтра типа `Одно имя` +Установить имя: develop +Установить маску: c*# + +## Пример фильтра добавления типа `Одиночное расширение` +Установить имя: книга +Установить маску: pdf + +## Пример фильтра добавления типа `Много имен` +Установить имя: разработки +Установить маску: c*#, python + +## Пример фильтра добавления типа `Множественное расширение` +Установить имя: книги +Установить маску: epub, fb2, pdf + +## Пример добавления фильтра типа `Минимальный размер файла`. +Установить имя: min 1 mb +Установить тип размера файла: MBytes +Минимальный размер файла: 1 + +## Пример добавления типа фильтра `Максимальный размер файла` +Установить имя: max 2 гб +Установить тип размера файла: GBytes +Минимальный размер файла: 2 diff --git a/Docs/GUIDE-SETUP-FILTERS.md b/Docs/GUIDE-SETUP-FILTERS.md new file mode 100644 index 00000000..2771fb48 --- /dev/null +++ b/Docs/GUIDE-SETUP-FILTERS.md @@ -0,0 +1,32 @@ +# Guide for filters settings +View filters -- list of all filters +Add filter -- add new filter +Edit filter -- edit exists filter +Remove filter -- remove exists filter +Reset filter -- remove all exists filters + +## Example of add filter type `Single name` +Set name: develop +Set mask: c*# + +## Example of add filter type `Single extension` +Set name: book +Set mask: pdf + +## Example of add filter type `Multi name` +Set name: develops +Set mask: c*#, python + +## Example of add filter type `Multi extension` +Set name: books +Set mask: epub, fb2, pdf + +## Example of add filter type `File minimum size` +Set name: min 1 mb +Set file size type: MBytes +File minimum size: 1 + +## Example of add filter type `File minimum size` +Set name: max 2 gb +Set file size type: GBytes +File minimum size: 2 diff --git a/Docs/GUIDE-SETUP-GROUPS-RUS.md b/Docs/GUIDE-SETUP-GROUPS-RUS.md new file mode 100644 index 00000000..84cfbf2c --- /dev/null +++ b/Docs/GUIDE-SETUP-GROUPS-RUS.md @@ -0,0 +1,9 @@ +# Руководство для загрузке групп +1. Присоединитесь к группе в Telegram. +2. Щелкните правой кнопкой мыши любое сообщение -> `Копировать ссылку на сообщение`. +3. Отредактируйте ссылку в буфере обмена `https://t.me/c/group_id/message_number` следующим образом `group_id`. +4. Запустите `TgDownloaderConsole.exe` (Windows) или `dotnet TgDownloaderConsole.dll` (Linux). +5. Перейдите в раздел -> `Download settings` -> `Setup source (ID/username)` -> вставьте `group_id`. +6. Перейдите в папку -> `Setup download folder` -> `Drive:\Storage_path`. +7. Перейдите в папку -> `Manual download`. +8. Наслаждайтесь. diff --git a/Docs/GUIDE-SETUP-GROUPS.md b/Docs/GUIDE-SETUP-GROUPS.md new file mode 100644 index 00000000..8b158c1d --- /dev/null +++ b/Docs/GUIDE-SETUP-GROUPS.md @@ -0,0 +1,9 @@ +# Guide for downloading groups +1. Join a group on Telegram. +2. Right click any message -> `Copy Message Link`. +3. Edit the link on the clipboard `https://t.me/c/group_id/message_number` like this `group_id`. +4. Run `TgDownloaderConsole.exe` (Windows) or `dotnet TgDownloaderConsole.dll` (Linux). +5. Go to the -> `Download settings` -> `Setup source (ID/username)` -> paste `group_id`. +6. Go to the -> `Setup download folder` -> `Drive:\Storage_path`. +7. Go to the -> `Manual download`. +8. Enjoy. diff --git a/Docs/GUIDES-RUS.md b/Docs/GUIDES-RUS.md index c70c3232..dca52487 100644 --- a/Docs/GUIDES-RUS.md +++ b/Docs/GUIDES-RUS.md @@ -1,72 +1,7 @@ ## Руководства -- [Руководство по настройке десктоп версии](GUIDE-SETUP-DESKTOP-RUS.md) -- [Руководство по настройке докер версии](GUIDE-SETUP-DOCKER-RUS.md) - -## Запуск TgDownloaderDesktop под ОС Windows -- Включите режим разработчика в Windows -- Запустить `PowerShell` с правами администратора -- Выдать временные права доступа на установку `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` -- Скачать файл `TgDownloaderDesktop-Installing.ps1`[TgDownloaderDesktop-Installing.ps1] -- Запустить файл `TgDownloaderDesktop-Installing.ps1` в `PowerShell` - -## Запуск TgDownloaderConsole под ОС Windows -- Распакуйте архив `TgDownloader v1.2.333.zip` в каталог `TgDownloader v1.2.333` -- Измените текущий каталог `cd TgDownloader v1.2.333` -- Выполните команду `TgDownloaderConsole.exe` - -## Запуск TgDownloaderConsole под ОС Linux -- Распакуйте архив `TgDownloader v1.2.333.zip` в `TgDownloader v1.2.333`. -- Измените текущий каталог `cd TgDownloader v1.2.333`. -- Выполните команду `dotnet TgDownloaderConsole.dll` - -## Быстрый старт -- Измените настройки приложения -- Настройте хранилище -- Настройте Telegram клиент -- Настройте скачивание - -## Настройки по умолчанию для TgDownloaderConsole -- Удалите файл `TgDownloader.xml`. - -# Руководство для загрузки групп -1. Присоединитесь к группе в Telegram. -2. Щелкните правой кнопкой мыши любое сообщение -> `Копировать ссылку на сообщение`. -3. Отредактируйте ссылку в буфере обмена `https://t.me/c/group_id/message_number` следующим образом `group_id`. -4. Запустите `TgDownloaderConsole.exe` (Windows) или `dotnet TgDownloaderConsole.dll` (Linux). -5. Перейдите в раздел -> `Download settings` -> `Setup source (ID/username)` -> вставьте `group_id`. -6. Перейдите в папку -> `Setup download folder` -> `Drive:\Storage_path`. -7. Перейдите в папку -> `Manual download`. -8. Наслаждайтесь. - -# Руководство по настройке фильтров -Просмотр фильтров -- список всех фильтров -Добавить фильтр -- добавить новый фильтр -Редактировать фильтр -- редактировать существующий фильтр -Удалить фильтр -- удалить существующий фильтр -Сбросить фильтр -- удалить все существующие фильтры - -## Пример добавления фильтра типа `Одно имя` -Установить имя: develop -Установить маску: c*# - -## Пример фильтра добавления типа `Одиночное расширение` -Установить имя: книга -Установить маску: pdf - -## Пример фильтра добавления типа `Много имен` -Установить имя: разработки -Установить маску: c*#, python - -## Пример фильтра добавления типа `Множественное расширение` -Установить имя: книги -Установить маску: epub, fb2, pdf - -## Пример добавления фильтра типа `Минимальный размер файла`. -Установить имя: min 1 mb -Установить тип размера файла: MBytes -Минимальный размер файла: 1 - -## Пример добавления типа фильтра `Максимальный размер файла` -Установить имя: max 2 гб -Установить тип размера файла: GBytes -Минимальный размер файла: 2 +- [Руководство по настройке Консольной версии](GUIDE-SETUP-CONSOLE-RUS.md) +- [Руководство по настройке Десктоп версии](GUIDE-SETUP-DESKTOP-RUS.md) +- [Руководство по настройке Докер версии](GUIDE-SETUP-DOCKER-RUS.md) +- [Руководство по настройке групп](GUIDE-SETUP-GROUPS-RUS.md) +- [Руководство по настройке фильтров](GUIDE-SETUP-FILTERS-RUS.md) +- [Шаблон проблемы](ISSUE-RUS.md) diff --git a/Docs/GUIDES.md b/Docs/GUIDES.md index f54d5a3b..e8645cf8 100644 --- a/Docs/GUIDES.md +++ b/Docs/GUIDES.md @@ -1,72 +1,7 @@ ## Guides -- [Guide to setup the desktop version](GUIDE-SETUP-DESKTOP.md) -- [Guide to setup the docker version](GUIDE-SETUP-DOCKER.md) - -## Run TgDownloaderDesktop under Windows OS -- Enable Developer Mode in Windows -- Run `PowerShell` with administrator rights -- Grant temporary access rights to install `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` -- Download the `TgDownloaderDesktop-Installing.ps1`[TgDownloaderDesktop-Installing.ps1] -- Run the `TgDownloaderDesktop-Installing.ps1` file in `PowerShell` - -## Run TgDownloaderConsole under Windows OS -- Extract the `TgDownloader v1.2.333.zip` archive to `TgDownloader v1.2.333` directory -- Change the current directory to `cd TgDownloader v1.2.333` -- Run the `TgDownloaderConsole.exe` command or double click the file - -## Run TgDownloaderConsole under Linux OS -- Extract the `TgDownloader v1.2.333.zip` archive to `TgDownloader v1.2.333` directory -- Change the current directory to `cd TgDownloader v1.2.333` -- Run the `dotnet TgDownloaderConsole.dll` command - -## Quick Start -- Change app settings -- Set up storage -- Set up the Telegram client -- Set up a download - -## Default settings for TgDownloaderConsole -- Delete the file `TgDownloader.xml` - -# Guide for downloading groups -1. Join a group on Telegram. -2. Right click any message -> `Copy Message Link`. -3. Edit the link on the clipboard `https://t.me/c/group_id/message_number` like this `group_id`. -4. Run `TgDownloaderConsole.exe` (Windows) or `dotnet TgDownloaderConsole.dll` (Linux). -5. Go to the -> `Download settings` -> `Setup source (ID/username)` -> paste `group_id`. -6. Go to the -> `Setup download folder` -> `Drive:\Storage_path`. -7. Go to the -> `Manual download`. -8. Enjoy. - -# Guide for filters settings -View filters -- list of all filters -Add filter -- add new filter -Edit filter -- edit exists filter -Remove filter -- remove exists filter -Reset filter -- remove all exists filters - -## Example of add filter type `Single name` -Set name: develop -Set mask: c*# - -## Example of add filter type `Single extension` -Set name: book -Set mask: pdf - -## Example of add filter type `Multi name` -Set name: develops -Set mask: c*#, python - -## Example of add filter type `Multi extension` -Set name: books -Set mask: epub, fb2, pdf - -## Example of add filter type `File minimum size` -Set name: min 1 mb -Set file size type: MBytes -File minimum size: 1 - -## Example of add filter type `File minimum size` -Set name: max 2 gb -Set file size type: GBytes -File minimum size: 2 +- [Guide to setup the Console version](GUIDE-SETUP-CONSOLE.md) +- [Guide to setup the Desktop version](GUIDE-SETUP-DESKTOP.md) +- [Guide to setup the Docker version](GUIDE-SETUP-DOCKER.md) +- [Guide to setup for groups](GUIDE-SETUP-GROUPS.md) +- [Guide to setup for filters](GUIDE-SETUP-FILTERS.md) +- [Issue template](ISSUE.md) diff --git a/Docs/RELEASE.md b/Docs/RELEASE.md index ecc5e0bc..0c45cd32 100644 --- a/Docs/RELEASE.md +++ b/Docs/RELEASE.md @@ -4,6 +4,7 @@ ## - GitHub all releases ![GitHub all releases](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/total?style=social) +- GitHub preview v0.5.430 ![GitHub preview v0.5.430](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/v0.5.430/total?style=social) - GitHub preview v0.5.410 ![GitHub preview v0.5.410](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/v0.5.410/total?style=social) - GitHub preview v0.5.370 ![GitHub preview v0.5.370](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/v0.5.370/total?style=social) - GitHub preview v0.5.360 ![GitHub preview v0.5.360](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/v0.5.360/total?style=social) diff --git a/Clients/TgDownloaderBlazor/.config/dotnet-tools.json b/Presentation/TgDownloaderBlazor/.config/dotnet-tools.json similarity index 100% rename from Clients/TgDownloaderBlazor/.config/dotnet-tools.json rename to Presentation/TgDownloaderBlazor/.config/dotnet-tools.json diff --git a/Clients/TgDownloaderBlazor/App.razor b/Presentation/TgDownloaderBlazor/App.razor similarity index 100% rename from Clients/TgDownloaderBlazor/App.razor rename to Presentation/TgDownloaderBlazor/App.razor diff --git a/Clients/TgDownloaderBlazor/App.razor.cs b/Presentation/TgDownloaderBlazor/App.razor.cs similarity index 94% rename from Clients/TgDownloaderBlazor/App.razor.cs rename to Presentation/TgDownloaderBlazor/App.razor.cs index 7b7741b5..ba617106 100644 --- a/Clients/TgDownloaderBlazor/App.razor.cs +++ b/Presentation/TgDownloaderBlazor/App.razor.cs @@ -16,7 +16,7 @@ public App() IsCurrentDirSet = true; string debugAnyCpu = #if NET8_0 - "bin\\Debug_AnyCPU\\net8.0"; + "bin\\Debug_AnyCPU\\net9.0"; #else "bin\\Debug_AnyCPU"; #endif diff --git a/Clients/TgDownloaderBlazor/Common/TgLayoutComponentBase.cs b/Presentation/TgDownloaderBlazor/Common/TgLayoutComponentBase.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Common/TgLayoutComponentBase.cs rename to Presentation/TgDownloaderBlazor/Common/TgLayoutComponentBase.cs diff --git a/Clients/TgDownloaderBlazor/Common/TgPageComponentBase.cs b/Presentation/TgDownloaderBlazor/Common/TgPageComponentBase.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Common/TgPageComponentBase.cs rename to Presentation/TgDownloaderBlazor/Common/TgPageComponentBase.cs diff --git a/Clients/TgDownloaderBlazor/Common/TgPageComponentEnumerable.cs b/Presentation/TgDownloaderBlazor/Common/TgPageComponentEnumerable.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Common/TgPageComponentEnumerable.cs rename to Presentation/TgDownloaderBlazor/Common/TgPageComponentEnumerable.cs diff --git a/Clients/TgDownloaderBlazor/Common/TgPageComponentItem.cs b/Presentation/TgDownloaderBlazor/Common/TgPageComponentItem.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Common/TgPageComponentItem.cs rename to Presentation/TgDownloaderBlazor/Common/TgPageComponentItem.cs diff --git a/Clients/TgDownloaderBlazor/Dockerfile b/Presentation/TgDownloaderBlazor/Dockerfile similarity index 100% rename from Clients/TgDownloaderBlazor/Dockerfile rename to Presentation/TgDownloaderBlazor/Dockerfile diff --git a/Clients/TgDownloaderBlazor/Features/Client/ClientComponent.razor b/Presentation/TgDownloaderBlazor/Features/Client/ClientComponent.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Client/ClientComponent.razor rename to Presentation/TgDownloaderBlazor/Features/Client/ClientComponent.razor diff --git a/Clients/TgDownloaderBlazor/Features/Client/ClientComponent.razor.cs b/Presentation/TgDownloaderBlazor/Features/Client/ClientComponent.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Client/ClientComponent.razor.cs rename to Presentation/TgDownloaderBlazor/Features/Client/ClientComponent.razor.cs diff --git a/Clients/TgDownloaderBlazor/Features/Filters/FilterComponent.razor b/Presentation/TgDownloaderBlazor/Features/Filters/FilterComponent.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Filters/FilterComponent.razor rename to Presentation/TgDownloaderBlazor/Features/Filters/FilterComponent.razor diff --git a/Clients/TgDownloaderBlazor/Features/Filters/FilterComponent.razor.cs b/Presentation/TgDownloaderBlazor/Features/Filters/FilterComponent.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Filters/FilterComponent.razor.cs rename to Presentation/TgDownloaderBlazor/Features/Filters/FilterComponent.razor.cs diff --git a/Clients/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor b/Presentation/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor rename to Presentation/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor diff --git a/Clients/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor.cs b/Presentation/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor.cs rename to Presentation/TgDownloaderBlazor/Features/Proxies/ProxyComponent.razor.cs diff --git a/Clients/TgDownloaderBlazor/Features/Sources/SourceComponent.razor b/Presentation/TgDownloaderBlazor/Features/Sources/SourceComponent.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Sources/SourceComponent.razor rename to Presentation/TgDownloaderBlazor/Features/Sources/SourceComponent.razor diff --git a/Clients/TgDownloaderBlazor/Features/Sources/SourceComponent.razor.cs b/Presentation/TgDownloaderBlazor/Features/Sources/SourceComponent.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Sources/SourceComponent.razor.cs rename to Presentation/TgDownloaderBlazor/Features/Sources/SourceComponent.razor.cs diff --git a/Clients/TgDownloaderBlazor/Features/Versions/VersionComponent.razor b/Presentation/TgDownloaderBlazor/Features/Versions/VersionComponent.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Versions/VersionComponent.razor rename to Presentation/TgDownloaderBlazor/Features/Versions/VersionComponent.razor diff --git a/Clients/TgDownloaderBlazor/Features/Versions/VersionComponent.razor.cs b/Presentation/TgDownloaderBlazor/Features/Versions/VersionComponent.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Features/Versions/VersionComponent.razor.cs rename to Presentation/TgDownloaderBlazor/Features/Versions/VersionComponent.razor.cs diff --git a/Clients/TgDownloaderBlazor/Pages/Error.cshtml b/Presentation/TgDownloaderBlazor/Pages/Error.cshtml similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Error.cshtml rename to Presentation/TgDownloaderBlazor/Pages/Error.cshtml diff --git a/Clients/TgDownloaderBlazor/Pages/Error.cshtml.cs b/Presentation/TgDownloaderBlazor/Pages/Error.cshtml.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Error.cshtml.cs rename to Presentation/TgDownloaderBlazor/Pages/Error.cshtml.cs diff --git a/Clients/TgDownloaderBlazor/Pages/Header.razor b/Presentation/TgDownloaderBlazor/Pages/Header.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Header.razor rename to Presentation/TgDownloaderBlazor/Pages/Header.razor diff --git a/Clients/TgDownloaderBlazor/Pages/Header.razor.cs b/Presentation/TgDownloaderBlazor/Pages/Header.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Header.razor.cs rename to Presentation/TgDownloaderBlazor/Pages/Header.razor.cs diff --git a/Clients/TgDownloaderBlazor/Pages/Index.razor b/Presentation/TgDownloaderBlazor/Pages/Index.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Index.razor rename to Presentation/TgDownloaderBlazor/Pages/Index.razor diff --git a/Clients/TgDownloaderBlazor/Pages/Index.razor.cs b/Presentation/TgDownloaderBlazor/Pages/Index.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/Index.razor.cs rename to Presentation/TgDownloaderBlazor/Pages/Index.razor.cs diff --git a/Clients/TgDownloaderBlazor/Pages/MainLayout.razor b/Presentation/TgDownloaderBlazor/Pages/MainLayout.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/MainLayout.razor rename to Presentation/TgDownloaderBlazor/Pages/MainLayout.razor diff --git a/Clients/TgDownloaderBlazor/Pages/MainLayout.razor.css b/Presentation/TgDownloaderBlazor/Pages/MainLayout.razor.css similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/MainLayout.razor.css rename to Presentation/TgDownloaderBlazor/Pages/MainLayout.razor.css diff --git a/Clients/TgDownloaderBlazor/Pages/NavMenu.razor b/Presentation/TgDownloaderBlazor/Pages/NavMenu.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/NavMenu.razor rename to Presentation/TgDownloaderBlazor/Pages/NavMenu.razor diff --git a/Clients/TgDownloaderBlazor/Pages/NavMenu.razor.cs b/Presentation/TgDownloaderBlazor/Pages/NavMenu.razor.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/NavMenu.razor.cs rename to Presentation/TgDownloaderBlazor/Pages/NavMenu.razor.cs diff --git a/Clients/TgDownloaderBlazor/Pages/NavMenu.razor.css b/Presentation/TgDownloaderBlazor/Pages/NavMenu.razor.css similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/NavMenu.razor.css rename to Presentation/TgDownloaderBlazor/Pages/NavMenu.razor.css diff --git a/Clients/TgDownloaderBlazor/Pages/SurveyPrompt.razor b/Presentation/TgDownloaderBlazor/Pages/SurveyPrompt.razor similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/SurveyPrompt.razor rename to Presentation/TgDownloaderBlazor/Pages/SurveyPrompt.razor diff --git a/Clients/TgDownloaderBlazor/Pages/_Host.cshtml b/Presentation/TgDownloaderBlazor/Pages/_Host.cshtml similarity index 100% rename from Clients/TgDownloaderBlazor/Pages/_Host.cshtml rename to Presentation/TgDownloaderBlazor/Pages/_Host.cshtml diff --git a/Clients/TgDownloaderBlazor/Program.cs b/Presentation/TgDownloaderBlazor/Program.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Program.cs rename to Presentation/TgDownloaderBlazor/Program.cs diff --git a/Clients/TgDownloaderBlazor/Properties/launchSettings.json b/Presentation/TgDownloaderBlazor/Properties/launchSettings.json similarity index 100% rename from Clients/TgDownloaderBlazor/Properties/launchSettings.json rename to Presentation/TgDownloaderBlazor/Properties/launchSettings.json diff --git a/Clients/TgDownloaderBlazor/Services/TgJsService.cs b/Presentation/TgDownloaderBlazor/Services/TgJsService.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Services/TgJsService.cs rename to Presentation/TgDownloaderBlazor/Services/TgJsService.cs diff --git a/Clients/TgDownloaderBlazor/TgDownloaderBlazor.csproj b/Presentation/TgDownloaderBlazor/TgDownloaderBlazor.csproj similarity index 93% rename from Clients/TgDownloaderBlazor/TgDownloaderBlazor.csproj rename to Presentation/TgDownloaderBlazor/TgDownloaderBlazor.csproj index 498ef3c8..9860ba94 100644 --- a/Clients/TgDownloaderBlazor/TgDownloaderBlazor.csproj +++ b/Presentation/TgDownloaderBlazor/TgDownloaderBlazor.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable LICENSE.md AnyCPU;x64;x86 @@ -9,7 +9,7 @@ acec7ca6-caa9-470e-96aa-3f14f080d6bd Linux ..\.. - 0.5.410.0 + 0.5.440.0 @@ -25,18 +25,18 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - - + + diff --git a/Clients/TgDownloaderBlazor/Using.cs b/Presentation/TgDownloaderBlazor/Using.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Using.cs rename to Presentation/TgDownloaderBlazor/Using.cs diff --git a/Clients/TgDownloaderBlazor/Utils/TgAppUtils.cs b/Presentation/TgDownloaderBlazor/Utils/TgAppUtils.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Utils/TgAppUtils.cs rename to Presentation/TgDownloaderBlazor/Utils/TgAppUtils.cs diff --git a/Clients/TgDownloaderBlazor/Utils/TgBlazorUtils.cs b/Presentation/TgDownloaderBlazor/Utils/TgBlazorUtils.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Utils/TgBlazorUtils.cs rename to Presentation/TgDownloaderBlazor/Utils/TgBlazorUtils.cs diff --git a/Clients/TgDownloaderBlazor/Utils/TgDatabaseUtility.cs b/Presentation/TgDownloaderBlazor/Utils/TgDatabaseUtility.cs similarity index 100% rename from Clients/TgDownloaderBlazor/Utils/TgDatabaseUtility.cs rename to Presentation/TgDownloaderBlazor/Utils/TgDatabaseUtility.cs diff --git a/Clients/TgDownloaderBlazor/_Imports.razor b/Presentation/TgDownloaderBlazor/_Imports.razor similarity index 100% rename from Clients/TgDownloaderBlazor/_Imports.razor rename to Presentation/TgDownloaderBlazor/_Imports.razor diff --git a/Clients/TgDownloaderBlazor/appsettings.Development.json b/Presentation/TgDownloaderBlazor/appsettings.Development.json similarity index 100% rename from Clients/TgDownloaderBlazor/appsettings.Development.json rename to Presentation/TgDownloaderBlazor/appsettings.Development.json diff --git a/Clients/TgDownloaderBlazor/appsettings.json b/Presentation/TgDownloaderBlazor/appsettings.json similarity index 100% rename from Clients/TgDownloaderBlazor/appsettings.json rename to Presentation/TgDownloaderBlazor/appsettings.json diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css b/Presentation/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css rename to Presentation/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css.map b/Presentation/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css.map rename to Presentation/TgDownloaderBlazor/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/FONT-LICENSE b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/FONT-LICENSE rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/ICON-LICENSE b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/ICON-LICENSE rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/README.md b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/README.md similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/README.md rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/README.md diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to Presentation/TgDownloaderBlazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/Clients/TgDownloaderBlazor/wwwroot/css/site.css b/Presentation/TgDownloaderBlazor/wwwroot/css/site.css similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/css/site.css rename to Presentation/TgDownloaderBlazor/wwwroot/css/site.css diff --git a/Clients/TgDownloaderBlazor/wwwroot/favicon.png b/Presentation/TgDownloaderBlazor/wwwroot/favicon.png similarity index 100% rename from Clients/TgDownloaderBlazor/wwwroot/favicon.png rename to Presentation/TgDownloaderBlazor/wwwroot/favicon.png diff --git a/Clients/TgDownloaderConsole/Dockerfile b/Presentation/TgDownloaderConsole/Dockerfile similarity index 75% rename from Clients/TgDownloaderConsole/Dockerfile rename to Presentation/TgDownloaderConsole/Dockerfile index 86bc71ad..2c7767d0 100644 --- a/Clients/TgDownloaderConsole/Dockerfile +++ b/Presentation/TgDownloaderConsole/Dockerfile @@ -2,15 +2,14 @@ # how Visual Studio uses this Dockerfile to build your images for faster debugging. # Docker base image -FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base # Image setup WORKDIR /app EXPOSE 7681/tcp -# Dependencies -RUN apt-get update -RUN apt-get install -y wget +# Install any additional dependencies if necessary +RUN apt-get update && apt-get install -y wget RUN wget -q http://launchpadlibrarian.net/572052648/ttyd_1.6.3+20210924-1build1_amd64.deb RUN apt install -y ./ttyd_1.6.3+20210924-1build1_amd64.deb diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelper.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelper.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelper.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelper.cs diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs similarity index 99% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs index 78b33d76..d7937e06 100644 --- a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs +++ b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperAction.cs @@ -13,7 +13,7 @@ public async Task CheckTgSettingsWithWarningAsync(TgDownloadSettingsViewMo bool result = TgClient is { IsReady: true } && tgDownloadSettings.SourceVm.Dto.IsReady; if (!result) { - await ClientConnectAsync(tgDownloadSettings, true); + await ClientConnectAsync(tgDownloadSettings, isSilent: true); result = TgClient is { IsReady: true } && tgDownloadSettings.SourceVm.Dto.IsReady; if (!result) { diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperAdvanced.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperAdvanced.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperAdvanced.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperAdvanced.cs diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperApp.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperApp.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperApp.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperApp.cs diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperClient.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperConnection.cs similarity index 98% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperClient.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperConnection.cs index 0ecca5b7..645e3941 100644 --- a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperClient.cs +++ b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperConnection.cs @@ -44,7 +44,7 @@ public async Task SetupClientAsync(TgDownloadSettingsViewModel tgDownloadSetting break; case TgEnumMenuClient.Connect: TgLog.WriteLine("TG client connect ..."); - await ClientConnectAsync(tgDownloadSettings, false); + await ClientConnectAsync(tgDownloadSettings, isSilent: false); TgLog.WriteLine("TG client connect success"); break; case TgEnumMenuClient.Disconnect: @@ -196,7 +196,7 @@ private async Task AskClientConnectAsync(TgDownloadSettingsViewModel tgDownloadS .AddChoices(TgLocale.MenuNo, TgLocale.MenuYes)); var isConnect = prompt.Equals(TgLocale.MenuYes); if (isConnect) - await ClientConnectAsync(tgDownloadSettings, false); + await ClientConnectAsync(tgDownloadSettings, isSilent: false); } public async Task ClientConnectAsync(TgDownloadSettingsViewModel tgDownloadSettings, bool isSilent) diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperDownload.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperDownload.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperDownload.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperDownload.cs diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperFilters.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperFilters.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperFilters.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperFilters.cs diff --git a/Clients/TgDownloaderConsole/Helpers/TgMenuHelperStorage.cs b/Presentation/TgDownloaderConsole/Helpers/TgMenuHelperStorage.cs similarity index 100% rename from Clients/TgDownloaderConsole/Helpers/TgMenuHelperStorage.cs rename to Presentation/TgDownloaderConsole/Helpers/TgMenuHelperStorage.cs diff --git a/Clients/TgDownloaderConsole/Post-build.cmd b/Presentation/TgDownloaderConsole/Post-build.cmd similarity index 100% rename from Clients/TgDownloaderConsole/Post-build.cmd rename to Presentation/TgDownloaderConsole/Post-build.cmd diff --git a/Clients/TgDownloaderConsole/Program.cs b/Presentation/TgDownloaderConsole/Program.cs similarity index 95% rename from Clients/TgDownloaderConsole/Program.cs rename to Presentation/TgDownloaderConsole/Program.cs index 4e473299..72d422c0 100644 --- a/Clients/TgDownloaderConsole/Program.cs +++ b/Presentation/TgDownloaderConsole/Program.cs @@ -21,6 +21,10 @@ TgAsyncUtils.SetAppType(TgEnumAppType.Console); tgLog.WriteLine("Menu init success"); +// TG Connection +if (File.Exists(TgFileUtils.FileTgSession)) + await menu.ClientConnectAsync(tgDownloadSettings, isSilent: true); + do { try diff --git a/Clients/TgDownloaderConsole/Properties/launchSettings.json b/Presentation/TgDownloaderConsole/Properties/launchSettings.json similarity index 100% rename from Clients/TgDownloaderConsole/Properties/launchSettings.json rename to Presentation/TgDownloaderConsole/Properties/launchSettings.json diff --git a/Presentation/TgDownloaderConsole/TgDownloader.xml b/Presentation/TgDownloaderConsole/TgDownloader.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d46bd0faea2a07541687b79908591768bb4c89c GIT binary patch literal 248 zcmZ{f!3x4K5JcZu@E`nw_Aa4NF@oSl>aiC^Erp`e3jV$Nau5}fVMsPRJF|J*10@$x zFlNL=1QxV(9H`_VTF#tQY-pH!zgcyjTlOk?GBuydK>pX`of0{kaMh>RsnMa(Z%S=O kX;#ThRzz9LH7l0BN2|2S_iX0u&fRnSzrHCo^ Exe - net8.0 + net9.0 enable enable LICENSE.md @@ -9,7 +9,7 @@ applicationIcon.ico Linux ..\.. - 0.5.410.0 + 0.5.440.0 full @@ -38,18 +38,18 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -65,10 +65,14 @@ PreserveNewest - - + + + + + + PreserveNewest diff --git a/Clients/TgDownloaderConsole/Using.cs b/Presentation/TgDownloaderConsole/Using.cs similarity index 100% rename from Clients/TgDownloaderConsole/Using.cs rename to Presentation/TgDownloaderConsole/Using.cs diff --git a/Clients/TgDownloaderConsole/applicationIcon.ico b/Presentation/TgDownloaderConsole/applicationIcon.ico similarity index 100% rename from Clients/TgDownloaderConsole/applicationIcon.ico rename to Presentation/TgDownloaderConsole/applicationIcon.ico diff --git a/Clients/TgDownloaderDesktop/Activation/ActivationHandler.cs b/Presentation/TgDownloaderDesktop/Activation/ActivationHandler.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Activation/ActivationHandler.cs rename to Presentation/TgDownloaderDesktop/Activation/ActivationHandler.cs diff --git a/Clients/TgDownloaderDesktop/Activation/AppNotificationActivationHandler.cs b/Presentation/TgDownloaderDesktop/Activation/AppNotificationActivationHandler.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Activation/AppNotificationActivationHandler.cs rename to Presentation/TgDownloaderDesktop/Activation/AppNotificationActivationHandler.cs diff --git a/Clients/TgDownloaderDesktop/Activation/DefaultActivationHandler.cs b/Presentation/TgDownloaderDesktop/Activation/DefaultActivationHandler.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Activation/DefaultActivationHandler.cs rename to Presentation/TgDownloaderDesktop/Activation/DefaultActivationHandler.cs diff --git a/Clients/TgDownloaderDesktop/Activation/IActivationHandler.cs b/Presentation/TgDownloaderDesktop/Activation/IActivationHandler.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Activation/IActivationHandler.cs rename to Presentation/TgDownloaderDesktop/Activation/IActivationHandler.cs diff --git a/Clients/TgDownloaderDesktop/App.xaml b/Presentation/TgDownloaderDesktop/App.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/App.xaml rename to Presentation/TgDownloaderDesktop/App.xaml diff --git a/Clients/TgDownloaderDesktop/App.xaml.cs b/Presentation/TgDownloaderDesktop/App.xaml.cs similarity index 91% rename from Clients/TgDownloaderDesktop/App.xaml.cs rename to Presentation/TgDownloaderDesktop/App.xaml.cs index 812a23c9..e6e0baec 100644 --- a/Clients/TgDownloaderDesktop/App.xaml.cs +++ b/Presentation/TgDownloaderDesktop/App.xaml.cs @@ -61,6 +61,7 @@ public App() services.AddSingleton(); services.AddSingleton(); // Views and ViewModels + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -75,7 +76,6 @@ public App() services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -95,6 +95,8 @@ public App() services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); // Configuration services.Configure(context.Configuration.GetSection(nameof(LocalSettingsOptions))); }) @@ -126,6 +128,21 @@ protected override async void OnLaunched(LaunchActivatedEventArgs args) base.OnLaunched(args); App.GetService().Show(string.Format("AppNotificationSamplePayload".GetLocalized(), AppContext.BaseDirectory)); await App.GetService().ActivateAsync(args); +#if DEBUG + TgDesktopUtils.FileLog("OnLaunched"); +#endif + try + { + TgAsyncUtils.SetAppType(TgEnumAppType.Desktop); + // Register TgEfContext as the DbContext for EF Core + TgEfUtils.AppStorage = App.GetService().AppStorage; + await TgEfUtils.CreateAndUpdateDbAsync(); + TgEfUtils.RecreateEfContext(); + } + catch (Exception ex) + { + TgDesktopUtils.FileLog(ex); + } } #endregion diff --git a/Clients/TgDownloaderDesktop/Assets/LockScreenLogo.scale-200.png b/Presentation/TgDownloaderDesktop/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/LockScreenLogo.scale-200.png rename to Presentation/TgDownloaderDesktop/Assets/LockScreenLogo.scale-200.png diff --git a/Clients/TgDownloaderDesktop/Assets/SplashScreen.scale-200.png b/Presentation/TgDownloaderDesktop/Assets/SplashScreen.scale-200.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/SplashScreen.scale-200.png rename to Presentation/TgDownloaderDesktop/Assets/SplashScreen.scale-200.png diff --git a/Clients/TgDownloaderDesktop/Assets/Square150x150Logo.scale-200.png b/Presentation/TgDownloaderDesktop/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/Square150x150Logo.scale-200.png rename to Presentation/TgDownloaderDesktop/Assets/Square150x150Logo.scale-200.png diff --git a/Clients/TgDownloaderDesktop/Assets/Square44x44Logo.scale-200.png b/Presentation/TgDownloaderDesktop/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/Square44x44Logo.scale-200.png rename to Presentation/TgDownloaderDesktop/Assets/Square44x44Logo.scale-200.png diff --git a/Clients/TgDownloaderDesktop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Presentation/TgDownloaderDesktop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to Presentation/TgDownloaderDesktop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/Clients/TgDownloaderDesktop/Assets/StoreLogo.png b/Presentation/TgDownloaderDesktop/Assets/StoreLogo.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/StoreLogo.png rename to Presentation/TgDownloaderDesktop/Assets/StoreLogo.png diff --git a/Clients/TgDownloaderDesktop/Assets/Wide310x150Logo.scale-200.png b/Presentation/TgDownloaderDesktop/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/Wide310x150Logo.scale-200.png rename to Presentation/TgDownloaderDesktop/Assets/Wide310x150Logo.scale-200.png diff --git a/Clients/TgDownloaderDesktop/Assets/applicationIcon.ico b/Presentation/TgDownloaderDesktop/Assets/applicationIcon.ico similarity index 100% rename from Clients/TgDownloaderDesktop/Assets/applicationIcon.ico rename to Presentation/TgDownloaderDesktop/Assets/applicationIcon.ico diff --git a/Clients/TgDownloaderDesktop/Behaviors/NavigationViewHeaderBehavior.cs b/Presentation/TgDownloaderDesktop/Behaviors/NavigationViewHeaderBehavior.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Behaviors/NavigationViewHeaderBehavior.cs rename to Presentation/TgDownloaderDesktop/Behaviors/NavigationViewHeaderBehavior.cs diff --git a/Clients/TgDownloaderDesktop/Behaviors/NavigationViewHeaderMode.cs b/Presentation/TgDownloaderDesktop/Behaviors/NavigationViewHeaderMode.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Behaviors/NavigationViewHeaderMode.cs rename to Presentation/TgDownloaderDesktop/Behaviors/NavigationViewHeaderMode.cs diff --git a/Clients/TgDownloaderDesktop/Common/TgPageViewModelBase.cs b/Presentation/TgDownloaderDesktop/Common/TgPageViewModelBase.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Common/TgPageViewModelBase.cs rename to Presentation/TgDownloaderDesktop/Common/TgPageViewModelBase.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/IActivationService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/IActivationService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/IActivationService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/IActivationService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/IAppNotificationService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/IAppNotificationService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/IAppNotificationService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/IAppNotificationService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/INavigationService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/INavigationService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/INavigationService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/INavigationService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/INavigationViewService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/INavigationViewService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/INavigationViewService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/INavigationViewService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/IPageService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/IPageService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/IPageService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/IPageService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/ITgSettingsService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/ITgSettingsService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/ITgSettingsService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/ITgSettingsService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/Services/IWebViewService.cs b/Presentation/TgDownloaderDesktop/Contracts/Services/IWebViewService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/Services/IWebViewService.cs rename to Presentation/TgDownloaderDesktop/Contracts/Services/IWebViewService.cs diff --git a/Clients/TgDownloaderDesktop/Contracts/ViewModels/INavigationAware.cs b/Presentation/TgDownloaderDesktop/Contracts/ViewModels/INavigationAware.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Contracts/ViewModels/INavigationAware.cs rename to Presentation/TgDownloaderDesktop/Contracts/ViewModels/INavigationAware.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgBooleanToVisibilityConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgBooleanToVisibilityConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgBooleanToVisibilityConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgBooleanToVisibilityConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs b/Presentation/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs similarity index 85% rename from Clients/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs index eed44da6..58d89a1e 100644 --- a/Clients/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs +++ b/Presentation/TgDownloaderDesktop/Helpers/TgDesktopUtils.cs @@ -9,10 +9,6 @@ public static class TgDesktopUtils #region Public and private fields, properties, constructor public static TgClientHelper TgClient => TgClientHelper.Instance; - public static string BaseDirectory = AppContext.BaseDirectory; - public static string LocalFolder = ApplicationData.Current.LocalFolder.Path; - public static string InstalledLocation = Package.Current.InstalledLocation.Path; - public static string TgDownloaderLogName => "TgDownloader.log"; #endregion @@ -159,48 +155,37 @@ public static class TgDesktopUtils //} //public static async Task RunFuncAsync(TgPageViewModelBase viewModel, Func action, bool isUpdateLoad) - // { - // async Task Job() - // { - // if (isUpdateLoad) - // viewModel.IsLoad = true; - // //TgConnectViewModel.Exception.Clear(); - // await action(); - // } - - // void JobFinally() - // { - // viewModel.IsLoad = false; - // } - - // try - // { + // { + // async Task Job() + // { + // if (isUpdateLoad) + // viewModel.IsLoad = true; + // //TgConnectViewModel.Exception.Clear(); + // await action(); + // } + + // void JobFinally() + // { + // viewModel.IsLoad = false; + // } + + // try + // { // App.MainWindow.DispatcherQueue.TryEnqueue(async () => await Job()); - // } - // catch (Exception ex) - // { + // } + // catch (Exception ex) + // { // //App.MainWindow.DispatcherQueue.TryEnqueue(() => TgConnectViewModel.Exception.Set(ex)); - // } - // finally - // { - // if (isUpdateLoad) - // { + // } + // finally + // { + // if (isUpdateLoad) + // { // App.MainWindow.DispatcherQueue.TryEnqueue(JobFinally); - // } - // await Task.CompletedTask; - // } - // } - - private static void FileLogCore(string message) - { - var storageFolder = StorageFolder.GetFolderFromPathAsync(LocalFolder).GetAwaiter().GetResult(); - var storageFile = storageFolder.CreateFileAsync(TgDownloaderLogName, CreationCollisionOption.OpenIfExists).GetAwaiter().GetResult(); - var logMessage = $"[{DateTime.Now}] {message}"; - using var stream = storageFile.OpenStreamForWriteAsync().GetAwaiter().GetResult(); - stream.Seek(0, SeekOrigin.End); - using var writer = new StreamWriter(stream); - writer.WriteLine(logMessage); - } + // } + // await Task.CompletedTask; + // } + // } private static void AppendCallerInfo(this StringBuilder sb, string filePath, int lineNumber, string memberName) { @@ -231,15 +216,31 @@ public static void FileLog(string message, FileLogCore(sb.ToString()); } + private static async void FileLogCore(string message) => await FileLogCoreAsync(message); + private static async Task FileLogCoreAsync(string message) { - var storageFolder = await StorageFolder.GetFolderFromPathAsync(LocalFolder); - var storageFile = await storageFolder.CreateFileAsync(TgDownloaderLogName, CreationCollisionOption.OpenIfExists); - var logMessage = $"[{DateTime.Now}] {message}"; - await using var stream = await storageFile.OpenStreamForWriteAsync(); - stream.Seek(0, SeekOrigin.End); - await using var writer = new StreamWriter(stream); - await writer.WriteLineAsync(logMessage); + var appFolder = string.Empty; + try + { + appFolder = App.GetService().AppFolder; + } + catch (Exception) + { + // + } + if (!Directory.Exists(appFolder)) + { + appFolder = Path.GetDirectoryName(Environment.ProcessPath); + } + if (!Directory.Exists(appFolder)) return; + var storageFolder = await StorageFolder.GetFolderFromPathAsync(appFolder); + var storageFile = await storageFolder.CreateFileAsync(TgFileUtils.FileLog, CreationCollisionOption.OpenIfExists); + var logMessage = $"[{DateTime.Now}] {message}"; + await using var stream = await storageFile.OpenStreamForWriteAsync(); + stream.Seek(0, SeekOrigin.End); + await using var writer = new StreamWriter(stream); + await writer.WriteLineAsync(logMessage); } public static async Task FileLogAsync(Exception ex, string message = "", @@ -318,7 +319,11 @@ public static async Task DeleteFileStorageExistsCoreAsync(string fullPath) if (storageFile.IsAvailable) await storageFile.DeleteAsync(); } +#if DEBUG catch (Exception ex) +#else + catch (Exception) +#endif { #if DEBUG await FileLogAsync(ex, $"{Path.Combine(folder, fileName)}"); @@ -351,7 +356,11 @@ public static async Task CalculateDirSizeAsync(string folderPath) totalSize += await CalculateDirSizeAsync(subFolder.Path); } } +#if DEBUG catch (Exception ex) +#else + catch (Exception) +#endif { #if DEBUG Debug.WriteLine(ex); diff --git a/Clients/TgDownloaderDesktop/Helpers/TgElementThemeToStringConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgElementThemeToStringConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgElementThemeToStringConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgElementThemeToStringConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgEnumToBooleanConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgEnumToBooleanConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgEnumToBooleanConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgEnumToBooleanConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgEnumToColumnConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgEnumToColumnConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgEnumToColumnConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgEnumToColumnConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgEnumToColumnSpanConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgEnumToColumnSpanConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgEnumToColumnSpanConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgEnumToColumnSpanConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgFrameExtensions.cs b/Presentation/TgDownloaderDesktop/Helpers/TgFrameExtensions.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgFrameExtensions.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgFrameExtensions.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgInverseBooleanConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgInverseBooleanConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgInverseBooleanConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgInverseBooleanConverter.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgInverseBooleanToVisibilityConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgInverseBooleanToVisibilityConverter.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgInverseBooleanToVisibilityConverter.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgInverseBooleanToVisibilityConverter.cs diff --git a/Presentation/TgDownloaderDesktop/Helpers/TgLicenseTypeToVisibilityConverter.cs b/Presentation/TgDownloaderDesktop/Helpers/TgLicenseTypeToVisibilityConverter.cs new file mode 100644 index 00000000..0d434f62 --- /dev/null +++ b/Presentation/TgDownloaderDesktop/Helpers/TgLicenseTypeToVisibilityConverter.cs @@ -0,0 +1,21 @@ +// This is an independent project of an individual developer. Dear PVS-Studio, please check it. +// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com + +namespace TgDownloaderDesktop.Helpers; + +public sealed partial class TgLicenseTypeToVisibilityConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, string language) + { + if (value is TgEnumLicenseType licenseType) + { + return licenseType == TgEnumLicenseType.Free ? Visibility.Collapsed : Visibility.Visible; + } + return Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Clients/TgDownloaderDesktop/Helpers/TgNavigationHelper.cs b/Presentation/TgDownloaderDesktop/Helpers/TgNavigationHelper.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgNavigationHelper.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgNavigationHelper.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgResourceExtensions.cs b/Presentation/TgDownloaderDesktop/Helpers/TgResourceExtensions.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgResourceExtensions.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgResourceExtensions.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgRuntimeHelper.cs b/Presentation/TgDownloaderDesktop/Helpers/TgRuntimeHelper.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgRuntimeHelper.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgRuntimeHelper.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgSettingsStorageExtensions.cs b/Presentation/TgDownloaderDesktop/Helpers/TgSettingsStorageExtensions.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgSettingsStorageExtensions.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgSettingsStorageExtensions.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgThemeUtils.cs b/Presentation/TgDownloaderDesktop/Helpers/TgThemeUtils.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgThemeUtils.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgThemeUtils.cs diff --git a/Clients/TgDownloaderDesktop/Helpers/TgTitleBarHelper.cs b/Presentation/TgDownloaderDesktop/Helpers/TgTitleBarHelper.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Helpers/TgTitleBarHelper.cs rename to Presentation/TgDownloaderDesktop/Helpers/TgTitleBarHelper.cs diff --git a/Clients/TgDownloaderDesktop/MainWindow.xaml b/Presentation/TgDownloaderDesktop/MainWindow.xaml similarity index 93% rename from Clients/TgDownloaderDesktop/MainWindow.xaml rename to Presentation/TgDownloaderDesktop/MainWindow.xaml index 74ccff6d..e9d8a394 100644 --- a/Clients/TgDownloaderDesktop/MainWindow.xaml +++ b/Presentation/TgDownloaderDesktop/MainWindow.xaml @@ -3,7 +3,6 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:local="using:TgDownloaderDesktop" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:windowex="using:WinUIEx" Width="1200" diff --git a/Clients/TgDownloaderDesktop/MainWindow.xaml.cs b/Presentation/TgDownloaderDesktop/MainWindow.xaml.cs similarity index 88% rename from Clients/TgDownloaderDesktop/MainWindow.xaml.cs rename to Presentation/TgDownloaderDesktop/MainWindow.xaml.cs index 3c9ba7d6..1f212d3d 100644 --- a/Clients/TgDownloaderDesktop/MainWindow.xaml.cs +++ b/Presentation/TgDownloaderDesktop/MainWindow.xaml.cs @@ -12,7 +12,8 @@ public MainWindow() { InitializeComponent(); - AppWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/applicationIcon.ico")); + if (!string.IsNullOrEmpty(TgFileUtils.BaseDirectory)) + AppWindow.SetIcon(Path.Combine(TgFileUtils.BaseDirectory, "Assets/applicationIcon.ico")); Content = null; Title = "AppDisplayName".GetLocalized(); diff --git a/Clients/TgDownloaderDesktop/Models/LocalSettingsOptions.cs b/Presentation/TgDownloaderDesktop/Models/LocalSettingsOptions.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Models/LocalSettingsOptions.cs rename to Presentation/TgDownloaderDesktop/Models/LocalSettingsOptions.cs diff --git a/Clients/TgDownloaderDesktop/Package.appinstaller b/Presentation/TgDownloaderDesktop/Package.appinstaller similarity index 100% rename from Clients/TgDownloaderDesktop/Package.appinstaller rename to Presentation/TgDownloaderDesktop/Package.appinstaller diff --git a/Clients/TgDownloaderDesktop/Package.appxmanifest b/Presentation/TgDownloaderDesktop/Package.appxmanifest similarity index 100% rename from Clients/TgDownloaderDesktop/Package.appxmanifest rename to Presentation/TgDownloaderDesktop/Package.appxmanifest diff --git a/Clients/TgDownloaderDesktop/Properties/launchsettings.json b/Presentation/TgDownloaderDesktop/Properties/launchsettings.json similarity index 100% rename from Clients/TgDownloaderDesktop/Properties/launchsettings.json rename to Presentation/TgDownloaderDesktop/Properties/launchsettings.json diff --git a/Clients/TgDownloaderDesktop/Services/ActivationService.cs b/Presentation/TgDownloaderDesktop/Services/ActivationService.cs similarity index 79% rename from Clients/TgDownloaderDesktop/Services/ActivationService.cs rename to Presentation/TgDownloaderDesktop/Services/ActivationService.cs index 84c9ad6e..c682ef8f 100644 --- a/Clients/TgDownloaderDesktop/Services/ActivationService.cs +++ b/Presentation/TgDownloaderDesktop/Services/ActivationService.cs @@ -22,8 +22,6 @@ public async Task ActivateAsync(object activationArgs) await HandleActivationAsync(activationArgs); // Activate the MainWindow App.MainWindow.Activate(); - // Execute tasks after activation - await StartupAsync(); } private async Task HandleActivationAsync(object activationArgs) @@ -38,12 +36,4 @@ private async Task HandleActivationAsync(object activationArgs) await defaultHandler.HandleAsync(activationArgs); } } - - public async Task StartupAsync() - { - TgAsyncUtils.SetAppType(TgEnumAppType.Desktop); - // Register TgEfContext as the DbContext for EF Core - TgEfUtils.AppStorage = App.GetService().AppStorage; - await TgEfUtils.CreateAndUpdateDbAsync(); - } } diff --git a/Clients/TgDownloaderDesktop/Services/AppNotificationService.cs b/Presentation/TgDownloaderDesktop/Services/AppNotificationService.cs similarity index 94% rename from Clients/TgDownloaderDesktop/Services/AppNotificationService.cs rename to Presentation/TgDownloaderDesktop/Services/AppNotificationService.cs index 87795de5..877f8d4c 100644 --- a/Clients/TgDownloaderDesktop/Services/AppNotificationService.cs +++ b/Presentation/TgDownloaderDesktop/Services/AppNotificationService.cs @@ -5,11 +5,11 @@ namespace TgDownloaderDesktop.Services; public sealed class AppNotificationService : IAppNotificationService { - private readonly INavigationService _navigationService; + //private readonly INavigationService _navigationService; public AppNotificationService(INavigationService navigationService) { - _navigationService = navigationService; + //_navigationService = navigationService; } ~AppNotificationService() diff --git a/Clients/TgDownloaderDesktop/Services/NavigationService.cs b/Presentation/TgDownloaderDesktop/Services/NavigationService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Services/NavigationService.cs rename to Presentation/TgDownloaderDesktop/Services/NavigationService.cs diff --git a/Clients/TgDownloaderDesktop/Services/NavigationViewService.cs b/Presentation/TgDownloaderDesktop/Services/NavigationViewService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Services/NavigationViewService.cs rename to Presentation/TgDownloaderDesktop/Services/NavigationViewService.cs diff --git a/Clients/TgDownloaderDesktop/Services/PageService.cs b/Presentation/TgDownloaderDesktop/Services/PageService.cs similarity index 97% rename from Clients/TgDownloaderDesktop/Services/PageService.cs rename to Presentation/TgDownloaderDesktop/Services/PageService.cs index bf422446..2de000cd 100644 --- a/Clients/TgDownloaderDesktop/Services/PageService.cs +++ b/Presentation/TgDownloaderDesktop/Services/PageService.cs @@ -19,6 +19,7 @@ public PageService() Configure(); Configure(); Configure(); + Configure(); Configure(); Configure(); Configure(); diff --git a/Clients/TgDownloaderDesktop/Services/TgSettingsService.cs b/Presentation/TgDownloaderDesktop/Services/TgSettingsService.cs similarity index 62% rename from Clients/TgDownloaderDesktop/Services/TgSettingsService.cs rename to Presentation/TgDownloaderDesktop/Services/TgSettingsService.cs index 731b18e8..72f970b1 100644 --- a/Clients/TgDownloaderDesktop/Services/TgSettingsService.cs +++ b/Presentation/TgDownloaderDesktop/Services/TgSettingsService.cs @@ -22,29 +22,11 @@ public sealed partial class TgSettingsService : ObservableRecipient, ITgSettings [ObservableProperty] public partial TgEnumLanguage AppLanguage { get; set; } = TgEnumLanguage.Default; [ObservableProperty] - public partial string AppFolder { get; set; } = default!; - private string _appStorage = default!; - public string AppStorage - { - get => _appStorage; - set - { - SetProperty(ref _appStorage, value); - OnPropertyChanged(); - IsExistsAppStorage = File.Exists(AppStorage); - } - } - private string _appSession = default!; - public string AppSession - { - get => _appSession; - set - { - SetProperty(ref _appSession, value); - IsExistsAppSession = File.Exists(AppSession); - OnPropertyChanged(); - } - } + public partial string AppFolder { get; set; } = string.Empty; + [ObservableProperty] + public partial string AppStorage { get; set; } = string.Empty; + [ObservableProperty] + public partial string AppSession { get; set; } = string.Empty; [ObservableProperty] public partial bool IsExistsAppStorage { get; set; } [ObservableProperty] @@ -53,9 +35,9 @@ public string AppSession private const string DefaultApplicationDataFolder = "TgDownloaderDesktop/ApplicationData"; private const string DefaultLocalSettingsFile = "TgLocalSettings.json"; private readonly IFileService _fileService; - private readonly string _localApplicationData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); - private readonly string _applicationDataFolder; - private readonly string _localSettingsFile; + private readonly string _localApplicationData = string.Empty; + private readonly string _applicationDataFolder = string.Empty; + private readonly string _localSettingsFile = string.Empty; private IDictionary _settings; private bool _isInitialized; private readonly LocalSettingsOptions _options; @@ -63,13 +45,30 @@ public string AppSession public TgSettingsService(IFileService fileService, IOptions options) { _fileService = fileService; - _options = options.Value; - _applicationDataFolder = Path.Combine(_localApplicationData, _options.ApplicationDataFolder ?? DefaultApplicationDataFolder); - _localSettingsFile = _options.LocalSettingsFile ?? DefaultLocalSettingsFile; _settings = new Dictionary(); - AppThemes = [TgEnumTheme.Default, TgEnumTheme.Light, TgEnumTheme.Dark]; - AppLanguages = [TgEnumLanguage.Default, TgEnumLanguage.English, TgEnumLanguage.Russian]; - Default(); + _options = options.Value; + + try + { + AppThemes = [TgEnumTheme.Default, TgEnumTheme.Light, TgEnumTheme.Dark]; + AppLanguages = [TgEnumLanguage.Default, TgEnumLanguage.English, TgEnumLanguage.Russian]; + Default(); + } + catch (Exception ex) + { + TgDesktopUtils.FileLog(ex); + } + + try + { + _localApplicationData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + _applicationDataFolder = Path.Combine(_localApplicationData, _options.ApplicationDataFolder ?? DefaultApplicationDataFolder); + _localSettingsFile = _options.LocalSettingsFile ?? DefaultLocalSettingsFile; + } + catch (Exception ex) + { + TgDesktopUtils.FileLog(ex); + } } #endregion @@ -129,13 +128,59 @@ private async Task SaveAppLanguageInSettingsAsync(TgEnumLanguage appLanguage) private async Task SaveAppSessionInSettingsAsync(string appSession) => await SaveSettingAsync(SettingsKeyAppSession, appSession); + private void SetAppFolder() + { + try + { + AppFolder = ApplicationData.Current.LocalFolder.Path; + if (!Directory.Exists(AppFolder)) + AppFolder = AppDomain.CurrentDomain.BaseDirectory; + if (!Directory.Exists(AppFolder)) + AppFolder = Path.GetDirectoryName(Environment.ProcessPath) ?? string.Empty; + } + catch (Exception) + { + // + } + try + { + if (!Directory.Exists(AppFolder)) + AppFolder = AppDomain.CurrentDomain.BaseDirectory; + } + catch (Exception) + { + // + } + try + { + if (!Directory.Exists(AppFolder)) + AppFolder = Path.GetDirectoryName(Environment.ProcessPath) ?? string.Empty; + } + catch (Exception) + { + // + } + } + public void Default() { AppTheme = AppThemes.First(x => x == TgEnumTheme.Default); AppLanguage = AppLanguages.First(x => x == TgEnumLanguage.Default); - AppFolder = TgDesktopUtils.LocalFolder; - AppStorage = Path.Combine(TgDesktopUtils.LocalFolder, TgEfUtils.FileEfStorage); - AppSession = Path.Combine(TgDesktopUtils.LocalFolder, TgFileUtils.FileTgSession); + SetAppFolder(); + if (Directory.Exists(AppFolder)) + { + AppStorage = Directory.Exists(AppFolder) ? Path.Combine(AppFolder, TgEfUtils.FileEfStorage) : string.Empty; + IsExistsAppStorage = File.Exists(AppStorage); + AppSession = Directory.Exists(AppFolder) ? Path.Combine(AppFolder, TgFileUtils.FileTgSession) : string.Empty; + IsExistsAppSession = File.Exists(AppSession); + } + else + { + AppStorage = string.Empty; + IsExistsAppStorage = false; + AppSession = string.Empty; + IsExistsAppSession = false; + } } public async Task LoadAsync() @@ -145,11 +190,13 @@ public async Task LoadAsync() var appLanguage = await LoadAppLanguageFromSettingsAsync(); AppLanguage = AppLanguages.First(x => x == appLanguage); AppStorage = await LoadAppStorageFromSettingsAsync(); - if (!File.Exists(AppStorage)) - AppStorage = Path.Combine(TgDesktopUtils.LocalFolder, TgEfUtils.FileEfStorage); + //if (!File.Exists(AppStorage)) + // AppStorage = Directory.Exists(AppFolder) ? Path.Combine(AppFolder, TgEfUtils.FileEfStorage) : string.Empty; + IsExistsAppStorage = File.Exists(AppStorage); AppSession = await LoadAppSessionFromSettingsAsync(); - if (!File.Exists(AppSession)) - AppSession = Path.Combine(TgDesktopUtils.LocalFolder, TgFileUtils.FileTgSession); + //if (!File.Exists(AppSession)) + // AppSession = Directory.Exists(AppFolder) ? Path.Combine(AppFolder, TgFileUtils.FileTgSession) : string.Empty; + IsExistsAppSession = File.Exists(AppSession); } public async Task SaveAsync() @@ -171,35 +218,49 @@ private async Task InitializeAsync() public async Task ReadSettingAsync(string key) { - if (TgRuntimeHelper.IsMSIX) + try { - if (ApplicationData.Current.LocalSettings.Values.TryGetValue(key, out var obj)) + if (TgRuntimeHelper.IsMSIX) { - return await Json.ToObjectAsync((string)obj); + if (ApplicationData.Current.LocalSettings.Values.TryGetValue(key, out var obj)) + { + return await Json.ToObjectAsync((string)obj); + } } - } - else - { - await InitializeAsync(); - if (_settings != null && _settings.TryGetValue(key, out var obj)) + else { - return await Json.ToObjectAsync((string)obj); + await InitializeAsync(); + if (_settings != null && _settings.TryGetValue(key, out var obj)) + { + return await Json.ToObjectAsync((string)obj); + } } } + catch (Exception) + { + // + } return default; } public async Task SaveSettingAsync(string key, T value) { - if (TgRuntimeHelper.IsMSIX) + try { - ApplicationData.Current.LocalSettings.Values[key] = await Json.StringifyAsync(value); + if (TgRuntimeHelper.IsMSIX) + { + ApplicationData.Current.LocalSettings.Values[key] = await Json.StringifyAsync(value); + } + else + { + await InitializeAsync(); + _settings[key] = await Json.StringifyAsync(value); + await Task.Run(() => _fileService.Save(_applicationDataFolder, _localSettingsFile, _settings)); + } } - else + catch (Exception) { - await InitializeAsync(); - _settings[key] = await Json.StringifyAsync(value); - await Task.Run(() => _fileService.Save(_applicationDataFolder, _localSettingsFile, _settings)); + // } } diff --git a/Clients/TgDownloaderDesktop/Services/WebViewService.cs b/Presentation/TgDownloaderDesktop/Services/WebViewService.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Services/WebViewService.cs rename to Presentation/TgDownloaderDesktop/Services/WebViewService.cs diff --git a/Clients/TgDownloaderDesktop/Strings/en-us/Resources.resw b/Presentation/TgDownloaderDesktop/Strings/en-us/Resources.resw similarity index 98% rename from Clients/TgDownloaderDesktop/Strings/en-us/Resources.resw rename to Presentation/TgDownloaderDesktop/Strings/en-us/Resources.resw index ef0c780b..c966bfbe 100644 --- a/Clients/TgDownloaderDesktop/Strings/en-us/Resources.resw +++ b/Presentation/TgDownloaderDesktop/Strings/en-us/Resources.resw @@ -269,7 +269,7 @@ "https://github.com/DamianMorozov/TgDownloader/blob/main/Docs/RELEASE.md" - TgDownloader-Console Docker image + TgDownloaderConsole Docker image "https://hub.docker.com/repository/docker/damianmorozov/tgdownloader-console" @@ -348,8 +348,8 @@ GitHub community - - Official website + + Official websites Official website (global version) @@ -610,7 +610,9 @@ Product assignment - Organized downloading of files from TG channels/groups/chats (accessed under your account). Files from each source can be downloaded to a separate directory. You can specify which sources to include in auto-downloading. There is a multithreaded download mode. Console version is almost completed (production). The desktop version is in active development stage (preview). + Upgrade your Telegram. Download and distribute files from chats to your catalogs. +Console version is almost complete (production). +The desktop version is in active development stage (preview). Edit diff --git a/Clients/TgDownloaderDesktop/Strings/ru-RU/Resources.resw b/Presentation/TgDownloaderDesktop/Strings/ru-RU/Resources.resw similarity index 97% rename from Clients/TgDownloaderDesktop/Strings/ru-RU/Resources.resw rename to Presentation/TgDownloaderDesktop/Strings/ru-RU/Resources.resw index 20e778e9..bd7c6fc5 100644 --- a/Clients/TgDownloaderDesktop/Strings/ru-RU/Resources.resw +++ b/Presentation/TgDownloaderDesktop/Strings/ru-RU/Resources.resw @@ -328,7 +328,7 @@ "https://github.com/DamianMorozov/TgDownloader/blob/main/Docs/RELEASE.md" - TgDownloader-Console Докер образ + TgDownloaderConsole Докер образ "https://hub.docker.com/repository/docker/damianmorozov/tgdownloader-console" @@ -407,8 +407,8 @@ ГитХаб сообщество - - Официальный вебсайт + + Официальные вебсайты Официальный вебсайт (глобальная версия) @@ -672,7 +672,9 @@ Назначение продукта - Упорядоченное скачивание файлов из ТГ каналов/групп/чатов (к которым есть доступ под своим аккаунтом). Файлы из каждого источника можно скачивать в отдельный каталог. Можно указать какие источники включить в авто-скачивание. Есть многопоточный режим скачивания. Консольная версия практически завершена (продакшн). Десктоп версии находится в активной стадии разработки (превью). + Прокачай свой Телеграм. Скачивай и раскладывай файлы из чатов по своим каталогам. +Консольная версия практически завершена (продакшн). +Десктоп версии находится в активной стадии разработки (превью). Править diff --git a/Clients/TgDownloaderDesktop/Styles/FontSizes.xaml b/Presentation/TgDownloaderDesktop/Styles/FontSizes.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Styles/FontSizes.xaml rename to Presentation/TgDownloaderDesktop/Styles/FontSizes.xaml diff --git a/Clients/TgDownloaderDesktop/Styles/TextBlock.xaml b/Presentation/TgDownloaderDesktop/Styles/TextBlock.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Styles/TextBlock.xaml rename to Presentation/TgDownloaderDesktop/Styles/TextBlock.xaml diff --git a/Clients/TgDownloaderDesktop/Styles/Thickness.xaml b/Presentation/TgDownloaderDesktop/Styles/Thickness.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Styles/Thickness.xaml rename to Presentation/TgDownloaderDesktop/Styles/Thickness.xaml diff --git a/Clients/TgDownloaderDesktop/TemplateStudio.xml b/Presentation/TgDownloaderDesktop/TemplateStudio.xml similarity index 100% rename from Clients/TgDownloaderDesktop/TemplateStudio.xml rename to Presentation/TgDownloaderDesktop/TemplateStudio.xml diff --git a/Clients/TgDownloaderDesktop/TgDownloaderDesktop.csproj b/Presentation/TgDownloaderDesktop/TgDownloaderDesktop.csproj similarity index 91% rename from Clients/TgDownloaderDesktop/TgDownloaderDesktop.csproj rename to Presentation/TgDownloaderDesktop/TgDownloaderDesktop.csproj index 3391cae5..ca35df88 100644 --- a/Clients/TgDownloaderDesktop/TgDownloaderDesktop.csproj +++ b/Presentation/TgDownloaderDesktop/TgDownloaderDesktop.csproj @@ -1,7 +1,7 @@  WinExe - net8.0-windows10.0.19041.0 + net9.0-windows10.0.19041.0 10.0.17763.0 TgDownloaderDesktop Assets/applicationIcon.ico @@ -14,7 +14,7 @@ true true true - 0.5.410.0 + 0.5.440.0 10.0.19041.0 True True @@ -38,12 +38,12 @@ - - + + - - + + @@ -127,6 +127,10 @@ PreserveNewest + + + + PreserveNewest diff --git a/Clients/TgDownloaderDesktop/Usings.cs b/Presentation/TgDownloaderDesktop/Usings.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Usings.cs rename to Presentation/TgDownloaderDesktop/Usings.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/ContentGridDetailViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/ContentGridDetailViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/ContentGridDetailViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/ContentGridDetailViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/ContentGridViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/ContentGridViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/ContentGridViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/ContentGridViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/DataGridViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/DataGridViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/DataGridViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/DataGridViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/ListDetailsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/ListDetailsViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/ListDetailsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/ListDetailsViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/ShellViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/ShellViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/ShellViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/ShellViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs similarity index 97% rename from Clients/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs index c9bfcd3a..8aab03aa 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgBotDetailsViewModel.cs @@ -34,8 +34,6 @@ // public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => // { -// TgEfUtils.AppStorage = SettingsService.AppStorage; -// TgEfUtils.RecreateEfContext(); // Uid = e.Parameter is Guid uid ? uid : Guid.Empty; // await LoadDataStorageCoreAsync(); // await ReloadUiAsync(); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs similarity index 98% rename from Clients/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs index f3be53ad..c274106a 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgBotsViewModel.cs @@ -41,8 +41,6 @@ // public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => // { -// TgEfUtils.AppStorage = SettingsService.AppStorage; -// TgEfUtils.RecreateEfContext(); // await LoadDataStorageCoreAsync(); // await ReloadUiAsync(); // }); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs similarity index 98% rename from Clients/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs index f74fdd0f..7eab1e2b 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgChatDetailsViewModel.cs @@ -42,8 +42,6 @@ public TgChatDetailsViewModel(ITgSettingsService settingsService, INavigationSer public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); Uid = e.Parameter is Guid uid ? uid : Guid.Empty; await LoadDataStorageCoreAsync(); await ReloadUiAsync(); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs similarity index 98% rename from Clients/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs index d7b4c3ff..0a3235ca 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgChatsViewModel.cs @@ -44,8 +44,6 @@ public TgChatsViewModel(ITgSettingsService settingsService, INavigationService n public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); await LoadDataStorageCoreAsync(); await ReloadUiAsync(); }); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs similarity index 98% rename from Clients/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs index 1e2ec906..f2f75450 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgConnectViewModel.cs @@ -165,7 +165,11 @@ private async Task AfterClientConnectAsync() : DataRequest + Environment.NewLine + $"{what}: {(string.IsNullOrEmpty(response) ? DataRequestEmptyResponse : response)}"; } +#if DEBUG catch (Exception ex) +#else + catch (Exception) +#endif { #if DEBUG Debug.WriteLine(ex); @@ -185,7 +189,7 @@ private async Task ClientConnectCoreAsync(bool isRetry) if (!IsBot) await TgDesktopUtils.TgClient.ConnectSessionDesktopAsync(ProxyVm?.Dto.GetEntity(), ConfigClientDesktop); else - await TgDesktopUtils.TgClient.ConnectBotDesktopAsync(BotToken, ApiId, ApiHash, TgDesktopUtils.LocalFolder); + await TgDesktopUtils.TgClient.ConnectBotDesktopAsync(BotToken, ApiId, ApiHash, ApplicationData.Current.LocalFolder.Path); } catch (Exception ex) { @@ -206,9 +210,6 @@ private async Task ClientConnectCoreAsync(bool isRetry) private async Task AppLoadCoreAsync() { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); - var storageResult = await AppRepository.GetFirstAsync(isReadOnly: false); App = storageResult.IsExists ? storageResult.Item : new(); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs similarity index 96% rename from Clients/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs index 237e8dc1..9038c689 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgContactDetailsViewModel.cs @@ -31,8 +31,6 @@ public TgContactDetailsViewModel(ITgSettingsService settingsService, INavigation public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); Uid = e.Parameter is Guid uid ? uid : Guid.Empty; await LoadDataStorageCoreAsync(); await ReloadUiAsync(); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs similarity index 97% rename from Clients/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs index be86a7c8..83153d06 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgContactsViewModel.cs @@ -31,8 +31,6 @@ public TgContactsViewModel(ITgSettingsService settingsService, INavigationServic public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); await LoadDataStorageCoreAsync(); await ReloadUiAsync(); }); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs similarity index 96% rename from Clients/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs index a14c8527..60a5a6a0 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgFiltersViewModel.cs @@ -29,8 +29,6 @@ public TgFiltersViewModel(ITgSettingsService settingsService, INavigationService public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); await LoadDataStorageCoreAsync(); await ReloadUiAsync(); }); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgLoadDataViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgLoadDataViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/TgLoadDataViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgLoadDataViewModel.cs diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs similarity index 68% rename from Clients/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs index bed7ef7e..dc40b9f8 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgMainViewModel.cs @@ -38,8 +38,6 @@ public partial class TgMainViewModel : TgPageViewModelBase public partial string DonateCatizen { get; set; } = "UQBkjSs3XPmraI_sS4Mf05SMd1y44DahNhwPg9ySp3V-M3N6"; [ObservableProperty] public partial string DonateMajor { get; set; } = "UQBkjSs3XPmraI_sS4Mf05SMd1y44DahNhwPg9ySp3V-M3N6"; - [ObservableProperty] - public partial string UpdateLog { get; set; } = string.Empty; public TgMainViewModel(ITgSettingsService settingsService, INavigationService navigationService) : base(settingsService, navigationService) { @@ -58,8 +56,6 @@ public TgMainViewModel(ITgSettingsService settingsService, INavigationService na public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - // Velopack installer update - await VelopackUpdateAsync(); await ReloadUiAsync(); }); @@ -78,43 +74,5 @@ private static string GetVersionDescription() return $"{"AppDisplayName".GetLocalized()} - {version.Major}.{version.Minor}.{version.Build}.{version.Revision}"; } - /// Velopack installer update - private async Task VelopackUpdateAsync() - { - UpdateLog = string.Empty; - UpdateLog += $"{TgConstants.AppTitleDesktop} {TgAppSettingsHelper.Instance.AppVersion} started" + Environment.NewLine; - - UpdateLog += $"Checking updates on the link {TgConstants.LinkGitHub}..." + Environment.NewLine; - var mgr = new UpdateManager(new GithubSource(TgConstants.LinkGitHub, string.Empty, prerelease: false)); - // Check for new version - try - { - var newVersion = await mgr.CheckForUpdatesAsync(); - if (newVersion is null) - { - UpdateLog += "No update available" + Environment.NewLine; - return; - } - // Download new version - UpdateLog += "Download new version..." + Environment.NewLine; - await mgr.DownloadUpdatesAsync(newVersion); - //// Install new version and restart app - //var prompt = AnsiConsole.Prompt( - // new SelectionPrompt() - // .Title("Install new version and restart app?") - // .PageSize(Console.WindowHeight - 5) - // .MoreChoicesText(TgLocale.MoveUpDown) - // .AddChoices(TgLocale.MenuNo, TgLocale.MenuYes)); - //var isInstall = prompt.Equals(TgLocale.MenuYes); - //if (isInstall) - // mgr.ApplyUpdatesAndRestart(newVersion); - } - // Cannot perform this operation in an application which is not installed - catch (Exception ex) - { - UpdateLog += ex.Message + Environment.NewLine; - } - } - #endregion } diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs similarity index 96% rename from Clients/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs index 4a9baa37..ecd500ba 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgProxiesViewModel.cs @@ -31,8 +31,6 @@ public TgProxiesViewModel(ITgSettingsService settingsService, INavigationService public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); await LoadDataStorageCoreAsync(); await ReloadUiAsync(); }); diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs similarity index 81% rename from Clients/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs index fc986077..7c7ff436 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgSettingsViewModel.cs @@ -8,11 +8,13 @@ public partial class TgSettingsViewModel : TgPageViewModelBase { #region Public and private fields, properties, constructor + public IRelayCommand SettingsLoadCommand { get; } public IRelayCommand SettingsDefaultCommand { get; } public IRelayCommand SettingsSaveCommand { get; } public TgSettingsViewModel(ITgSettingsService settingsService, INavigationService navigationService) : base(settingsService, navigationService) { + SettingsLoadCommand = new AsyncRelayCommand(SettingsLoadAsync); SettingsDefaultCommand = new AsyncRelayCommand(SettingsDefaultAsync); SettingsSaveCommand = new AsyncRelayCommand(SettingsSaveAsync); } @@ -23,12 +25,19 @@ public TgSettingsViewModel(ITgSettingsService settingsService, INavigationServic public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await SettingsService.LoadAsync(); + private async Task SettingsLoadAsync() => await ContentDialogAsync(SettingsLoadCoreAsync, TgResourceExtensions.AskSettingsLoad()); + + private async Task SettingsLoadCoreAsync() + { + await SettingsService.LoadAsync(); + } + private async Task SettingsDefaultAsync() => await ContentDialogAsync(SettingsDefaultCoreAsync, TgResourceExtensions.AskSettingsDefault()); private async Task SettingsDefaultCoreAsync() { SettingsService.Default(); - await SettingsSaveCoreAsync(); + await Task.CompletedTask; } private async Task SettingsSaveAsync() diff --git a/Clients/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs similarity index 96% rename from Clients/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs index 9b3af3eb..43a70aeb 100644 --- a/Clients/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgStoriesViewModel.cs @@ -31,8 +31,6 @@ public TgStoriesViewModel(ITgSettingsService settingsService, INavigationService public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => { - TgEfUtils.AppStorage = SettingsService.AppStorage; - TgEfUtils.RecreateEfContext(); await LoadDataStorageCoreAsync(); await ReloadUiAsync(); }); diff --git a/Presentation/TgDownloaderDesktop/ViewModels/TgUpdateViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/TgUpdateViewModel.cs new file mode 100644 index 00000000..e7e5d3ce --- /dev/null +++ b/Presentation/TgDownloaderDesktop/ViewModels/TgUpdateViewModel.cs @@ -0,0 +1,72 @@ +// This is an independent project of an individual developer. Dear PVS-Studio, please check it. +// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com + +namespace TgDownloaderDesktop.ViewModels; + +[DebuggerDisplay("{ToDebugString()}")] +public partial class TgUpdateViewModel : TgPageViewModelBase +{ + #region Public and private fields, properties, constructor + + [ObservableProperty] + public partial string UpdateLog { get; set; } = string.Empty; + public IRelayCommand UpdateCommand { get; } + + public TgUpdateViewModel(ITgSettingsService settingsService, INavigationService navigationService) : base(settingsService, navigationService) + { + // Commands + UpdateCommand = new AsyncRelayCommand(UpdateAsync); + } + + #endregion + + #region Public and private methods + + public override async Task OnNavigatedToAsync(NavigationEventArgs e) => await LoadDataAsync(async () => + { + await ReloadUiAsync(); + }); + + private async Task UpdateAsync() => await ContentDialogAsync(VelopackUpdateAsync, TgResourceExtensions.AskUpdateApp()); + + /// Velopack installer update + private async Task VelopackUpdateAsync() + { + UpdateLog = string.Empty; + var log = new StringBuilder(); + try + { + log.AppendLine($"{TgConstants.AppTitleDesktop} {TgAppSettingsHelper.Instance.AppVersion} started"); + log.AppendLine($"Checking updates on the link github.com..."); + var mgr = new UpdateManager(new GithubSource(TgConstants.LinkGitHub, string.Empty, prerelease: false)); + // Check for new version + var newVersion = await mgr.CheckForUpdatesAsync(); + if (newVersion is null) + { + log.AppendLine("You are using the latest version of the software"); + return; + } + // Download new version + log.AppendLine("Download new version..."); + await mgr.DownloadUpdatesAsync(newVersion); + //// Install new version and restart app + //var prompt = AnsiConsole.Prompt( + // new SelectionPrompt() + // .Title("Install new version and restart app?") + // .PageSize(Console.WindowHeight - 5) + // .MoreChoicesText(TgLocale.MoveUpDown) + // .AddChoices(TgLocale.MenuNo, TgLocale.MenuYes)); + //var isInstall = prompt.Equals(TgLocale.MenuYes); + //if (isInstall) + // mgr.ApplyUpdatesAndRestart(newVersion); + } + // Cannot perform this operation in an application which is not installed + catch (Exception ex) + { + log.AppendLine(ex.Message); + } + UpdateLog = log.ToString(); + } + + #endregion +} diff --git a/Clients/TgDownloaderDesktop/ViewModels/WebViewViewModel.cs b/Presentation/TgDownloaderDesktop/ViewModels/WebViewViewModel.cs similarity index 100% rename from Clients/TgDownloaderDesktop/ViewModels/WebViewViewModel.cs rename to Presentation/TgDownloaderDesktop/ViewModels/WebViewViewModel.cs diff --git a/Clients/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml b/Presentation/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml rename to Presentation/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/ContentGridDetailPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/ContentGridPage.xaml b/Presentation/TgDownloaderDesktop/Views/ContentGridPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ContentGridPage.xaml rename to Presentation/TgDownloaderDesktop/Views/ContentGridPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/ContentGridPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/ContentGridPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ContentGridPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/ContentGridPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/DataGridPage.xaml b/Presentation/TgDownloaderDesktop/Views/DataGridPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/DataGridPage.xaml rename to Presentation/TgDownloaderDesktop/Views/DataGridPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/DataGridPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/DataGridPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/DataGridPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/DataGridPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml b/Presentation/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml rename to Presentation/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml diff --git a/Clients/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml.cs b/Presentation/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/ListDetailsDetailControl.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/ListDetailsPage.xaml b/Presentation/TgDownloaderDesktop/Views/ListDetailsPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ListDetailsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/ListDetailsPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/ListDetailsPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/ListDetailsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ListDetailsPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/ListDetailsPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/ShellPage.xaml b/Presentation/TgDownloaderDesktop/Views/ShellPage.xaml similarity index 93% rename from Clients/TgDownloaderDesktop/Views/ShellPage.xaml rename to Presentation/TgDownloaderDesktop/Views/ShellPage.xaml index 35c71351..68ff868e 100644 --- a/Clients/TgDownloaderDesktop/Views/ShellPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/ShellPage.xaml @@ -80,6 +80,12 @@ + + + + + + diff --git a/Clients/TgDownloaderDesktop/Views/ShellPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/ShellPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/ShellPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/ShellPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgChatDetailsPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgChatsPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgChatsPage.xaml similarity index 99% rename from Clients/TgDownloaderDesktop/Views/TgChatsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgChatsPage.xaml index 90771413..fe7acbd8 100644 --- a/Clients/TgDownloaderDesktop/Views/TgChatsPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/TgChatsPage.xaml @@ -239,7 +239,7 @@ - - + --> + @@ -315,7 +316,8 @@ Grid.Row="3" Margin="2,7,2,2" FontWeight="Bold" - TextAlignment="Left" /> + TextAlignment="Left" + Visibility="{x:Bind ViewModel.LicenseManager.CurrentLicense.LicenseType, Converter={StaticResource LicenseTypeToVisibilityConverter}, Mode=OneWay}" /> + IsOn="{x:Bind ViewModel.IsBot, Mode=TwoWay}" + Visibility="{x:Bind ViewModel.LicenseManager.CurrentLicense.LicenseType, Converter={StaticResource LicenseTypeToVisibilityConverter}, Mode=OneWay}" /> + TextAlignment="Left" + Visibility="{x:Bind ViewModel.LicenseManager.CurrentLicense.LicenseType, Converter={StaticResource LicenseTypeToVisibilityConverter}, Mode=OneWay}" /> + TextChanged="{x:Bind OnApiHashTextChanged, Mode=OneWay}" + Visibility="{x:Bind ViewModel.LicenseManager.CurrentLicense.LicenseType, Converter={StaticResource LicenseTypeToVisibilityConverter}, Mode=OneWay}" /> diff --git a/Clients/TgDownloaderDesktop/Views/TgConnectPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgConnectPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgConnectPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgConnectPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgContactDetailsPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgContactsPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgContactsPage.xaml similarity index 98% rename from Clients/TgDownloaderDesktop/Views/TgContactsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgContactsPage.xaml index 11d422c3..e3b87b77 100644 --- a/Clients/TgDownloaderDesktop/Views/TgContactsPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/TgContactsPage.xaml @@ -154,7 +154,7 @@ - - + --> + Text="{Binding PhoneNumber, Mode=OneWay}" /> diff --git a/Clients/TgDownloaderDesktop/Views/TgContactsPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgContactsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgContactsPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgContactsPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgFiltersPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgFiltersPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgFiltersPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgFiltersPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/TgFiltersPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgFiltersPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgFiltersPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgFiltersPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgLoadDataPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgLoadDataPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgLoadDataPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgLoadDataPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/TgLoadDataPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgLoadDataPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgLoadDataPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgLoadDataPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgMainPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgMainPage.xaml similarity index 91% rename from Clients/TgDownloaderDesktop/Views/TgMainPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgMainPage.xaml index 179b3839..87bee71c 100644 --- a/Clients/TgDownloaderDesktop/Views/TgMainPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/TgMainPage.xaml @@ -44,30 +44,36 @@ - - @@ -83,14 +89,18 @@ - + @@ -133,10 +153,14 @@ @@ -152,6 +176,8 @@ @@ -164,13 +190,11 @@ HorizontalContentAlignment="Stretch" IsExpanded="False"> - @@ -443,29 +467,20 @@ HorizontalContentAlignment="Stretch" IsExpanded="True"> - - - - - - + Style="{ThemeResource SubtitleTextBlockStyle}" + Text="{x:Bind ViewModel.LicenseDescription, Mode=OneWay}" /> + diff --git a/Clients/TgDownloaderDesktop/Views/TgMainPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgMainPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgMainPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgMainPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgProxiesPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgProxiesPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgProxiesPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgProxiesPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/TgProxiesPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgProxiesPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgProxiesPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgProxiesPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgSettingsPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgSettingsPage.xaml similarity index 76% rename from Clients/TgDownloaderDesktop/Views/TgSettingsPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgSettingsPage.xaml index 327e7942..68f7b605 100644 --- a/Clients/TgDownloaderDesktop/Views/TgSettingsPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/TgSettingsPage.xaml @@ -27,15 +27,31 @@ + + + + + diff --git a/Clients/TgDownloaderDesktop/Views/TgSettingsPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgSettingsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/TgSettingsPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/TgSettingsPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/Views/TgStoriesPage.xaml b/Presentation/TgDownloaderDesktop/Views/TgStoriesPage.xaml similarity index 98% rename from Clients/TgDownloaderDesktop/Views/TgStoriesPage.xaml rename to Presentation/TgDownloaderDesktop/Views/TgStoriesPage.xaml index 5f1ea526..fd302e8a 100644 --- a/Clients/TgDownloaderDesktop/Views/TgStoriesPage.xaml +++ b/Presentation/TgDownloaderDesktop/Views/TgStoriesPage.xaml @@ -168,7 +168,7 @@ - - + --> + + + + + + + + + + + + + + + + + + + + + + diff --git a/Presentation/TgDownloaderDesktop/Views/TgUpdatePage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/TgUpdatePage.xaml.cs new file mode 100644 index 00000000..be228907 --- /dev/null +++ b/Presentation/TgDownloaderDesktop/Views/TgUpdatePage.xaml.cs @@ -0,0 +1,32 @@ +// This is an independent project of an individual developer. Dear PVS-Studio, please check it. +// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com + +namespace TgDownloaderDesktop.Views; + +public sealed partial class TgUpdatePage : Page +{ + #region Public and private fields, properties, constructor + + public TgUpdateViewModel ViewModel { get; } + + public TgUpdatePage() + { + ViewModel = App.GetService(); + InitializeComponent(); + Loaded += PageLoaded; + } + + #endregion + + #region Public and private methods + + protected override async void OnNavigatedTo(NavigationEventArgs e) + { + base.OnNavigatedTo(e); + await ViewModel.OnNavigatedToAsync(e); + } + + private void PageLoaded(object sender, RoutedEventArgs e) => ViewModel.OnLoaded(XamlRoot); + + #endregion +} diff --git a/Clients/TgDownloaderDesktop/Views/WebViewPage.xaml b/Presentation/TgDownloaderDesktop/Views/WebViewPage.xaml similarity index 100% rename from Clients/TgDownloaderDesktop/Views/WebViewPage.xaml rename to Presentation/TgDownloaderDesktop/Views/WebViewPage.xaml diff --git a/Clients/TgDownloaderDesktop/Views/WebViewPage.xaml.cs b/Presentation/TgDownloaderDesktop/Views/WebViewPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderDesktop/Views/WebViewPage.xaml.cs rename to Presentation/TgDownloaderDesktop/Views/WebViewPage.xaml.cs diff --git a/Clients/TgDownloaderDesktop/app.manifest b/Presentation/TgDownloaderDesktop/app.manifest similarity index 100% rename from Clients/TgDownloaderDesktop/app.manifest rename to Presentation/TgDownloaderDesktop/app.manifest diff --git a/Clients/TgDownloaderDesktop/appsettings.json b/Presentation/TgDownloaderDesktop/appsettings.json similarity index 100% rename from Clients/TgDownloaderDesktop/appsettings.json rename to Presentation/TgDownloaderDesktop/appsettings.json diff --git a/Clients/TgDownloaderWinDesktopWPF/App.xaml b/Presentation/TgDownloaderWinDesktopWPF/App.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/App.xaml rename to Presentation/TgDownloaderWinDesktopWPF/App.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/App.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/App.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/App.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/App.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/AssemblyInfo.cs b/Presentation/TgDownloaderWinDesktopWPF/AssemblyInfo.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/AssemblyInfo.cs rename to Presentation/TgDownloaderWinDesktopWPF/AssemblyInfo.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-1024.png b/Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-1024.png similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-1024.png rename to Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-1024.png diff --git a/Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-191.png b/Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-191.png similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-191.png rename to Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-191.png diff --git a/Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-256.png b/Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-256.png similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Assets/applicationIcon-256.png rename to Presentation/TgDownloaderWinDesktopWPF/Assets/applicationIcon-256.png diff --git a/Clients/TgDownloaderWinDesktopWPF/Common/TgPageViewBase.cs b/Presentation/TgDownloaderWinDesktopWPF/Common/TgPageViewBase.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Common/TgPageViewBase.cs rename to Presentation/TgDownloaderWinDesktopWPF/Common/TgPageViewBase.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Common/TgPageViewModelBase.cs b/Presentation/TgDownloaderWinDesktopWPF/Common/TgPageViewModelBase.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Common/TgPageViewModelBase.cs rename to Presentation/TgDownloaderWinDesktopWPF/Common/TgPageViewModelBase.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/EnumToBooleanConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/EnumToBooleanConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/EnumToBooleanConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/EnumToBooleanConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/EnumToStringConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/EnumToStringConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/EnumToStringConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/EnumToStringConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/ExistsToValueConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/ExistsToValueConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/ExistsToValueConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/ExistsToValueConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/NullValueConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/NullValueConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/NullValueConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/NullValueConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/ProxyModelToViewModelConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/ProxyModelToViewModelConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/ProxyModelToViewModelConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/ProxyModelToViewModelConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/TgXamlHelper.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/TgXamlHelper.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/TgXamlHelper.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/TgXamlHelper.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Helpers/VisibilityToBooleanConverter.cs b/Presentation/TgDownloaderWinDesktopWPF/Helpers/VisibilityToBooleanConverter.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Helpers/VisibilityToBooleanConverter.cs rename to Presentation/TgDownloaderWinDesktopWPF/Helpers/VisibilityToBooleanConverter.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Models/AppConfig.cs b/Presentation/TgDownloaderWinDesktopWPF/Models/AppConfig.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Models/AppConfig.cs rename to Presentation/TgDownloaderWinDesktopWPF/Models/AppConfig.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Services/ApplicationHostService.cs b/Presentation/TgDownloaderWinDesktopWPF/Services/ApplicationHostService.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Services/ApplicationHostService.cs rename to Presentation/TgDownloaderWinDesktopWPF/Services/ApplicationHostService.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Services/PageService.cs b/Presentation/TgDownloaderWinDesktopWPF/Services/PageService.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Services/PageService.cs rename to Presentation/TgDownloaderWinDesktopWPF/Services/PageService.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj b/Presentation/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj similarity index 94% rename from Clients/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj rename to Presentation/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj index 701e85a7..1821a30d 100644 --- a/Clients/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj +++ b/Presentation/TgDownloaderWinDesktopWPF/TgDownloaderWinDesktopWPF.csproj @@ -1,13 +1,13 @@  WinExe - net8.0-windows10.0.19041.0 + net9.0-windows10.0.19041.0 enable true app.manifest applicationIcon.ico AnyCPU;x64;x86 - 0.5.410.0 + 0.5.440.0 none @@ -24,9 +24,9 @@ - + - + diff --git a/Clients/TgDownloaderWinDesktopWPF/Using.cs b/Presentation/TgDownloaderWinDesktopWPF/Using.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Using.cs rename to Presentation/TgDownloaderWinDesktopWPF/Using.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Utils/TgDesktopUtils.cs b/Presentation/TgDownloaderWinDesktopWPF/Utils/TgDesktopUtils.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Utils/TgDesktopUtils.cs rename to Presentation/TgDownloaderWinDesktopWPF/Utils/TgDesktopUtils.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Utils/TgDispatcherExtensions.cs b/Presentation/TgDownloaderWinDesktopWPF/Utils/TgDispatcherExtensions.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Utils/TgDispatcherExtensions.cs rename to Presentation/TgDownloaderWinDesktopWPF/Utils/TgDispatcherExtensions.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgClientViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgClientViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgClientViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgClientViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgDashboardViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgDashboardViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgDashboardViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgDashboardViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgDownloadsViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgDownloadsViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgDownloadsViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgDownloadsViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgEfDownloadViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgEfDownloadViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgEfDownloadViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgEfDownloadViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgFiltersViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgFiltersViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgFiltersViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgFiltersViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgItemProxyViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgItemProxyViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgItemProxyViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgItemProxyViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgItemSourceViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgItemSourceViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgItemSourceViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgItemSourceViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgMainWindowViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgMainWindowViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgMainWindowViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgMainWindowViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgProxiesViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgProxiesViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgProxiesViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgProxiesViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgSettingsViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgSettingsViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgSettingsViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgSettingsViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/ViewModels/TgSourcesViewModel.cs b/Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgSourcesViewModel.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/ViewModels/TgSourcesViewModel.cs rename to Presentation/TgDownloaderWinDesktopWPF/ViewModels/TgSourcesViewModel.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgClientStateUserControl.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Controls/TgExceptionsUserControl.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/MainWindow.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgClientPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDashboardPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgDownloadsPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgFiltersPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemProxyPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgItemSourcePage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgProxiesPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSettingsPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml diff --git a/Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml.cs b/Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml.cs similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml.cs rename to Presentation/TgDownloaderWinDesktopWPF/Views/Pages/TgSourcesPage.xaml.cs diff --git a/Clients/TgDownloaderWinDesktopWPF/app.manifest b/Presentation/TgDownloaderWinDesktopWPF/app.manifest similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/app.manifest rename to Presentation/TgDownloaderWinDesktopWPF/app.manifest diff --git a/Clients/TgDownloaderWinDesktopWPF/applicationIcon.ico b/Presentation/TgDownloaderWinDesktopWPF/applicationIcon.ico similarity index 100% rename from Clients/TgDownloaderWinDesktopWPF/applicationIcon.ico rename to Presentation/TgDownloaderWinDesktopWPF/applicationIcon.ico diff --git a/README-RUS.md b/README-RUS.md index 72da50e8..cb7a09fb 100644 --- a/README-RUS.md +++ b/README-RUS.md @@ -1,34 +1,34 @@ # TgDownloader - Загрузчик файлов Telegram -## -## +## Глобальная версия +### +### +### +## Русская версия +### +### +### + +## Статистика о проекте ![GitHub releases](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/total?style=social) ![GitHub issues](https://img.shields.io/github/issues/DamianMorozov/TgDownloader?style=social) ![GitHub license](https://img.shields.io/github/license/DamianMorozov/TgDownloader?style=social) ## Назначение продукта -Упорядоченное скачивание файлов из ТГ каналов/групп/чатов (к которым есть доступ под своим аккаунтом). Файлы из каждого источника можно скачивать в отдельный каталог. Можно указать какие источники включить в авто-скачивание. Есть многопоточный режим скачивания. Консольная версия практически завершена (продакшн). Десктоп версии находится в активной стадии разработки (превью). - -## Официальный вебсайт (глобальная версия) - -### Глобальная версия -- [tgdownloader.online](http://tgdownloader.online) -- [tg-downloader.online](http://tg-downloader.online) - -### Русская версия -- [tgdownloader.ru](http://tgdownloader.ru) -- [tg-downloader.ru](http://tg-downloader.ru) +Прокачай свой Телеграм. Скачивай и раскладывай файлы из чатов по своим каталогам. +Консольная версия практически завершена (продакшн). +Десктоп версии находится в активной стадии разработки (превью). ## Скачать - [Релизы](https://github.com/DamianMorozov/TgDownloader/releases) ## ГитХаб сообщество - [TgDownloader репозиторий](https://github.com/DamianMorozov/TgDownloader) -- [Шаблон проблемы](https://github.com/DamianMorozov/TgDownloader/blob/main/Docs/ISSUE.md) - [Сообщить об ошибке](https://github.com/DamianMorozov/TgDownloader/issues) - [Обсуждения](https://github.com/DamianMorozov/TgDownloader/discussions) - [Идеи](https://github.com/DamianMorozov/TgDownloader/discussions/categories/ideas) +- [Шаблон проблемы](Docs/ISSUE-RUS.md) ## Поддержка пользователей - [Новости](https://t.me/TgDownloader) @@ -38,7 +38,7 @@ - [TgDownloader-Console Докер образ](https://hub.docker.com/repository/docker/damianmorozov/tgdownloader-console) ## Требования к установке -- [Скачать .NET 8.0](https://dotnet.microsoft.com/ru-ru/download/dotnet/8.0) +- [Скачать .NET 9.0](https://dotnet.microsoft.com/ru-ru/download/dotnet/9.0) - [Зарегистрируйте Telegram приложение](https://my.telegram.org/apps) - Сохраните значения полей "App api_id" и "App api_hash" diff --git a/README.md b/README.md index f6773eea..c237c062 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,34 @@ # TgDownloader - Telegram Files Downloader -## -## +## Global version +### +### +### +## Russian version +### +## +## + +## Statistics about the project ![GitHub releases](https://img.shields.io/github/downloads/DamianMorozov/TgDownloader/total?style=social) ![GitHub issues](https://img.shields.io/github/issues/DamianMorozov/TgDownloader?style=social) ![GitHub license](https://img.shields.io/github/license/DamianMorozov/TgDownloader?style=social) ## Product assignment -Organized downloading of files from TG channels/groups/chats (accessed under your account). Files from each source can be downloaded to a separate directory. You can specify which sources to include in auto-downloading. There is a multithreaded download mode. Console version is almost completed (production). The desktop version is in active development stage (preview). - -## Official website - -### Global version -- [tgdownloader.online](http://tgdownloader.online) -- [tg-downloader.online](http://tg-downloader.online) - -### Russian version -- [tgdownloader.ru](http://tgdownloader.ru) -- [tg-downloader.ru](http://tg-downloader.ru) +Upgrade your Telegram. Download and distribute files from chats to your catalogs. +Console version is almost complete (production). +The desktop version is in active development stage (preview). ## Download - [Releases](https://github.com/DamianMorozov/TgDownloader/releases) ## GitHub community - [TgDownloader repository](https://github.com/DamianMorozov/TgDownloader) -- [Issue template](https://github.com/DamianMorozov/TgDownloader/blob/main/Docs/ISSUE.md) - [Report a bug](https://github.com/DamianMorozov/TgDownloader/issues) - [Discussions](https://github.com/DamianMorozov/TgDownloader/discussions) - [Ideas](https://github.com/DamianMorozov/TgDownloader/discussions/categories/ideas) +- [Issue template](Docs/ISSUE.md) ## User support - [News](https://t.me/TgDownloader) @@ -38,7 +38,7 @@ Organized downloading of files from TG channels/groups/chats (accessed under you - [TgDownloader-Console Docker image](https://hub.docker.com/repository/docker/damianmorozov/tgdownloader-console) ## Install Requirements -- [Download .NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) +- [Download .NET 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0) - [Register Telegram app](https://my.telegram.org/apps) - Save the values of the "App api_id" and "App api_hash" fields diff --git a/Tests/TgAssertCoreTests/TgAssertCoreTests.csproj b/Tests/TgAssertCoreTests/TgAssertCoreTests.csproj index 3e5a88d6..ab13ee71 100644 --- a/Tests/TgAssertCoreTests/TgAssertCoreTests.csproj +++ b/Tests/TgAssertCoreTests/TgAssertCoreTests.csproj @@ -1,9 +1,9 @@ - net8.0 + net9.0 enable enable - 0.5.410.0 + 0.5.440.0 AnyCPU;x64;x86 @@ -17,8 +17,10 @@ + + diff --git a/Tests/TgDownloaderConsoleTest/TgDownloaderConsoleTest.csproj b/Tests/TgDownloaderConsoleTest/TgDownloaderConsoleTest.csproj index 9204ec36..e8f99564 100644 --- a/Tests/TgDownloaderConsoleTest/TgDownloaderConsoleTest.csproj +++ b/Tests/TgDownloaderConsoleTest/TgDownloaderConsoleTest.csproj @@ -1,10 +1,10 @@ - net8.0 + net9.0 enable enable false - 0.5.410.0 + 0.5.440.0 AnyCPU;x64;x86 @@ -26,7 +26,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Tests/TgDownloaderDesktop.Tests.MSTest/TgDownloaderDesktop.Tests.MSTest.csproj b/Tests/TgDownloaderDesktop.Tests.MSTest/TgDownloaderDesktop.Tests.MSTest.csproj index 8d95ab64..931e1cef 100644 --- a/Tests/TgDownloaderDesktop.Tests.MSTest/TgDownloaderDesktop.Tests.MSTest.csproj +++ b/Tests/TgDownloaderDesktop.Tests.MSTest/TgDownloaderDesktop.Tests.MSTest.csproj @@ -1,6 +1,6 @@  - net8.0-windows10.0.19041.0 + net9.0-windows10.0.19041.0 TgDownloaderDesktop.Tests.MSTest x86;x64;arm64;AnyCPU false @@ -9,20 +9,20 @@ true true resources.pri - 0.5.410.0 + 0.5.440.0 - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - - + + + - + diff --git a/Tests/TgDownloaderTest/TgDownloaderTest.csproj b/Tests/TgDownloaderTest/TgDownloaderTest.csproj index 9204ec36..e8f99564 100644 --- a/Tests/TgDownloaderTest/TgDownloaderTest.csproj +++ b/Tests/TgDownloaderTest/TgDownloaderTest.csproj @@ -1,10 +1,10 @@ - net8.0 + net9.0 enable enable false - 0.5.410.0 + 0.5.440.0 AnyCPU;x64;x86 @@ -26,7 +26,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Tests/TgStorageTest/TgStorageTest.csproj b/Tests/TgStorageTest/TgStorageTest.csproj index 9c452a57..bd74b0a1 100644 --- a/Tests/TgStorageTest/TgStorageTest.csproj +++ b/Tests/TgStorageTest/TgStorageTest.csproj @@ -1,10 +1,10 @@  - net8.0 + net9.0 enable enable false - 0.5.410.0 + 0.5.440.0 AnyCPU;x64;x86 @@ -17,7 +17,8 @@ none - + + @@ -26,11 +27,11 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/TgDownloader.sln b/TgDownloader.sln index 546e65dc..14103b88 100644 --- a/TgDownloader.sln +++ b/TgDownloader.sln @@ -16,7 +16,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{BC2545B1-7 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{53975472-4A48-4B67-8AF5-029EF31DEA39}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Clients", "Clients", "{3F563803-8BCB-4477-89CF-91167A8F887C}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Presentation", "Presentation", "{3F563803-8BCB-4477-89CF-91167A8F887C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgStorage", "Core\TgStorage\TgStorage.csproj", "{3F5FE133-3178-468E-9017-EC97874A3DA6}" EndProject @@ -28,22 +28,28 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderTest", "Tests\T EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgStorageTest", "Tests\TgStorageTest\TgStorageTest.csproj", "{17CE2A7E-AE56-43E8-AB4B-6504B3484167}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderConsole", "Clients\TgDownloaderConsole\TgDownloaderConsole.csproj", "{5A12C18B-8DA6-4D47-93D3-9D1AA49BEF62}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderConsole", "Presentation\TgDownloaderConsole\TgDownloaderConsole.csproj", "{5A12C18B-8DA6-4D47-93D3-9D1AA49BEF62}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderWinDesktopWPF", "Clients\TgDownloaderWinDesktopWPF\TgDownloaderWinDesktopWPF.csproj", "{CD1F315D-B7C2-45A4-A933-8ED742FCBB4D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderWinDesktopWPF", "Presentation\TgDownloaderWinDesktopWPF\TgDownloaderWinDesktopWPF.csproj", "{CD1F315D-B7C2-45A4-A933-8ED742FCBB4D}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgInfrastructure", "Core\TgInfrastructure\TgInfrastructure.csproj", "{FC689594-30C9-45D2-B8DB-7079E752984B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderBlazor", "Clients\TgDownloaderBlazor\TgDownloaderBlazor.csproj", "{2CEEB42C-BE70-4D2C-811F-17648FB742F5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderBlazor", "Presentation\TgDownloaderBlazor\TgDownloaderBlazor.csproj", "{2CEEB42C-BE70-4D2C-811F-17648FB742F5}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{49FCA776-C63B-4C0C-B2B2-E9CA0E5949ED}" ProjectSection(SolutionItems) = preProject Docs\CHANGELOG-RUS.md = Docs\CHANGELOG-RUS.md Docs\CHANGELOG.md = Docs\CHANGELOG.md + Docs\GUIDE-SETUP-CONSOLE-RUS.md = Docs\GUIDE-SETUP-CONSOLE-RUS.md + Docs\GUIDE-SETUP-CONSOLE.md = Docs\GUIDE-SETUP-CONSOLE.md Docs\GUIDE-SETUP-DESKTOP-RUS.md = Docs\GUIDE-SETUP-DESKTOP-RUS.md Docs\GUIDE-SETUP-DESKTOP.md = Docs\GUIDE-SETUP-DESKTOP.md Docs\GUIDE-SETUP-DOCKER-RUS.md = Docs\GUIDE-SETUP-DOCKER-RUS.md Docs\GUIDE-SETUP-DOCKER.md = Docs\GUIDE-SETUP-DOCKER.md + Docs\GUIDE-SETUP-FILTERS-RUS.md = Docs\GUIDE-SETUP-FILTERS-RUS.md + Docs\GUIDE-SETUP-FILTERS.md = Docs\GUIDE-SETUP-FILTERS.md + Docs\GUIDE-SETUP-GROUPS-RUS.md = Docs\GUIDE-SETUP-GROUPS-RUS.md + Docs\GUIDE-SETUP-GROUPS.md = Docs\GUIDE-SETUP-GROUPS.md Docs\GUIDES-RUS.md = Docs\GUIDES-RUS.md Docs\GUIDES.md = Docs\GUIDES.md Docs\ISSUE-RUS.md = Docs\ISSUE-RUS.md @@ -65,7 +71,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ .github\workflows\branch_preview_tests.yml = .github\workflows\branch_preview_tests.yml EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderDesktop", "Clients\TgDownloaderDesktop\TgDownloaderDesktop.csproj", "{FB756D71-7AA6-4BAB-93BD-28B30B0EF1FF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderDesktop", "Presentation\TgDownloaderDesktop\TgDownloaderDesktop.csproj", "{FB756D71-7AA6-4BAB-93BD-28B30B0EF1FF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TgDownloaderDesktop.Core", "Core\TgDownloaderDesktop.Core\TgDownloaderDesktop.Core.csproj", "{F6A1AA94-9746-4F2A-9B1D-7A70F3F12E1F}" EndProject