Review of "Clockify Time Tracker" version 2

Details Page Preview

Time tracking extension that integrates with the Clockify API, mimicking the Hamster time tracker UX.

Extension Homepage
https://github.com/nextsux/clockify-gnome-shell-extension

No comments.

Diff Against

Files

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

Shexli (experimental) warning 4

Shexli found 4 issues that may need reviewer attention.

EGO025 warning

unnecessary build and translation artifacts should not be shipped

Compiled GSettings schemas should not be shipped for 45+ packages.

Don't include unnecessary files

  • schemas/gschemas.compiled
    schemas/gschemas.compiled

EGO015 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:128
    this.clutter_text.connect('key-release-event', this._onKeyRelease.bind(this))
  • extension.js:362
            this._activityEntry.clutter_text.connect('key-press-event', (_actor, event) => {
                const sym = event.get_key_symbol();
                if (sym === Clutter.KEY_Return || sym === Clutter.KEY_KP_Enter) {
                    this._onEntryActivated();
                    return Clutter.EVENT_STOP;
    
  • extension.js:319
            this.menu.connect('open-state-changed', (_menu, open) => {
                if (open) {
                    this._onMenuOpen();
                } else {
                    global.stage.set_key_focus(null);
                }
            })

EGO016 warning

main loop sources should be removed in disable()

Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.

Remove main loop sources

  • extension.js:410
            this._errorTimeout = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
                this._errorLabel.hide();
                this._errorTimeout = null;
                return GLib.SOURCE_REMOVE;
            })
  • extension.js:427
            this._focusTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 20, () => {
                this._focusTimeout = null;
                global.stage.set_key_focus(this._activityEntry);
                return GLib.SOURCE_REMOVE;
            })
  • extension.js:328
            this._refreshTimeout = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 60, () => {
                this._loadCurrentEntry();
                return GLib.SOURCE_CONTINUE;
            })
  • extension.js:589
                this._scrollTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 0, () => {
                    this._scrollTimeout = null;
                    const adj = this._todaysWidget.vadjustment;
                    if (adj) adj.value = adj.upper;
                    return GLib.SOURCE_REMOVE;
                })

EGO037 warning

Soup.Session instances should be aborted during cleanup

Soup.Session instances should be aborted during cleanup.

Soup.Session.abort

  • extension.js:278
    this._session       = new Soup.Session()

All Versions

Version Status
3 Active
2 Rejected
1 Rejected

Previous Reviews on this Version

nextsux auto- rejected
Auto-rejected because of new version 3 was uploaded