mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-23 23:54:13 +08:00
revert(list-selection): Using clientIds had unintended consequences
This commit is contained in:
parent
c4749f592e
commit
54054bef7b
1 changed files with 11 additions and 11 deletions
|
@ -45,7 +45,7 @@ class ListSelection
|
|||
return unless item
|
||||
throw new Error("toggle must be called with a Model") unless item instanceof Model
|
||||
|
||||
without = _.reject @_items, (t) -> t.clientId is item.clientId
|
||||
without = _.reject @_items, (t) -> t.id is item.id
|
||||
if without.length < @_items.length
|
||||
@_items = without
|
||||
else
|
||||
|
@ -56,7 +56,7 @@ class ListSelection
|
|||
return unless item
|
||||
throw new Error("add must be called with a Model") unless item instanceof Model
|
||||
|
||||
updated = _.reject @_items, (t) -> t.clientId is item.clientId
|
||||
updated = _.reject @_items, (t) -> t.id is item.id
|
||||
updated.push(item)
|
||||
if updated.length isnt @_items.length
|
||||
@_items = updated
|
||||
|
@ -73,7 +73,7 @@ class ListSelection
|
|||
|
||||
itemIds = _.pluck(items, 'id')
|
||||
|
||||
without = _.reject @_items, (t) -> t.clientId in itemIds
|
||||
without = _.reject @_items, (t) -> t.id in itemIds
|
||||
if without.length < @_items.length
|
||||
@_items = without
|
||||
@trigger(@)
|
||||
|
@ -97,12 +97,12 @@ class ListSelection
|
|||
# items are in the _items array in the order they were selected.
|
||||
# (important for walking)
|
||||
relativeTo = @_items[@_items.length - 1]
|
||||
startIdx = @_view.indexOfId(relativeTo.clientId)
|
||||
endIdx = @_view.indexOfId(item.clientId)
|
||||
startIdx = @_view.indexOfId(relativeTo.id)
|
||||
endIdx = @_view.indexOfId(item.id)
|
||||
return if startIdx is -1 or endIdx is -1
|
||||
for idx in [startIdx..endIdx]
|
||||
item = @_view.get(idx)
|
||||
@_items = _.reject @_items, (t) -> t.clientId is item.clientId
|
||||
@_items = _.reject @_items, (t) -> t.id is item.id
|
||||
@_items.push(item)
|
||||
@trigger()
|
||||
|
||||
|
@ -116,7 +116,7 @@ class ListSelection
|
|||
|
||||
ids = @ids()
|
||||
noSelection = @_items.length is 0
|
||||
neitherSelected = (not current or ids.indexOf(current.clientId) is -1) and (not next or ids.indexOf(next.clientId) is -1)
|
||||
neitherSelected = (not current or ids.indexOf(current.id) is -1) and (not next or ids.indexOf(next.id) is -1)
|
||||
|
||||
if noSelection or neitherSelected
|
||||
@_items.push(current) if current
|
||||
|
@ -124,15 +124,15 @@ class ListSelection
|
|||
else
|
||||
selectionPostPopHeadId = null
|
||||
if @_items.length > 1
|
||||
selectionPostPopHeadId = @_items[@_items.length - 2].clientId
|
||||
selectionPostPopHeadId = @_items[@_items.length - 2].id
|
||||
|
||||
if next.clientId is selectionPostPopHeadId
|
||||
if next.id is selectionPostPopHeadId
|
||||
@_items.pop()
|
||||
else
|
||||
# Important: As you walk over this item, remove it and re-push it on the selected
|
||||
# array even if it's already there. That way, the items in _items are always
|
||||
# in the order you walked over them, and you can walk back to deselect them.
|
||||
@_items = _.reject @_items, (t) -> t.clientId is next.clientId
|
||||
@_items = _.reject @_items, (t) -> t.id is next.id
|
||||
@_items.push(next)
|
||||
|
||||
@trigger()
|
||||
|
@ -147,7 +147,7 @@ class ListSelection
|
|||
touched = 0
|
||||
for newer in change.objects
|
||||
for existing, idx in @_items
|
||||
if existing.clientId is newer.clientId
|
||||
if existing.id is newer.id
|
||||
@_items[idx] = newer
|
||||
touched += 1
|
||||
break
|
||||
|
|
Loading…
Reference in a new issue