Skip to content
This repository was archived by the owner on Dec 11, 2019. It is now read-only.

Commit acf2a80

Browse files
darkdhbridiver
authored andcommitted
Reduce redundant siteSort to sort once and used everywhere
fix #7240 Auditors: @bbondy, @bsclifton Test Plan: 1. Import bunch of bookmarks 2. Open bookmarks of menu shouldn't affect performance 3. Open about:bookmarks shouldn't affect performance
1 parent 2b67978 commit acf2a80

File tree

7 files changed

+20
-14
lines changed

7 files changed

+20
-14
lines changed

app/browser/bookmarksExporter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function createBookmarkArray (sites, parentFolderId, first = true, depth = 1) {
5252

5353
if (first) payload.push(`${indentFirst}<DL><p>`)
5454

55-
filteredBookmarks.toList().sort(siteUtil.siteSort).forEach((site) => {
55+
filteredBookmarks.forEach((site) => {
5656
if (site.get('tags').includes(siteTags.BOOKMARK) && site.get('location')) {
5757
title = site.get('customTitle') || site.get('title') || site.get('location')
5858
payload.push(`${indentNext}<DT><A HREF="${site.get('location')}">${title}</A>`)

app/browser/menu.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const menuUtil = require('../common/lib/menuUtil')
2727
const {getByTabId} = require('../common/state/tabState')
2828
const getSetting = require('../../js/settings').getSetting
2929
const locale = require('../locale')
30-
const {isLocationBookmarked, siteSort} = require('../../js/state/siteUtil')
30+
const {isLocationBookmarked} = require('../../js/state/siteUtil')
3131
const tabState = require('../../app/common/state/tabState')
3232
const isDarwin = process.platform === 'darwin'
3333
const isLinux = process.platform === 'linux'
@@ -393,7 +393,7 @@ const createBookmarksSubmenu = () => {
393393
CommonMenu.exportBookmarksMenuItem()
394394
]
395395

396-
const bookmarks = menuUtil.createBookmarkTemplateItems(appStore.getState().get('sites').toList().sort(siteSort))
396+
const bookmarks = menuUtil.createBookmarkTemplateItems(appStore.getState().get('sites'))
397397
if (bookmarks.length > 0) {
398398
submenu.push(CommonMenu.separatorMenuItem)
399399
submenu = submenu.concat(bookmarks)

app/browser/reducers/sitesReducer.js

+3
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@ const sitesReducer = (state, action, immutableAction) => {
7575
state = syncUtil.updateSiteCache(state, action.destinationDetail || action.siteDetail)
7676
}
7777
}
78+
state = state.set('sites', state.get('sites').sort(siteUtil.siteSort))
7879
state = updateActiveTabBookmarked(state)
7980
break
8081
case appConstants.APP_REMOVE_SITE:
8182
state = siteUtil.removeSite(state, action.siteDetail, action.tag, true)
83+
state = state.set('sites', state.get('sites').sort(siteUtil.siteSort))
8284
if (syncEnabled()) {
8385
state = syncUtil.updateSiteCache(state, action.siteDetail)
8486
}
@@ -88,6 +90,7 @@ const sitesReducer = (state, action, immutableAction) => {
8890
state = siteUtil.moveSite(state,
8991
action.sourceKey, action.destinationKey, action.prepend,
9092
action.destinationIsParent, false)
93+
state = state.set('sites', state.get('sites').sort(siteUtil.siteSort))
9194
if (syncEnabled()) {
9295
const destinationDetail = state.getIn(['sites', action.destinationKey])
9396
state = syncUtil.updateSiteCache(state, destinationDetail)

app/browser/tabs.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const settings = require('../../js/constants/settings')
1919
const {getBaseUrl, aboutUrls} = require('../../js/lib/appUrlUtil')
2020
const siteSettings = require('../../js/state/siteSettings')
2121
const messages = require('../../js/constants/messages')
22-
const siteUtil = require('../../js/state/siteUtil')
2322
const aboutHistoryState = require('../common/state/aboutHistoryState')
2423
const appStore = require('../../js/stores/appStore')
2524
const appConfig = require('../../js/constants/appConfig')
@@ -137,8 +136,8 @@ ipcMain.on(messages.ABOUT_COMPONENT_INITIALIZED, (e) => {
137136
})
138137

139138
const getBookmarksData = function (state) {
140-
let bookmarkSites = new Immutable.Map()
141-
let bookmarkFolderSites = new Immutable.Map()
139+
let bookmarkSites = new Immutable.OrderedMap()
140+
let bookmarkFolderSites = new Immutable.OrderedMap()
142141
state.get('sites').forEach((site, siteKey) => {
143142
const tags = site.get('tags')
144143
if (tags.includes(siteTags.BOOKMARK)) {
@@ -148,8 +147,8 @@ const getBookmarksData = function (state) {
148147
bookmarkFolderSites = bookmarkFolderSites.set(siteKey, site)
149148
}
150149
})
151-
const bookmarks = bookmarkSites.toList().sort(siteUtil.siteSort).toJS()
152-
const bookmarkFolders = bookmarkFolderSites.toList().sort(siteUtil.siteSort).toJS()
150+
const bookmarks = bookmarkSites.toList().toJS()
151+
const bookmarkFolders = bookmarkFolderSites.toList().toJS()
153152
return {bookmarks, bookmarkFolders}
154153
}
155154

app/browser/windows.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const LocalShortcuts = require('../localShortcuts')
1212
const {getPinnedSiteProps} = require('../common/lib/windowsUtil')
1313
const {makeImmutable} = require('../common/state/immutableUtil')
1414
const {getPinnedTabsByWindowId} = require('../common/state/tabState')
15-
const {siteSort} = require('../../js/state/siteUtil')
1615
const messages = require('../../js/constants/messages')
1716
const settings = require('../../js/constants/settings')
1817
const siteTags = require('../../js/constants/siteTags')
@@ -84,7 +83,7 @@ const updatePinnedTabs = (win) => {
8483
const sitesToAdd = pinnedSites.filter((site) =>
8584
!win.__alreadyPinnedSites.find((pinned) => pinned.equals(site)))
8685

87-
sitesToAdd.sort(siteSort).forEach((site) => {
86+
sitesToAdd.forEach((site) => {
8887
win.__alreadyPinnedSites = win.__alreadyPinnedSites.add(site)
8988
appActions.createTabRequested({
9089
url: site.get('location'),

app/index.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const privacy = require('../js/state/privacy')
7676
const async = require('async')
7777
const settings = require('../js/constants/settings')
7878
const BookmarksExporter = require('./browser/bookmarksExporter')
79+
const siteUtil = require('../js/state/siteUtil')
7980

8081
app.commandLine.appendSwitch('enable-features', 'BlockSmallPluginContent,PreferHtmlOverPlugins')
8182

@@ -329,7 +330,10 @@ app.on('ready', () => {
329330
// For tests we always want to load default app state
330331
const loadedPerWindowState = initialState.perWindowState
331332
delete initialState.perWindowState
332-
appActions.setState(Immutable.fromJS(initialState))
333+
// Retore map order after load
334+
let state = Immutable.fromJS(initialState)
335+
state = state.set('sites', state.get('sites').sort(siteUtil.siteSort))
336+
appActions.setState(state)
333337
setImmediate(() => perWindowStateLoaded(loadedPerWindowState))
334338
})
335339

app/renderer/components/bookmarks/bookmarksToolbar.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ class BookmarksToolbar extends ImmutableComponent {
108108
contextMenus.onShowBookmarkFolderMenu(this.bookmarks, bookmark, this.activeFrame, e)
109109
}
110110
updateBookmarkData (props) {
111-
this.bookmarks = siteUtil.getBookmarks(props.sites).toList().sort(siteUtil.siteSort)
111+
// TODO(darkdh): Remove siteSort when we have #9030 landed
112+
this.bookmarks = siteUtil.getBookmarks(props.sites).sort(siteUtil.siteSort)
112113

113114
const noParentItems = this.bookmarks
114115
.filter((bookmark) => !bookmark.get('parentFolderId'))
@@ -153,9 +154,9 @@ class BookmarksToolbar extends ImmutableComponent {
153154
break
154155
}
155156
}
156-
this.bookmarksForToolbar = noParentItems.take(i).sort(siteUtil.siteSort)
157+
this.bookmarksForToolbar = noParentItems.take(i)
157158
// Show at most 100 items in the overflow menu
158-
this.overflowBookmarkItems = noParentItems.skip(i).take(100).sort(siteUtil.siteSort)
159+
this.overflowBookmarkItems = noParentItems.skip(i).take(100)
159160
}
160161
componentWillMount () {
161162
this.updateBookmarkData(this.props)

0 commit comments

Comments
 (0)