mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-09-10 22:54:45 +08:00
fix(draft): drafts order newest to oldest
Summary: Fixes T1192: Allow ordering in database view. Fixes draft list ordering Test Plan: edgehill --test Reviewers: bengotow Reviewed By: bengotow Maniphest Tasks: T1192 Differential Revision: https://review.inboxapp.com/D1514
This commit is contained in:
parent
e9e88c2cf6
commit
a237d69327
4 changed files with 24 additions and 1 deletions
|
@ -12,6 +12,7 @@ DraftListStore = Reflux.createStore
|
|||
@_view = new DatabaseView Message,
|
||||
matchers: [Message.attributes.draft.equal(true)],
|
||||
includes: [Message.attributes.body]
|
||||
orders: [Message.attributes.date.descending()]
|
||||
|
||||
@listenTo @_view, => @trigger({})
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
outline:none;
|
||||
}
|
||||
|
||||
.thread-list {
|
||||
.thread-list, .draft-list {
|
||||
order: 3;
|
||||
flex: 1;
|
||||
position:relative;
|
||||
|
|
|
@ -32,6 +32,12 @@ describe "DatabaseView", ->
|
|||
expect(view._matchers).toEqual(config.matchers)
|
||||
expect(view._includes).toEqual(config.includes)
|
||||
|
||||
it "should optionally populate ordering", ->
|
||||
config =
|
||||
orders: [Message.attributes.date.descending()]
|
||||
view = new DatabaseView(Message, config)
|
||||
expect(view._orders).toEqual(config.orders)
|
||||
|
||||
it "should optionally accept a metadata provider", ->
|
||||
provider = ->
|
||||
view = new DatabaseView(Message, {}, provider)
|
||||
|
@ -243,6 +249,7 @@ describe "DatabaseView", ->
|
|||
beforeEach ->
|
||||
@config =
|
||||
matchers: [Message.attributes.namespaceId.equal('asd')]
|
||||
orders: [Message.attributes.date.descending()]
|
||||
@view = new DatabaseView(Message, @config)
|
||||
@queries = []
|
||||
|
||||
|
@ -258,6 +265,11 @@ describe "DatabaseView", ->
|
|||
expect(@queries[0]._range).toEqual({offset: @view._pageSize * 2, limit: @view._pageSize})
|
||||
expect(@queries[0]._matchers).toEqual(@config.matchers)
|
||||
|
||||
it "should order results properly", ->
|
||||
@view.retrievePage(2)
|
||||
expect(@queries.length).toBe(1)
|
||||
expect(@queries[0]._orders).toEqual(@config.orders)
|
||||
|
||||
describe "once the database request has completed", ->
|
||||
beforeEach ->
|
||||
@view.retrievePage(0)
|
||||
|
|
|
@ -36,6 +36,7 @@ class DatabaseView extends ModelView
|
|||
@_pageSize = 100
|
||||
@_matchers = config.matchers ? []
|
||||
@_includes = config.includes ? []
|
||||
@_orders = config.orders ? []
|
||||
|
||||
@_count = -1
|
||||
@invalidate()
|
||||
|
@ -73,6 +74,14 @@ class DatabaseView extends ModelView
|
|||
@_pages = {}
|
||||
@invalidate()
|
||||
|
||||
orders: ->
|
||||
@_orders
|
||||
|
||||
setOrders: (orders) ->
|
||||
@_orders = orders
|
||||
@_pages = {}
|
||||
@invalidate()
|
||||
|
||||
# Accessing Data
|
||||
|
||||
count: ->
|
||||
|
@ -250,6 +259,7 @@ class DatabaseView extends ModelView
|
|||
query = DatabaseStore.findAll(@klass).where(@_matchers)
|
||||
query.offset(idx * @_pageSize).limit(@_pageSize)
|
||||
query.include(attr) for attr in @_includes
|
||||
query.order(@_orders) if @_orders.length > 0
|
||||
|
||||
query.then (items) =>
|
||||
# If the page is no longer in the cache at all, it may have fallen out of the
|
||||
|
|
Loading…
Add table
Reference in a new issue