Review of "Emoji Copy" version 35

Details Page Preview

Emoji copy is a versatile extension designed to simplify emoji selection and clipboard management. It is a fork of Emoji Selector.

Extension Homepage
https://github.com/felipeftn/emoji-copy

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 6 manual_review 2

Shexli found 8 issues that may need reviewer attention.

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • emojiButton.js:29
    St.Clipboard.get_default()

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

  • handlers/sql.js:17
    f.load_contents(null)

EGO-A-001 manual_review

extension code must not be minified or obfuscated

File appears obfuscated: 100% of identifiers are 1–2 characters (avg length 1.1).

Code must not be obfuscated

  • libs/sql/sql.js
    short identifier ratio: 100%, identifiers scored: 174965

EGO-P-006 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

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • handlers/files.js

EGO-L-002 warning

objects created by extension should be destroyed in disable()

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

Destroy all objects

  • extension.js:271
        this._buttonMenuItem = new PopupMenu.PopupBaseMenuItem({
          reactive: false,
          can_focus: false,
        })

EGO-L-005 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • extension.js:271
        this._buttonMenuItem = new PopupMenu.PopupBaseMenuItem({
          reactive: false,
          can_focus: false,
        })

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:74
        this.super_btn.menu.connect(
          "open-state-changed",
          this._onOpenStateChanged.bind(this),
        )

All Versions

Previous Reviews on this Version

JustPerfection active
Please use `connectObject()` and `disconnectObject()` so it is easier to track for cleanup (`extension.js` only).