Fix full context post/comment pull where newer items have lower IDs (no idea how)

codemagic-setup
Hank Grabowski 2022-12-29 00:05:13 -05:00
rodzic 7a41065a1c
commit 5328d9d170
1 zmienionych plików z 38 dodań i 18 usunięć

Wyświetl plik

@ -252,25 +252,45 @@ class EntryManagerService extends ChangeNotifier {
});
}
allSeenItems.sort((i1, i2) => int.parse(i1.id).compareTo(int.parse(i2.id)));
allSeenItems.sort((i1, i2) {
if (i1.parentId.isEmpty && i2.parentId.isNotEmpty) {
return -1;
}
if (i2.parentId.isEmpty && i1.parentId.isNotEmpty) {
return 1;
}
return int.parse(i1.id).compareTo(int.parse(i2.id));
});
final postNodesToReturn = <_Node>{};
for (final item in allSeenItems) {
if (item.parentId.isEmpty) {
final postNode = _postNodes.putIfAbsent(item.id, () => _Node(item.id));
postNodesToReturn.add(postNode);
} else {
final parentParentPostId = _postNodes.containsKey(item.parentId)
? item.parentId
: _parentPostIds[item.parentId];
final parentPostNode = _postNodes[parentParentPostId]!;
postNodesToReturn.add(parentPostNode);
_parentPostIds[item.id] = parentPostNode.id;
if (parentPostNode.getChildById(item.id) == null) {
final newNode = _Node(item.id);
final injectionNode = parentPostNode.id == item.parentId
? parentPostNode
: parentPostNode.getChildById(item.parentId)!;
injectionNode.addChild(newNode);
while (allSeenItems.isNotEmpty) {
final seenItemsCopy = [...allSeenItems];
for (final item in seenItemsCopy) {
if (item.parentId.isEmpty) {
final postNode =
_postNodes.putIfAbsent(item.id, () => _Node(item.id));
postNodesToReturn.add(postNode);
allSeenItems.remove(item);
} else {
final parentParentPostId = _postNodes.containsKey(item.parentId)
? item.parentId
: _parentPostIds[item.parentId];
final parentPostNode = _postNodes[parentParentPostId]!;
postNodesToReturn.add(parentPostNode);
_parentPostIds[item.id] = parentPostNode.id;
if (parentPostNode.getChildById(item.id) == null) {
final newNode = _Node(item.id);
final injectionNode = parentPostNode.id == item.parentId
? parentPostNode
: parentPostNode.getChildById(item.parentId);
if (injectionNode == null) {
continue;
} else {
injectionNode.addChild(newNode);
allSeenItems.remove(item);
}
}
}
}
}