Review of "GNOME Fuzzy App Search" version 7

Details Page Preview

Fuzzy application search results for Gnome Search

Extension Homepage
https://gitlab.com/czarlie/gnome-fuzzy-app-search

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

All Versions

Version Status
25 Active
24 Active
23 Active
22 Rejected
21 Rejected
20 Active
19 Active
18 Active
17 Inactive
16 Active
15 Active
14 Inactive
13 Active
12 Active
11 Active
10 Active
9 Rejected
8 Rejected
7 Rejected
6 Rejected
5 Rejected
4 Rejected
3 Active
2 Active
1 Active

Previous Reviews on this Version

charlotte posted a review
Hi, I've finally gotten around to fixing the bugs I introduced when putting in the catch blocks and Promise rejects! ^^ Here's to hoping I haven't done anything very wrong this time
charlotte posted a review
Oh yeah, also, I've added a new linter to my editor which told me that many of the functions can be made async instead of returning Promises, so I did that
andyholmes waiting for author
It seems as though you still have uncaught promise rejections in your code, such as line 184 in indexUtils.js. `FileUtils.listDirectory()` returns a Promise with no catch clause, which is awaited in `Index.updateIndex()`. This is called in `Search.refresh()` in applicationUtils.js, but that chain of function calls has no catch clause and isn't awaited inside a `try..catch` block. In the case of `FileUtils.readFileOr()`, the Promise will never resolve with `loadOk == false`, because the Promise will reject with an error. Thus you should simply be doing: ```js function readFileOr(path, defaultValue) { return new Promise((resolve, reject) => { const file = Gio.File.new_for_path(path); file.load_contents_async(null, (_src, res) => { try { const data = file.load_contents_finish(res)[1]; resolve(ByteArray.toString(data)); } catch (e) { resolve(defaultValue); } }); }); } ``` In the case of `FileUtils.writeToFile()` you can save some work and just call `Gio.File.replace_contents_bytes_async()`, which will automatically overwrite the file if it exists, or create it if not. I also think your `iteratePromises()` function adds some unnecessary complexity, probably could just use `Promise.all()` or an async loop, but that's not a necessary fix for approval here. I think the above issues are all that would be necessary for approval, although some cleanup would probably make your debugging a lot easier in the future :)
charlotte posted a review
godDAMMIT! (I'll do that, and THANK YOU for telling me about `Promise.all`, I didn't find that when I googled and was getting really mad at JS for not having that built-in ^^) And about the `Gio.File.replace_contents_bytes_async()` thing, when I wrote that code I was happy that I'd found a way to write files at all, because a lot of the methods on https://gjs-docs.gnome.org/gio20~2.66p-file just refused to work for me. I'll definitely swap that out for a simpler method if that doesn't break anything Would you mind rejecting all this review and https://extensions.gnome.org/review/29254 , so I can have four in a row?
charlotte posted a review
Yeah, I'll be sticking to `for` loops instead of `Promise.all`, I think that's a little clearer, if that's alright
andyholmes rejected