Procházet zdrojové kódy

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 před 6 roky
odevzdal Eric Amodio
rodič
revize
e1c2c74301
3 změnil soubory, kde provedl 9 přidání a 8 odebrání
  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 Zobrazit soubor

@ -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 Zobrazit soubor

@ -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 Zobrazit soubor

@ -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(

Načítá se…
Zrušit
Uložit