/* * Copyright (c) 2025 Proton AG * * This file is part of ProtonVPN. * * ProtonVPN is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ProtonVPN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ProtonVPN. If not, see . */ using ProtonVPN.Client.Common.Dispatching; using ProtonVPN.Client.Core.Services.Activation; using ProtonVPN.Client.Core.Services.Activation.Bases; using ProtonVPN.Client.Core.Services.Selection; using ProtonVPN.Client.EventMessaging.Contracts; using ProtonVPN.Client.Localization.Contracts; using ProtonVPN.Client.Logic.Auth.Contracts.Messages; using ProtonVPN.Client.Logic.Users.Contracts.Messages; using ProtonVPN.Client.Settings.Contracts; using ProtonVPN.Client.UI.Dialogs.Upsell; using ProtonVPN.Logging.Contracts; using ProtonVPN.StatisticalEvents.Contracts; namespace ProtonVPN.Client.Services.Activation; public class StreamingDetectionWindowActivator : DialogActivatorBase, IStreamingDetectionWindowActivator, IEventMessageReceiver, IEventMessageReceiver { private readonly IUpsellDisplayReporter _upsellDisplayReporter; public override string WindowTitle => Localizer.Get("Dialogs_StreamingDetection_WindowTitle"); public StreamingDetectionWindowActivator( ILogger logger, IUIThreadDispatcher uiThreadDispatcher, IApplicationThemeSelector themeSelector, ISettings settings, ILocalizationService localizationService, ILocalizationProvider localizer, IApplicationIconSelector iconSelector, IMainWindowActivator mainWindowActivator, IUpsellDisplayReporter upsellDisplayReporter) : base(logger, uiThreadDispatcher, themeSelector, settings, localizationService, localizer, iconSelector, mainWindowActivator) { _upsellDisplayReporter = upsellDisplayReporter; } protected override void OnWindowOpened() { base.OnWindowOpened(); _upsellDisplayReporter.Report(new UpsellModalContext(ModalSource.StreamingActivity, ModalTrigger.NetworkRestriction)); } public void Receive(LoggedOutMessage message) { Hide(); } public void Receive(VpnPlanChangedMessage message) { if (message.IsUpgrade()) { Hide(); } } }