Browse Source

Fixes #626 - Avoid using object to implement Map

This commit fixes a bug occurring with branch names which are parsable
integers.

They were always shown first in the list of branches (even if they are
not starred) because the chrome implementation does not respect the
insertion order for keys that happen to be parseable integers.
main
Marc Lasson 6 years ago
committed by Eric Amodio
parent
commit
e1c2c74301
3 changed files with 9 additions and 8 deletions
  1. +7
    -6
      src/system/array.ts
  2. +1
    -1
      src/views/nodes/branchOrTagFolderNode.ts
  3. +1
    -1
      src/views/nodes/folderNode.ts

+ 7
- 6
src/system/array.ts View File

@ -85,7 +85,7 @@ export namespace Arrays {
value?: T;
// parent?: IHierarchicalItem<T>;
children: { [key: string]: IHierarchicalItem<T> } | undefined;
children: Map<string, IHierarchicalItem<T>> | undefined;
descendants: T[] | undefined;
}
@ -98,7 +98,7 @@ export namespace Arrays {
const seed = {
name: '',
relativePath: '',
children: Object.create(null),
children: new Map(),
descendants: []
};
@ -110,18 +110,19 @@ export namespace Arrays {
relativePath = joinPath(relativePath, folderName);
if (folder.children === undefined) {
folder.children = Object.create(null);
folder.children = new Map();
}
let f = folder.children![folderName];
let f = folder.children!.get(folderName);
if (f === undefined) {
folder.children![folderName] = f = {
f = {
name: folderName,
relativePath: relativePath,
// parent: folder,
children: undefined,
descendants: undefined
};
folder.children.set(folderName, f);
}
if (folder.descendants === undefined) {
@ -147,7 +148,7 @@ export namespace Arrays {
): IHierarchicalItem<T> {
if (root.children === undefined) return root;
const children = [...Objects.values(root.children)];
const children = [...root.children.values()];
// // Attempts less nesting but duplicate roots
// if (!isRoot && children.every(c => c.value === undefined)) {

+ 1
- 1
src/views/nodes/branchOrTagFolderNode.ts View File

@ -32,7 +32,7 @@ export class BranchOrTagFolderNode extends ViewNode {
const children: (BranchOrTagFolderNode | BranchNode | TagNode)[] = [];
for (const folder of Objects.values(this.root.children)) {
for (const folder of this.root.children.values()) {
if (folder.value === undefined) {
// If the folder contains the current branch, expand it by default
const expanded =

+ 1
- 1
src/views/nodes/folderNode.ts View File

@ -41,7 +41,7 @@ export class FolderNode extends ViewNode {
);
if (nesting !== ViewFilesLayout.List) {
children = [];
for (const folder of Objects.values(this.root.children)) {
for (const folder of this.root.children.values()) {
if (folder.value === undefined) {
children.push(
new FolderNode(

Loading…
Cancel
Save