Review of "Material Weather" version 1

Details Page Preview

Colorful weather, hourly and daily forecasts, model selection, and weather advice. No API key required.

Extension Homepage
https://github.com/0xREISUB/material-weather

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 3

Shexli found 3 issues that may need reviewer attention.

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:43
    this._content = new St.BoxLayout({vertical: true, style_class: 'mw-content'})
  • extension.js:67
    this._contextManager = new PopupMenu.PopupMenuManager(this._button)
  • extension.js:417
    this._hourlyAnimation = timeline
  • extension.js:387
    this._hourlyScroll = scroll
  • extension.js:55
    this._mainScroll = scroll
  • extension.js:33
    this._panelContent = panel
  • extension.js:64
    this._settingsItem = new PopupMenu.PopupMenuItem(t('settings'))

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._button.connect('captured-event', (_actor, event) => {
                const type = event.type();
                if (![Clutter.EventType.BUTTON_PRESS, Clutter.EventType.BUTTON_RELEASE].includes(type) ||
                    event.get_button() !== Clutter.BUTTON_SECONDARY)
                    return Clu
  • extension.js:98
            this._button.menu.connect('open-state-changed', (_menu, open) => {
                if (open) {
                    this._contextMenu.close();
                    this._render(this._status);
                } else {
                    this._finishHourlyDrag();
                }
            })
  • extension.js:380
            scroll.hadjustment.connect('notify::value', () => {
                for (const text of textActors) text.queue_redraw();
                hourly.queue_redraw();
                scroll.queue_redraw();
            })
  • extension.js:48
            scroll.vadjustment.connect('notify::value', () => {
                const redraw = actor => {
                    actor.queue_redraw();
                    for (const child of actor.get_children()) redraw(child);
                };
                redraw(scroll);
            })

All Versions

Version Status
1 Unreviewed