Skip to content
Closed
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6745964
Refactor Repo.GetFrontier and Service.Update
imnasnainaec Feb 11, 2026
0df512e
DeleteFrontierWord: remove at end instead of start
imnasnainaec Feb 12, 2026
478402f
Refactor merge handling of children deletion
imnasnainaec Feb 12, 2026
82fe082
Refactor delete, merge, and undo
imnasnainaec Feb 12, 2026
7a4739b
Mark words as deleted less aggresively in Lift export
imnasnainaec Feb 12, 2026
1a8ad6c
Update OpenAPI bindings
imnasnainaec Feb 12, 2026
5fddf67
Revert unnecessary RestoreFrontierWords changes
imnasnainaec Feb 12, 2026
5ea3131
Distinguish Merged from Deleted; Respond to bunny review
imnasnainaec Feb 13, 2026
921ebf5
Fix and simplify deletion status handling
imnasnainaec Feb 13, 2026
839b224
Fix ActionResult return type mismatch
imnasnainaec Feb 13, 2026
a1068fb
Simplify merge; Fix typos; Minor bunny fixes
imnasnainaec Feb 13, 2026
1ad4951
Don't distinguish Merged from Deleted
imnasnainaec Feb 13, 2026
30e5998
Revert out-of-scope controller/frontend API change
imnasnainaec Feb 13, 2026
5a82372
Merge branch 'master' into frontier-delete-restore
imnasnainaec Feb 16, 2026
3b20ed5
Merge branch 'master' into frontier-delete-restore
imnasnainaec Feb 16, 2026
a813d93
Merge branch 'master' into frontier-delete-restore
imnasnainaec Feb 16, 2026
8c9ce5b
Merge branch 'master' into frontier-delete-restore
imnasnainaec Feb 17, 2026
de1519c
Merge branch 'master' into frontier-delete-restore
imnasnainaec Feb 19, 2026
7a99eec
Split off test updates into other prs
imnasnainaec Feb 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions Backend/Services/LiftService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@ public async Task<string> LiftExport(string projectId, IProjectRepository projRe
// Get every word with all of its information.
var allWords = await wordRepo.GetAllWords(projectId);
var frontier = await wordRepo.GetAllFrontier(projectId);
// All words in the frontier with any senses are considered current.
// The Combine does not import senseless entries and the interface is supposed to prevent creating them.
var activeWords = frontier.Where(
x => x.Senses.Any(s => s.Accessibility == Status.Active || s.Accessibility == Status.Protected)).ToList();
var hasFlags = activeWords.Any(w => w.Flag.Active);
Expand All @@ -308,13 +310,13 @@ public async Task<string> LiftExport(string projectId, IProjectRepository projRe
// Get all project speakers for exporting audio and consents.
var projSpeakers = await speakerRepo.GetAllSpeakers(projectId);

// All words in the frontier with any senses are considered current.
// The Combine does not import senseless entries and the interface is supposed to prevent creating them.
// So the words found in allWords with no matching guid in activeWords are exported as 'deleted'.
var deletedWords = allWords.Where(
x => activeWords.All(w => w.Guid != x.Guid)).DistinctBy(w => w.Guid).ToList();
// Deleted words found in allWords with no matching guid in activeWords are exported as 'deleted'.
var activeWordGuids = activeWords.Select(w => w.Guid).ToHashSet();
var deletedWords = allWords.Where(w => w.Accessibility == Status.Deleted).DistinctBy(w => w.Guid)
.Where(x => !activeWordGuids.Contains(x.Guid)).ToList();
var englishSemDoms = await semDomRepo.GetAllSemanticDomainTreeNodes("en") ?? [];
var semDomNames = englishSemDoms.ToDictionary(x => x.Id, x => x.Name);

foreach (var wordEntry in activeWords)
{
var id = MakeSafeXmlAttribute(wordEntry.Vernacular) + "_" + wordEntry.Guid;
Expand Down
Loading