Review of "Fav-Emoji" version 1

Details Page Preview

Fav-Emoji is a versatile extension designed to simplify emoji selection and clipboard management. It is a fork of Emoji Selector / Emoji Copy.

Extension Homepage
https://github.com/ijin82/Fav-Emoji

No comments.

FAQ

Files

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

Shexli (experimental) warning 5 manual_review 2

Shexli found 7 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

  • extension.js:317
    St.Clipboard.get_default()

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-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:155
        this.clearBtn = new St.Button({
          style_class: "button fav-emoji-action-btn fav-emoji-clear-btn",
          can_focus: true,
          track_hover: true,
          x_expand: true,
          child: clearBox,
        })
  • extension.js:178
        this.copyBtn = new St.Button({
          style_class: "button suggested-action fav-emoji-action-btn fav-emoji-copy-btn",
          can_focus: true,
          track_hover: true,
          x_expand: true,
          child: copyBox,
        })
  • extension.js:226
    this.favoritesSection = new PopupMenu.PopupMenuSection()
  • extension.js:199
        this.textEntry = new St.Entry({
          name: "favEmojiEntry",
          style_class: "fav-emoji-entry",
          can_focus: true,
          hint_text: _("Click emojis to compose..."),
          track_hover: true,
          x_expand: true,
        })

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:155
        this.clearBtn = new St.Button({
          style_class: "button fav-emoji-action-btn fav-emoji-clear-btn",
          can_focus: true,
          track_hover: true,
          x_expand: true,
          child: clearBox,
        })
  • extension.js:178
        this.copyBtn = new St.Button({
          style_class: "button suggested-action fav-emoji-action-btn fav-emoji-copy-btn",
          can_focus: true,
          track_hover: true,
          x_expand: true,
          child: copyBox,
        })

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:209
        clutterText.connect("key-press-event", (actor, event) => {
          const symbol = event.get_key_symbol();
          if (symbol === Clutter.KEY_Return || symbol === Clutter.KEY_KP_Enter) {
            this._onCopyClicked();
            return Clutter.EVENT_STOP;
          }
          if (symbol === Clutter.KEY_Escape)
  • extension.js:62
        this.super_btn.menu.connect(
          "open-state-changed",
          this._onOpenStateChanged.bind(this),
        )

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:100
    this.sqlite = new SQLite()
  • prefs.js:104
    this._registeredButtons = new Map()

All Versions

Version Status
3 Unreviewed
2 Rejected
1 Rejected

Previous Reviews on this Version

ijin82 auto- rejected
Auto-rejected because of new version 2 was uploaded