Skip to content

Commit 617d4e3

Browse files
committedMay 19, 2023
Added tooltip notice for Beta
1 parent 6e94fea commit 617d4e3

File tree

5 files changed

+58
-10
lines changed

5 files changed

+58
-10
lines changed
 

‎SecureFolderFS.Sdk/Services/SettingsPersistence/IAppSettings.cs

+5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ namespace SecureFolderFS.Sdk.Services.SettingsPersistence
99
/// </summary>
1010
public interface IAppSettings : IPersistable, INotifyPropertyChanged
1111
{
12+
/// <summary>
13+
/// Gets or sets the value that determines whether the (first) notification about the beta program was shown.
14+
/// </summary>
15+
bool WasBetaNotificationShown1 { get; set; }
16+
1217
/// <summary>
1318
/// Gets or sets the value that determines whether Out of Box Experience was shown.
1419
/// </summary>

‎SecureFolderFS.UI/ServiceImplementation/SettingsPersistence/AppSettings.cs

+7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ public AppSettings(IModifiableFolder settingsFolder)
1717
SettingsDatabase = new SingleFileDatabaseModel(Constants.LocalSettings.APPLICATION_SETTINGS_FILENAME, settingsFolder, DoubleSerializedStreamSerializer.Instance);
1818
}
1919

20+
/// <inheritdoc/>
21+
public bool WasBetaNotificationShown1
22+
{
23+
get => GetSetting(() => false);
24+
set => SetSetting(value);
25+
}
26+
2027
/// <inheritdoc/>
2128
public bool IsIntroduced
2229
{

‎SecureFolderFS.WinUI/App.xaml.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -90,22 +90,22 @@ private IServiceProvider ConfigureServices(IModifiableFolder settingsFolder)
9090
.AddSingleton<ISettingsService, SettingsService>(_ => new(settingsFolder))
9191
.AddSingleton<IVaultPersistenceService, VaultPersistenceService>(_ => new(settingsFolder))
9292
.AddSingleton<IVaultService, VaultService>()
93-
.AddSingleton<IStorageService, NativeStorageService>()
9493
.AddSingleton<IDialogService, DialogService>()
95-
.AddSingleton<IApplicationService, ApplicationService>()
94+
.AddSingleton<IClipboardService, ClipboardService>()
9695
.AddSingleton<IThreadingService, ThreadingService>()
96+
.AddSingleton<IStorageService, NativeStorageService>()
97+
.AddSingleton<IApplicationService, ApplicationService>()
9798
.AddSingleton<ILocalizationService, LocalizationService>()
9899
.AddSingleton<IFileExplorerService, FileExplorerService>()
99-
.AddSingleton<IClipboardService, ClipboardService>()
100100
.AddSingleton<IUpdateService, MicrosoftStoreUpdateService>()
101101

102102
// Conditional (singleton) services
103103
#if DEBUG
104-
.AddSingleton<ITelemetryService, DebugTelemetryService>()
105104
.AddSingleton<IIapService, DebugIapService>()
105+
.AddSingleton<ITelemetryService, DebugTelemetryService>()
106106
#else
107+
.AddSingleton<IIapService, DebugIapService>() // .AddSingleton<IIapService, MicrosoftStoreIapService>() // TODO: Change in the future
107108
.AddSingleton<ITelemetryService, AppCenterTelemetryService>()
108-
.AddSingleton<IIapService, MicrosoftStoreIapService>()
109109
#endif
110110

111111
// Transient services

‎SecureFolderFS.WinUI/UserControls/InterfaceHost/MainAppHostControl.xaml

+16-1
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@
4545
<Grid
4646
Width="{Binding Path=OpenPaneLength, ElementName=Sidebar}"
4747
Padding="20,0,20,12"
48-
HorizontalAlignment="Stretch">
48+
HorizontalAlignment="Stretch"
49+
RowSpacing="16">
4950
<Grid.ColumnDefinitions>
5051
<ColumnDefinition Width="Auto" />
5152
<ColumnDefinition />
5253
</Grid.ColumnDefinitions>
5354

5455
<Button
56+
x:Name="StandardAddVaultButton"
5557
Grid.Column="0"
5658
HorizontalAlignment="Left"
5759
VerticalAlignment="Center"
@@ -84,6 +86,7 @@
8486
</Button>
8587

8688
<Button
89+
Grid.Row="1"
8790
Grid.Column="1"
8891
Width="36"
8992
Height="36"
@@ -105,6 +108,18 @@
105108
</AnimatedIcon.FallbackIconSource>
106109
</AnimatedIcon>
107110
</Button>
111+
112+
<TeachingTip
113+
x:Name="BetaTeachingTip"
114+
MaxWidth="100"
115+
CloseButtonClick="TeachingTip_CloseButtonClick"
116+
PreferredPlacement="Top"
117+
Subtitle="Adding more than two vaults is free during the beta period"
118+
Target="{Binding ElementName=StandardAddVaultButton}">
119+
<TeachingTip.IconSource>
120+
<FontIconSource Glyph="&#xE946;" />
121+
</TeachingTip.IconSource>
122+
</TeachingTip>
108123
</Grid>
109124
</NavigationView.PaneFooter>
110125
<NavigationView.MenuItemTemplate>

‎SecureFolderFS.WinUI/UserControls/InterfaceHost/MainAppHostControl.xaml.cs

+25-4
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
1-
using CommunityToolkit.Mvvm.Messaging;
1+
using CommunityToolkit.Mvvm.DependencyInjection;
2+
using CommunityToolkit.Mvvm.Messaging;
23
using Microsoft.UI.Xaml;
34
using Microsoft.UI.Xaml.Controls;
45
using SecureFolderFS.Sdk.Messages;
6+
using SecureFolderFS.Sdk.Services;
57
using SecureFolderFS.Sdk.ViewModels.Controls.Sidebar;
68
using SecureFolderFS.Sdk.ViewModels.Vault;
79
using SecureFolderFS.Sdk.ViewModels.Views.Host;
810
using SecureFolderFS.Sdk.ViewModels.Views.Vault;
11+
using SecureFolderFS.Shared.Extensions;
912
using SecureFolderFS.UI.Helpers;
1013
using System.Linq;
1114
using System.Threading.Tasks;
12-
using SecureFolderFS.Shared.Extensions;
1315

1416
// To learn more about WinUI, the WinUI project structure,
1517
// and more about our project templates, see: http://aka.ms/winui-project-info.
1618

1719
namespace SecureFolderFS.WinUI.UserControls.InterfaceHost
1820
{
19-
public sealed partial class MainAppHostControl : UserControl, IRecipient<RemoveVaultMessage>
21+
public sealed partial class MainAppHostControl : UserControl, IRecipient<RemoveVaultMessage>, IRecipient<AddVaultMessage>
2022
{
23+
private ISettingsService SettingsService { get; } = Ioc.Default.GetRequiredService<ISettingsService>();
24+
2125
public MainAppHostControl()
2226
{
2327
InitializeComponent();
@@ -30,6 +34,16 @@ public void Receive(RemoveVaultMessage message)
3034
Navigation.ClearContent();
3135
}
3236

37+
/// <inheritdoc/>
38+
public void Receive(AddVaultMessage message)
39+
{
40+
if (ViewModel.SidebarViewModel.SidebarItems.Count >= Sdk.Constants.Vault.MAX_FREE_AMOUNT_OF_VAULTS
41+
&& !SettingsService.AppSettings.WasBetaNotificationShown1)
42+
{
43+
BetaTeachingTip.IsOpen = true;
44+
}
45+
}
46+
3347
private async Task NavigateToItem(VaultViewModel vaultViewModel)
3448
{
3549
// Find existing target or create new
@@ -43,7 +57,8 @@ private async Task NavigateToItem(VaultViewModel vaultViewModel)
4357
private async void MainAppHostControl_Loaded(object sender, RoutedEventArgs e)
4458
{
4559
ViewModel.NavigationService.SetupNavigation(Navigation);
46-
WeakReferenceMessenger.Default.Register(this);
60+
WeakReferenceMessenger.Default.Register<RemoveVaultMessage>(this);
61+
WeakReferenceMessenger.Default.Register<AddVaultMessage>(this);
4762

4863
await ViewModel.InitAsync();
4964
Sidebar.SelectedItem = ViewModel.SidebarViewModel.SelectedItem;
@@ -71,6 +86,12 @@ private async void SidebarSearchBox_TextChanged(AutoSuggestBox sender, AutoSugge
7186
await ViewModel.SidebarViewModel.SearchViewModel.SubmitQuery(sender.Text);
7287
}
7388

89+
private async void TeachingTip_CloseButtonClick(TeachingTip sender, object args)
90+
{
91+
SettingsService.AppSettings.WasBetaNotificationShown1 = true;
92+
await SettingsService.AppSettings.SaveAsync();
93+
}
94+
7495
public MainHostViewModel ViewModel
7596
{
7697
get => (MainHostViewModel)GetValue(ViewModelProperty);

0 commit comments

Comments
 (0)
Please sign in to comment.