Review of "Syncthing Indicator" version 51

Details Page Preview

Shell indicator for monitoring and controlling Syncthing. Using SystemD will add the ability to (auto) start and stop the service.

Extension Homepage
https://github.com/2nv2u/gnome-shell-extension-syncthing-indicator

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) error 1 warning 4

Shexli found 5 issues that may need reviewer attention.

EGO-X-004 warning

extensions should avoid synchronous file IO in shell code

Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.

File Operations

  • syncthing.js:992
    systemDConfigFileFrom.load_contents(null)
  • utils.js:38
    this.#file.load_contents(null)

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 17 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • syncthing.js:639
    console.warn(LOG_PREFIX, "event processing failed", error.message)
  • syncthing.js:725
    console.warn(LOG_PREFIX, "refresh error", error.message)
  • syncthing.js:822
          console.warn(
            LOG_PREFIX,
            "failed to check pending requests",
            error.message,
          )
  • syncthing.js:959
    console.warn(LOG_PREFIX, "which syncthing failed", error.message)
  • syncthing.js:1017
              console.warn(
                LOG_PREFIX,
                "couldn't write systemd configuration file to " +
                  systemDConfigFileTo,
              )
  • syncthing.js:1024
            console.warn(
              LOG_PREFIX,
              "couldn't write systemd configuration file to " +
                systemDConfigFileTo,
              error.message,
            )
  • syncthing.js:1046
            console.warn(
              LOG_PREFIX,
              "systemd call failed, switching to API only mode",
            )
  • syncthing.js:449
    console.error(LOG_PREFIX, "service change error", error)
  • syncthing.js:605
              console.error(
                LOG_PREFIX,
                Error.SERVICE,
                event.data.error,
                event.data.when,
              )
  • syncthing.js:781
    console.error(LOG_PREFIX, Error.SERVICE, errors[i])

EGO-L-003 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:27
        this.settings.connect("changed", () => {
          this._settingTimer.run(() => {
            this.indicator.close();
            this.disable();
            this.enable();
          });
        })
  • syncthing.js:258
          folder.connect(
            Signal.STATE_CHANGE,
            this.determineStateDelayed.bind(this),
          )
  • syncthing.js:257
        this.folders.connect(Signal.ADD, (collection, folder) => {
          folder.connect(
            Signal.STATE_CHANGE,
            this.determineStateDelayed.bind(this),
          );
        })
  • syncthing.js:310
        this._manager.connect(Signal.DEVICE_ADD, (manager, device) => {
          device.connect(
            Signal.STATE_CHANGE,
            this.determineStateDelayed.bind(this),
          );
        })
  • syncthing.js:311
          device.connect(
            Signal.STATE_CHANGE,
            this.determineStateDelayed.bind(this),
          )
  • syncthing.js:317
          device.connect(
            Signal.STATE_CHANGE,
            this.determineStateDelayed.bind(this),
          )

EGO-M-004 error

metadata shell-version must only include plausible stable releases and at most one development release

Field `shell-version` contains invalid values, more than one development release, or implausible future releases.

metadata.json must be well-formed

  • metadata.json
    shell-version=['45', '46', '47', '48', '49', '50', '51']

EGO-L-006 warning

preferences classes should not retain window-scoped objects on instance fields without close-request cleanup

Preferences code stores window-scoped objects on the exported prefs class without `close-request` cleanup.

Destroy all objects

  • prefs.js:27
    this._i18n = new Utils.I18N(this, gettext)

All Versions

Version Status
52 Active
51 Rejected
50 Active
49 Rejected
48 Active
47 Rejected
46 Active
45 Active
44 Rejected
43 Rejected
42 Rejected
41 Rejected
40 Rejected
39 Active
38 Active
37 Active
36 Active
35 Active
34 Active
33 Active
32 Rejected
31 Active
30 Rejected
29 Active
28 Active
27 Active
26 Active
25 Active
24 Active
23 Active
22 Active
21 Active
20 Active
19 Rejected
17 Active
16 Active
15 Rejected
14 Rejected
13 Active
12 Active
11 Active
10 Active
9 Active
8 Active
7 Active
6 Active
5 Active
4 Active
3 Rejected
2 Active
1 Active

Previous Reviews on this Version

2nv2u auto- rejected
Auto-rejected because of new version 52 was uploaded