Skip to content

Commit

Permalink
Move addFrame insertionIndex logic into windowStore
Browse files Browse the repository at this point in the history
  • Loading branch information
ayumi committed Aug 12, 2016
1 parent c60d2f4 commit fa1612e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 20 deletions.
20 changes: 3 additions & 17 deletions js/state/frameStateUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ const tabFromFrame = (frame) => {
* Adds a frame specified by frameOpts and newKey and sets the activeFrameKey
* @return Immutable top level application state ready to merge back in
*/
function addFrame (frames, tabs, frameOpts, newKey, partitionNumber, activeFrameKey) {
function addFrame (frames, tabs, frameOpts, newKey, partitionNumber, activeFrameKey, insertionIndex) {
const url = frameOpts.location || config.defaultUrl

// delayedLoadUrl is used as a placeholder when the new frame is created
Expand Down Expand Up @@ -352,22 +352,6 @@ function addFrame (frames, tabs, frameOpts, newKey, partitionNumber, activeFrame
history: []
}, frameOpts))

// Find the closest index to the current frame's index which has
// a different ancestor frame key.
let insertionIndex = findIndexForFrameKey(frames, frameOpts.parentFrameKey)
if (insertionIndex === -1) {
insertionIndex = frames.size
}
while (insertionIndex < frames.size) {
++insertionIndex
if (!isAncestorFrameKey(frames, frames.get(insertionIndex), frameOpts.parentFrameKey)) {
break
}
}
if (isFrameKeyPinned(frames, frameOpts.parentFrameKey)) {
insertionIndex = 0
}

return {
tabs: tabs.splice(insertionIndex, 0, tabFromFrame(frame)),
frames: frames.splice(insertionIndex, 0, frame),
Expand Down Expand Up @@ -505,7 +489,9 @@ function getFrameTabPageIndex (frames, frameProps, tabsPerTabPage) {
module.exports = {
query,
find,
isAncestorFrameKey,
isFrameKeyActive,
isFrameKeyPinned,
getFrameIndex,
getFrameDisplayIndex,
getActiveFrameIndex,
Expand Down
31 changes: 28 additions & 3 deletions js/stores/windowStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ const addToHistory = (frameProps) => {
return history.slice(-10)
}

const newFrame = (frameOpts, openInForeground) => {
const newFrame = (frameOpts, openInForeground, insertionIndex) => {
const frames = windowState.get('frames')

if (frameOpts === undefined) {
frameOpts = {}
}
Expand Down Expand Up @@ -185,8 +187,31 @@ const newFrame = (frameOpts, openInForeground) => {
} else if (frameOpts.isPartitioned) {
nextPartitionNumber = incrementPartitionNumber()
}
windowState = windowState.merge(FrameStateUtil.addFrame(windowState.get('frames'), windowState.get('tabs'), frameOpts,
nextKey, nextPartitionNumber, openInForeground ? nextKey : windowState.get('activeFrameKey')))

// Find the closest index to the current frame's index which has
// a different ancestor frame key.
if (!insertionIndex) {
insertionIndex = FrameStateUtil.findIndexForFrameKey(frames, frameOpts.parentFrameKey)
}
if (insertionIndex === -1) {
insertionIndex = frames.size
}
while (insertionIndex < frames.size) {
++insertionIndex
if (!FrameStateUtil.isAncestorFrameKey(frames, frames.get(insertionIndex), frameOpts.parentFrameKey)) {
break
}
}
if (FrameStateUtil.isFrameKeyPinned(frames, frameOpts.parentFrameKey)) {
insertionIndex = 0
}

windowState = windowState.merge(
FrameStateUtil.addFrame(
frames, windowState.get('tabs'), frameOpts,
nextKey, nextPartitionNumber, openInForeground ? nextKey : windowState.get('activeFrameKey'), insertionIndex)
)

if (openInForeground) {
const activeFrame = FrameStateUtil.getActiveFrame(windowState)
updateTabPageIndex(activeFrame)
Expand Down

0 comments on commit fa1612e

Please sign in to comment.