@@ -95,58 +95,50 @@ export function ActivityProvider(props) {
95
95
* @return {NormalizedActivity }
96
96
*/
97
97
function normalizeItems ( prev , data ) {
98
- /** @type {Record<string, boolean> } */
99
- const nextFavorites = { } ;
100
- /** @type {Record<string, Item> } */
101
- const nextItems = { } ;
102
- /** @type {Record<string, HistoryEntry[]> } */
103
- const nextHistory = { } ;
104
- /** @type {Record<string, TrackingStatus> } */
105
- const nextTrackingStatus = { } ;
106
-
107
- for ( const x of data . activity ) {
108
- nextFavorites [ x . url ] = x . favorite ;
109
- {
110
- /** @type {Item } */
111
- const next = {
112
- etldPlusOne : x . etldPlusOne ,
113
- title : x . title ,
114
- url : x . url ,
115
- faviconMax : x . favicon ?. maxAvailableSize ?? DDG_DEFAULT_ICON_SIZE ,
116
- favoriteSrc : x . favicon ?. src ,
117
- trackersFound : x . trackersFound ,
118
- } ;
119
- const differs = shallowDiffers ( next , prev . items [ x . url ] || { } ) ;
120
- nextItems [ x . url ] = differs ? next : prev . items [ x . url ] || { } ;
121
- }
122
-
123
- {
124
- const differs = shallowDiffers ( x . history , prev . history [ x . url ] || [ ] ) ;
125
- nextHistory [ x . url ] = differs ? [ ...x . history ] : prev . history [ x . url ] || [ ] ;
126
- }
127
-
128
- {
129
- const prevItem = prev . trackingStatus [ x . url ] || {
130
- totalCount : 0 ,
131
- trackerCompanies : [ ] ,
132
- } ;
133
- const differs = shallowDiffers ( x . trackingStatus . trackerCompanies , prevItem . trackerCompanies ) ;
134
- if ( prevItem . totalCount !== x . trackingStatus . totalCount || differs ) {
135
- nextTrackingStatus [ x . url ] = {
136
- totalCount : x . trackingStatus . totalCount ,
137
- trackerCompanies : [ ...x . trackingStatus . trackerCompanies ] ,
138
- } ;
139
- } else {
140
- nextTrackingStatus [ x . url ] = prevItem ;
141
- }
142
- }
143
- }
144
-
145
98
return {
146
- favorites : nextFavorites ,
147
- items : nextItems ,
148
- history : nextHistory ,
149
- trackingStatus : nextTrackingStatus ,
99
+ favorites : Object . fromEntries (
100
+ data . activity . map ( ( x ) => {
101
+ return [ x . url , x . favorite ] ;
102
+ } ) ,
103
+ ) ,
104
+ items : Object . fromEntries (
105
+ data . activity . map ( ( x ) => {
106
+ /** @type {Item } */
107
+ const next = {
108
+ etldPlusOne : x . etldPlusOne ,
109
+ title : x . title ,
110
+ url : x . url ,
111
+ faviconMax : x . favicon ?. maxAvailableSize ?? DDG_DEFAULT_ICON_SIZE ,
112
+ favoriteSrc : x . favicon ?. src ,
113
+ trackersFound : x . trackersFound ,
114
+ } ;
115
+ const differs = shallowDiffers ( next , prev . items [ x . url ] || { } ) ;
116
+ return [ x . url , differs ? next : prev . items [ x . url ] || { } ] ;
117
+ } ) ,
118
+ ) ,
119
+ history : Object . fromEntries (
120
+ data . activity . map ( ( x ) => {
121
+ const differs = shallowDiffers ( x . history , prev . history [ x . url ] || [ ] ) ;
122
+ return [ x . url , differs ? [ ...x . history ] : prev . history [ x . url ] || [ ] ] ;
123
+ } ) ,
124
+ ) ,
125
+ trackingStatus : Object . fromEntries (
126
+ data . activity . map ( ( x ) => {
127
+ const prevItem = prev . trackingStatus [ x . url ] || {
128
+ totalCount : 0 ,
129
+ trackerCompanies : [ ] ,
130
+ } ;
131
+ const differs = shallowDiffers ( x . trackingStatus . trackerCompanies , prevItem . trackerCompanies ) ;
132
+ if ( prevItem . totalCount !== x . trackingStatus . totalCount || differs ) {
133
+ const next = {
134
+ totalCount : x . trackingStatus . totalCount ,
135
+ trackerCompanies : [ ...x . trackingStatus . trackerCompanies ] ,
136
+ } ;
137
+ return [ x . url , next ] ;
138
+ }
139
+ return [ x . url , prevItem ] ;
140
+ } ) ,
141
+ ) ,
150
142
} ;
151
143
}
152
144
0 commit comments