Review of "Prayer Times" version 16

Details Page Preview

Highly customizable and efficient prayer time and athan reminder extension for Gnome. ** Features: Sources: - Manual location (latitude and longitude) - Automatic location (with fallback to manual location) - Mawaqit to display local mosque times (with a toggle for fallback to auto or otherwise manual location) Location Calculations: - Preset and custom Fajr & Isha angles - Asr shadow lengths - High latitude Fajr and Isha correction (1/2 of night, 1/7th of night, and angle based) - Optionally include sunnah prayers (Duha) Notifications: - Send notifications for prayers - Play a shorter version of an athan for prayers - Reminders before prayer time Indicator types: - Countdown to next prayer - Time of the next prayer Translations: Arabic

Extension Homepage
https://github.com/Mocab/Prayer-times-gnome-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 3

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

  • mawaqit-client.js:21
    file.load_contents(null)

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

  • setting-manager.js:137
            this._gSettingListener.calcMethod = this._gSettings.connect("changed::preset-methods", () => {
                chooseCalcMethod();
                this._reloadExtensionMain();
            })

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:240
    this._settingsSignalId = gSettings.connect("changed::mawaqit-slug", () => updateMosqueTitle(getBaseMosqueTitle()))

All Versions

Previous Reviews on this Version

JustPerfection rejected
1. Timeout should be removed before creating a new one (line 208 `extension.js`). 2. Please use aysnc for reading file content since you are in shell process (line 21 `mawaqit-client.js`): [Gio.File.load_contents_async](https://gjs-docs.gnome.org/gio20~2.0/gio.file#method-load_contents_async) Please avoid sending large diff. It's hard to review.