app/html/page/search.jsView |
---|
8 | 8 … | |
9 | 9 … | exports.gives = nest('app.html.page') |
10 | 10 … | |
11 | 11 … | exports.needs = nest({ |
12 | | - 'app.html.scroller': 'first', |
| 12 … | + 'app.html': { |
| 13 … | + filter: 'first', |
| 14 … | + scroller: 'first' |
| 15 … | + }, |
13 | 16 … | 'message.html.render': 'first', |
14 | 17 … | 'sbot.pull': { |
15 | 18 … | log: 'first', |
16 | 19 … | search: 'first' |
108 | 111 … | when(hasNoFulltextMatches, h('div.matches', 'No matches')) |
109 | 112 … | ]) |
110 | 113 … | ) |
111 | 114 … | ]) |
112 | | - var { container, content } = api.app.html.scroller({ prepend: searchHeader }) |
| 115 … | + const { filterMenu, filterDownThrough, filterUpThrough, resetFeed } = api.app.html.filter(draw) |
| 116 … | + const { container, content } = api.app.html.scroller({ prepend: [searchHeader, filterMenu] }) |
113 | 117 … | container.id = path |
114 | 118 … | |
115 | 119 … | function renderMsg (msg) { |
116 | 120 … | var el = api.message.html.render(msg) |
117 | 121 … | highlight(el, createOrRegExp(query)) |
118 | 122 … | return el |
119 | 123 … | } |
120 | 124 … | |
121 | | - pull( |
122 | | - api.sbot.pull.log({old: false}), |
123 | | - pull.filter(matchesQuery), |
124 | | - Scroller(container, content, renderMsg, true, false) |
125 | | - ) |
126 | 125 … | |
127 | | - pull( |
128 | | - next(api.sbot.pull.search, {query: queryStr, reverse: true, limit: 500, live: false}), |
129 | | - fallback((err) => { |
130 | | - if (err === true) { |
131 | | - search.fulltext.isDone.set(true) |
132 | | - } else if (/^no source/.test(err.message)) { |
133 | | - search.isLinear.set(true) |
134 | | - return pull( |
135 | | - next(api.sbot.pull.log, {reverse: true, limit: 500, live: false}), |
136 | | - pull.through(() => search.linear.checked.set(search.linear.checked() + 1)), |
137 | | - pull.filter(matchesQuery) |
138 | | - ) |
139 | | - } |
140 | | - }), |
141 | | - pull.through(() => search.matches.set(search.matches() + 1)), |
142 | | - Scroller(container, content, renderMsg, false, false) |
143 | | - ) |
144 | 126 … | |
| 127 … | + function draw () { |
| 128 … | + resetFeed({ container, content }) |
| 129 … | + |
| 130 … | + pull( |
| 131 … | + api.sbot.pull.log({old: false}), |
| 132 … | + pull.filter(matchesQuery), |
| 133 … | + filterUpThrough(), |
| 134 … | + Scroller(container, content, renderMsg, true, false) |
| 135 … | + ) |
| 136 … | + |
| 137 … | + pull( |
| 138 … | + next(api.sbot.pull.search, {query: queryStr, reverse: true, limit: 500, live: false}), |
| 139 … | + fallback((err) => { |
| 140 … | + if (err === true) { |
| 141 … | + search.fulltext.isDone.set(true) |
| 142 … | + } else if (/^no source/.test(err.message)) { |
| 143 … | + search.isLinear.set(true) |
| 144 … | + return pull( |
| 145 … | + next(api.sbot.pull.log, {reverse: true, limit: 500, live: false}), |
| 146 … | + pull.through(() => search.linear.checked.set(search.linear.checked() + 1)), |
| 147 … | + pull.filter(matchesQuery) |
| 148 … | + ) |
| 149 … | + } |
| 150 … | + }), |
| 151 … | + filterDownThrough(), |
| 152 … | + pull.through(() => search.matches.set(search.matches() + 1)), |
| 153 … | + Scroller(container, content, renderMsg, false, false) |
| 154 … | + ) |
| 155 … | + } |
| 156 … | + |
| 157 … | + draw() |
| 158 … | + |
145 | 159 … | return container |
146 | 160 … | } |
147 | 161 … | } |
148 | 162 … | |