Skip to content

Commit 9a7264d

Browse files
authored
Merge pull request #686 from Vignesh-SF3580/fix-tags
Fix Selected Tags Not Restored on MainPage After Navigation
2 parents 55eb63c + 564cf79 commit 9a7264d

File tree

2 files changed

+44
-10
lines changed

2 files changed

+44
-10
lines changed

10.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,30 @@ private async Task SelectionChanged(object parameter)
299299
{
300300
if (parameter is IEnumerable<object> enumerableParameter)
301301
{
302-
var changed = enumerableParameter.OfType<Tag>().ToList();
302+
var currentSelection = enumerableParameter.OfType<Tag>().ToList();
303+
var previousSelection = AllTags.Where(t => t.IsSelected).ToList();
303304

304-
if (changed.Count == 0 && SelectedTags is not null)
305-
changed = SelectedTags.OfType<Tag>().Except(enumerableParameter.OfType<Tag>()).ToList();
305+
// Handle newly selected tags
306+
foreach (var tag in currentSelection.Except(previousSelection))
307+
{
308+
tag.IsSelected = true;
309+
if (!_project.IsNullOrNew())
310+
{
311+
await _tagRepository.SaveItemAsync(tag, _project.ID);
312+
}
313+
}
314+
315+
// Handle deselected tags
316+
foreach (var tag in previousSelection.Except(currentSelection))
317+
{
318+
tag.IsSelected = false;
319+
if (!_project.IsNullOrNew())
320+
{
321+
await _tagRepository.DeleteItemAsync(tag, _project.ID);
322+
}
323+
}
306324

307-
if (changed.Count == 1)
308-
await ToggleTag(changed[0]);
325+
SelectedTags = new List<object>(currentSelection);
309326
}
310327
}
311328
}

9.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,30 @@ private async Task SelectionChanged(object parameter)
299299
{
300300
if (parameter is IEnumerable<object> enumerableParameter)
301301
{
302-
var changed = enumerableParameter.OfType<Tag>().ToList();
302+
var currentSelection = enumerableParameter.OfType<Tag>().ToList();
303+
var previousSelection = AllTags.Where(t => t.IsSelected).ToList();
303304

304-
if (changed.Count == 0 && SelectedTags is not null)
305-
changed = SelectedTags.OfType<Tag>().Except(enumerableParameter.OfType<Tag>()).ToList();
305+
// Handle newly selected tags
306+
foreach (var tag in currentSelection.Except(previousSelection))
307+
{
308+
tag.IsSelected = true;
309+
if (!_project.IsNullOrNew())
310+
{
311+
await _tagRepository.SaveItemAsync(tag, _project.ID);
312+
}
313+
}
314+
315+
// Handle deselected tags
316+
foreach (var tag in previousSelection.Except(currentSelection))
317+
{
318+
tag.IsSelected = false;
319+
if (!_project.IsNullOrNew())
320+
{
321+
await _tagRepository.DeleteItemAsync(tag, _project.ID);
322+
}
323+
}
306324

307-
if (changed.Count == 1)
308-
await ToggleTag(changed[0]);
325+
SelectedTags = new List<object>(currentSelection);
309326
}
310327
}
311328
}

0 commit comments

Comments
 (0)