diff --git a/apps/desktop/AStar.Dev.OneDrive.Sync.Client.Tests.Unit/Search/GivenASyncedFileSearchViewModel.cs b/apps/desktop/AStar.Dev.OneDrive.Sync.Client.Tests.Unit/Search/GivenASyncedFileSearchViewModel.cs index ab0c74e9..3774b066 100644 --- a/apps/desktop/AStar.Dev.OneDrive.Sync.Client.Tests.Unit/Search/GivenASyncedFileSearchViewModel.cs +++ b/apps/desktop/AStar.Dev.OneDrive.Sync.Client.Tests.Unit/Search/GivenASyncedFileSearchViewModel.cs @@ -547,4 +547,48 @@ public async Task when_view_is_activated_with_tags_then_show_no_classifications_ sut.ShowNoClassificationsHint.ShouldBeFalse(); } + + [Fact] + public async Task when_account_changes_then_selected_tags_are_cleared() + { + repository.GetDistinctTagNamesAsync(TestAccountId, Arg.Any()).Returns(["Image"]); + var sut = CreateSut(); + await sut.OnViewActivatedAsync(CancellationToken.None); + sut.ToggleTagCommand.Execute("Image"); + + sut.SetActiveAccount(new AccountId("acc-2")); + + sut.SelectedTags.ShouldBeEmpty(); + } + + [Fact] + public async Task when_view_is_activated_again_with_more_tags_then_selected_tags_are_cleared() + { + repository.GetDistinctTagNamesAsync(TestAccountId, Arg.Any()) + .Returns(["Image"], ["Image", "Video"]); + var sut = CreateSut(); + await sut.OnViewActivatedAsync(CancellationToken.None); + sut.ToggleTagCommand.Execute("Image"); + + await sut.OnViewActivatedAsync(CancellationToken.None); + + sut.SelectedTags.ShouldBeEmpty(); + } + + [Fact] + public async Task when_view_is_activated_again_with_more_tags_then_search_does_not_apply_stale_selected_tags() + { + SyncedItemSearchCriteria? captured = null; + repository.SearchAsync(Arg.Do(c => captured = c), Arg.Any()).Returns([]); + repository.GetDistinctTagNamesAsync(TestAccountId, Arg.Any()) + .Returns(["Image"], ["Image", "Video"]); + var sut = CreateSut(); + await sut.OnViewActivatedAsync(CancellationToken.None); + sut.ToggleTagCommand.Execute("Image"); + await sut.OnViewActivatedAsync(CancellationToken.None); + + await sut.SearchCommand.ExecuteAsync(null); + + captured!.Tags.ShouldBeEmpty(); + } } diff --git a/apps/desktop/AStar.Dev.OneDrive.Sync.Client/Search/SyncedFileSearchViewModel.cs b/apps/desktop/AStar.Dev.OneDrive.Sync.Client/Search/SyncedFileSearchViewModel.cs index edb68dbe..2d79fd42 100644 --- a/apps/desktop/AStar.Dev.OneDrive.Sync.Client/Search/SyncedFileSearchViewModel.cs +++ b/apps/desktop/AStar.Dev.OneDrive.Sync.Client/Search/SyncedFileSearchViewModel.cs @@ -121,7 +121,11 @@ public void SetActiveAccount(AccountId accountId) { activeAccountId = accountId; cachedTagCount = 0; - dispatcher.Post(AvailableTags.Clear); + dispatcher.Post(() => + { + AvailableTags.Clear(); + SelectedTags.Clear(); + }); } /// @@ -152,6 +156,7 @@ public async Task OnViewActivatedAsync(CancellationToken ct) dispatcher.Post(() => { AvailableTags.Clear(); + SelectedTags.Clear(); foreach (string tag in tags) AvailableTags.Add(tag); IsLoadingTags = false; diff --git a/apps/desktop/AStar.Dev.OneDrive.Sync.Client/appsettings.json b/apps/desktop/AStar.Dev.OneDrive.Sync.Client/appsettings.json index 26ea5f5c..683ae90a 100644 --- a/apps/desktop/AStar.Dev.OneDrive.Sync.Client/appsettings.json +++ b/apps/desktop/AStar.Dev.OneDrive.Sync.Client/appsettings.json @@ -7,7 +7,7 @@ "AuthorityForMicrosoftAccountsOnly": "https://login.microsoftonline.com/consumers" }, "AStarDevOneDriveClient": { - "ApplicationVersion": "0.29.0", + "ApplicationVersion": "0.29.1", "ApplicationName": "AStar Dev OneDrive Sync Client", "CacheTag": 1, "UserPreferencesPath": "astar-dev/astar-dev-onedrive-client",