git ssb

16+

Dominic / patchbay



Commit b52476e6fc5bba6d67786b4b0ee5e4bc4a7c4136

make notifications / postts / public feed streams abortable! (first pass)

mixmix committed on 5/16/2019, 6:58:47 AM
Parent: 390c8cafdc4ddfa56290adf041971042ec6c2a87

Files changed

app/page/notifications.jschanged
app/page/posts.jschanged
app/page/public.jschanged
app/page/notifications.jsView
@@ -1,8 +1,9 @@
11 const nest = require('depnest')
22 const { h } = require('mutant')
33 const pull = require('pull-stream')
44 const pullMerge = require('pull-merge')
5+const pullAbort = require('pull-abortable')
56 const Scroller = require('pull-scroll')
67 const next = require('pull-next-query')
78 const BookNotifications = require('scuttle-book/pull/notifications')
89
@@ -37,19 +38,28 @@
3738 function notificationsPage (location) {
3839 const { filterMenu, filterDownThrough, filterUpThrough, resetFeed } = api.app.html.filter(draw)
3940 const { container, content } = api.app.html.scroller({ prepend: [ filterMenu ] })
4041
42+ var abortableDown = pullAbort()
43+ var abortableUp = pullAbort()
44+
4145 function draw () {
4246 resetFeed({ container, content })
4347
48+ abortableDown.abort()
49+ abortableDown = pullAbort()
4450 pull(
4551 pullMentions({ old: false, live: true }),
52+ abortableDown,
4653 filterDownThrough(),
4754 Scroller(container, content, render, true, false)
4855 )
4956
57+ abortableUp.abort()
58+ abortableUp = pullAbort()
5059 pull(
5160 pullMentions({ reverse: true, live: false }),
61+ abortableUp,
5262 filterUpThrough(),
5363 Scroller(container, content, render, false, false)
5464 )
5565 }
app/page/posts.jsView
@@ -1,9 +1,10 @@
11 const nest = require('depnest')
22 const { h, Value, Array: MutantArray, Struct, computed, when, map } = require('mutant')
33 const pull = require('pull-stream')
4+const pullAbortable = require('pull-abortable')
5+const next = require('pull-next-query')
46 const Scroller = require('mutant-scroll')
5-const next = require('pull-next-query')
67 const merge = require('lodash/merge')
78 const get = require('lodash/get')
89 const sort = require('ssb-sort')
910
@@ -82,9 +83,17 @@
8283 }, BY_START)
8384 ])
8485 ])
8586
87+ var abortLive = pullAbortable()
88+ var abortReverse = pullAbortable()
89+
8690 return computed(state, state => {
91+ abortLive.abort()
92+ abortLive = pullAbortable()
93+ abortReverse.abort()
94+ abortReverse = pullAbortable()
95+
8796 var page
8897 if (state.sort === BY_UPDATE) page = PageByUpdate(state)
8998 if (state.sort === BY_START) page = PageByStart(state)
9099
@@ -109,9 +118,12 @@
109118 }
110119 }
111120 }
112121 const defaults = { limit: 100, query: [{ $filter }] }
113- return next(server.query.read, merge({}, defaults, opts), ['timestamp'])
122+ return pull(
123+ next(server.query.read, merge({}, defaults, opts), ['timestamp']),
124+ opts.live ? abortLive : abortReverse
125+ )
114126 })
115127 }
116128
117129 return Scroller({
@@ -169,8 +181,9 @@
169181
170182 // server.query.explain(merge({}, defaults, opts), console.log)
171183 return pull(
172184 next(server.query.read, merge({}, defaults, opts), ['value', 'timestamp']),
185+ opts.live ? abortLive : abortReverse,
173186 pull.map(m => m.key)
174187 )
175188 })
176189 }
app/page/public.jsView
@@ -1,7 +1,8 @@
11 const nest = require('depnest')
22 const { h } = require('mutant')
33 const pull = require('pull-stream')
4+const pullAbortable = require('pull-abortable')
45 const Scroller = require('pull-scroll')
56 const next = require('pull-next-query')
67 const merge = require('lodash/merge')
78
@@ -40,8 +41,10 @@
4041 })
4142 const { filterMenu, filterDownThrough, filterUpThrough, resetFeed } = api.app.html.filter(draw)
4243 const { container, content } = api.app.html.scroller({ prepend: [composer, filterMenu], className: 'PublicFeed' })
4344
45+ var abortLive = pullAbortable()
46+ var abortReverse = pullAbortable()
4447 const createStream = (opts) => api.sbot.pull.stream(server => {
4548 const _opts = merge({}, opts, {
4649 query: [{
4750 $filter: {
@@ -66,16 +69,22 @@
6669 return api.message.html.render(msg, { showTitle: true })
6770 }
6871
6972 // TODO - change to use ssb-query, streamed by publish time
73+ abortLive.abort()
74+ abortLive = pullAbortable()
7075 pull(
7176 createStream({ old: false, live: true }),
77+ abortLive,
7278 filterUpThrough(),
7379 Scroller(container, content, render, true, false)
7480 )
7581
82+ abortReverse.abort()
83+ abortReverse = pullAbortable()
7684 pull(
7785 createStream({ reverse: true, live: false }),
86+ abortReverse,
7887 filterDownThrough(),
7988 Scroller(container, content, render, false, false)
8089 )
8190 }

Built with git-ssb-web