MCPcopy
hub / github.com/mitmproxy/mitmproxy / updateViewItem

Function updateViewItem

web/src/js/ducks/flows/_utils.ts:40–77  ·  view source on GitHub ↗
(
    prevView: T[],
    prevViewIndex: Map<string, number>,
    item: T,
    sort: Comparer<T>,
)

Source from the content-addressed store, hash-verified

38}
39
40export function updateViewItem<T extends Item>(
41 prevView: T[],
42 prevViewIndex: Map<string, number>,
43 item: T,
44 sort: Comparer<T>,
45): { view: T[]; _viewIndex: Map<string, number> } {
46 const view = [...prevView];
47 const len = view.length;
48 let _viewIndex = prevViewIndex,
49 pos = _viewIndex.get(item.id)!;
50
51 // is this overoptimized? yes.
52 // was it fun? also yes.
53 if (pos + 1 < len && sort(item, view[pos + 1]) > 0) {
54 // move up
55 _viewIndex = new Map(_viewIndex);
56 do {
57 const move = view[pos + 1];
58 view[pos] = move;
59 _viewIndex.set(move.id, pos);
60 pos++;
61 } while (pos + 1 < len && sort(item, view[pos + 1]) > 0);
62 _viewIndex.set(item.id, pos);
63 } else if (pos > 0 && sort(item, view[pos - 1]) < 0) {
64 // move down
65 _viewIndex = new Map(_viewIndex);
66 do {
67 const move = view[pos - 1];
68 view[pos] = move;
69 _viewIndex.set(move.id, pos);
70 pos--;
71 } while (pos > 0 && sort(item, view[pos - 1]) < 0);
72 _viewIndex.set(item.id, pos);
73 }
74 view[pos] = item;
75
76 return { view, _viewIndex };
77}
78
79export function insertViewItem<T extends Item>(
80 prevView: T[],

Callers 2

flowsReducerFunction · 0.90
_utilsSpec.tsFile · 0.90

Calls 3

sortFunction · 0.85
getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…