Skip to content

Commit ae6ba6f

Browse files
committed
refactor: 💡 Add loading indicator for initial loads
1 parent 298c591 commit ae6ba6f

File tree

5 files changed

+43
-9
lines changed

5 files changed

+43
-9
lines changed

‎addons/api/addon/utils/sqlite-query.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,12 @@ function addSearchConditions({
145145

146146
// Use the special prefix indicator "*" for full-text search
147147
if (typeOf(search) === 'object') {
148-
if (!search?.value) {
148+
if (!search?.text) {
149149
return;
150150
}
151151

152152
parameters.push(
153-
or(search.fields.map((field) => `${field}:"${search.value}"*`)),
153+
or(search.fields.map((field) => `${field}:"${search.text}"*`)),
154154
);
155155
} else {
156156
parameters.push(`"${search}"*`);

‎addons/api/tests/unit/utils/sqlite-query-test.js‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,31 @@ module('Unit | Utility | sqlite-query', function (hooks) {
300300
]);
301301
});
302302

303+
test('it generates FTS5 search with object parameter', function (assert) {
304+
const query = {
305+
search: {
306+
text: 'favorite',
307+
fields: ['name', 'description'],
308+
},
309+
filters: {
310+
type: [{ equals: 'ssh' }],
311+
},
312+
};
313+
314+
const { sql, parameters } = generateSQLExpressions('target', query);
315+
assert.strictEqual(
316+
sql,
317+
`
318+
SELECT * FROM "target"
319+
WHERE (type = ?) AND rowid IN (SELECT rowid FROM target_fts WHERE target_fts MATCH ?)
320+
ORDER BY created_time DESC`.removeExtraWhiteSpace(),
321+
);
322+
assert.deepEqual(parameters, [
323+
'ssh',
324+
'name:"favorite"* OR description:"favorite"*',
325+
]);
326+
});
327+
303328
test('it generates SQL with all clauses combined', function (assert) {
304329
const query = {
305330
search: 'favorite',

‎ui/admin/app/controllers/scopes/scope/session-recordings/index.js‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export default class ScopesScopeSessionRecordingsIndexController extends Control
176176
{
177177
select: config.select,
178178
query: {
179-
search: { value: search, fields: config.searchFields },
179+
search: { text: search, fields: config.searchFields },
180180
},
181181
page: 1,
182182
pageSize: 250,
@@ -187,13 +187,13 @@ export default class ScopesScopeSessionRecordingsIndexController extends Control
187187
return results.map(config.mapper);
188188
}
189189

190-
async loadItems() {
190+
loadItems = restartableTask(async () => {
191191
this.userFilters.options = await this.retrieveFilterOptions('userFilters');
192192
this.scopeFilters.options =
193193
await this.retrieveFilterOptions('scopeFilters');
194194
this.targetFilters.options =
195195
await this.retrieveFilterOptions('targetFilters');
196-
}
196+
});
197197

198198
// =actions
199199

‎ui/admin/app/routes/scopes/scope/session-recordings/index.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,6 @@ export default class ScopesScopeSessionRecordingsIndexRoute extends Route {
222222
*/
223223
setupController(controller) {
224224
super.setupController(...arguments);
225-
controller.loadItems();
225+
controller.loadItems.perform();
226226
}
227227
}

‎ui/admin/app/templates/scopes/scope/session-recordings/index.hbs‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
@isSearchable={{true}}
5656
@searchTerm={{this.userFilters.search}}
5757
@updateSearchTerm={{fn this.onFilterSearch.perform 'userFilters'}}
58-
@isLoading={{this.onFilterSearch.isRunning}}
58+
@isLoading={{or
59+
this.onFilterSearch.isRunning
60+
this.loadItems.isRunning
61+
}}
5962
as |FD selectItem itemOptions|
6063
>
6164
{{#each itemOptions as |itemOption|}}
@@ -82,7 +85,10 @@
8285
this.onFilterSearch.perform
8386
'scopeFilters'
8487
}}
85-
@isLoading={{this.onFilterSearch.isRunning}}
88+
@isLoading={{or
89+
this.onFilterSearch.isRunning
90+
this.loadItems.isRunning
91+
}}
8692
as |FD selectItem itemOptions|
8793
>
8894
{{#each-in
@@ -118,7 +124,10 @@
118124
this.onFilterSearch.perform
119125
'targetFilters'
120126
}}
121-
@isLoading={{this.onFilterSearch.isRunning}}
127+
@isLoading={{or
128+
this.onFilterSearch.isRunning
129+
this.loadItems.isRunning
130+
}}
122131
as |FD selectItem itemOptions|
123132
>
124133
{{#each itemOptions as |itemOption|}}

0 commit comments

Comments
 (0)