File 0168-Use-ECMAScript-import-export-statements.patch of Package hamster-time-tracker

From 96bfe69e7f9f6e0f175a4c501a96054cb537850e Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Fri, 22 Sep 2023 18:53:26 +0200
Subject: [PATCH 168/173] Use ECMAScript import/export statements

https://gjs.guide/extensions/upgrading/gnome-shell-45.html

Signed-off-by: Martin Wilck <mwilck@suse.com>
---
 extension/extension.js                    | 18 +++++--------
 extension/prefs.js                        |  9 +++----
 extension/stuff.js                        | 10 +++----
 extension/widgets/categoryTotalsWidget.js | 14 +++++-----
 extension/widgets/factsBox.js             | 32 ++++++++++-------------
 extension/widgets/ongoingFactEntry.js     | 14 +++++-----
 extension/widgets/panelWidget.js          | 25 +++++++++---------
 extension/widgets/todaysFactsWidget.js    | 18 ++++++-------
 extension/widgets/totalTimeWidget.js      | 14 +++++-----
 9 files changed, 70 insertions(+), 84 deletions(-)

diff --git a/extension/extension.js b/extension/extension.js
index 8ece31e..31068ef 100644
--- a/extension/extension.js
+++ b/extension/extension.js
@@ -21,18 +21,14 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const GLib = imports.gi.GLib;
-const Shell = imports.gi.Shell;
-const Meta = imports.gi.Meta;
-const Main = imports.ui.main;
-const Gio = imports.gi.Gio;
+import GLib from 'gi://GLib';
+import Shell from 'gi://Shell';
+import Meta from 'gi://Meta';
+import Gio from 'gi://Gio';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
 
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const ExtensionUtils = imports.misc.extensionUtils;
-const Me = ExtensionUtils.getCurrentExtension();
-const PanelWidget = Me.imports.widgets.panelWidget.PanelWidget;
+import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
+import PanelWidget from './widgets/panelWidget.js';
 
 // dbus-send --session --type=method_call --print-reply --dest=org.gnome.Hamster /org/gnome/Hamster org.freedesktop.DBus.Introspectable.Introspect
 const ApiProxyIface = ['',
diff --git a/extension/prefs.js b/extension/prefs.js
index 23e9ab0..c7ae150 100644
--- a/extension/prefs.js
+++ b/extension/prefs.js
@@ -21,11 +21,10 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Gdk = imports.gi.Gdk;
-const Gio = imports.gi.Gio;
-const Gtk = imports.gi.Gtk;
-const GObject = imports.gi.GObject;
-const ExtensionUtils = imports.misc.extensionUtils;
+import Gdk from 'gi://Gdk';
+import Gio from 'gi://Gio';
+import Gtk from 'gi://Gtk';
+import GObject from 'gi://GObject';
 
 const HamsterSettingsWidget = GObject.registerClass(
 class HamsterSettingsWidget extends Gtk.Grid {
diff --git a/extension/stuff.js b/extension/stuff.js
index 56c7054..4cd8a12 100644
--- a/extension/stuff.js
+++ b/extension/stuff.js
@@ -29,7 +29,7 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDuration(total_seconds) {
+export function formatDuration(total_seconds) {
     let hours = total_seconds / 3600;
     let remaining_seconds = total_seconds % 3600;
     // We only care for "full minutes".
@@ -45,7 +45,7 @@ function formatDuration(total_seconds) {
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDurationHuman(total_seconds) {
+export function formatDurationHuman(total_seconds) {
     let hours = total_seconds / 3600;
     let remaining_seconds = total_seconds % 3600;
     // We only care for "full minutes".
@@ -75,7 +75,7 @@ function formatDurationHuman(total_seconds) {
  *
  * @param {int} - Total amount of seconds to represent.
  */
-function formatDurationHours(seconds) {
+export function formatDurationHours(seconds) {
     // We shift by one decimal place to the left in order to round properly.
     let hours = Math.round((seconds/3600)*10);
     // Shift right after rounding.
@@ -85,7 +85,7 @@ function formatDurationHours(seconds) {
 
 // Other helper functions
 
-function fromDbusFact(fact) {
+export function fromDbusFact(fact) {
     // converts a fact coming from dbus into a usable object
     function UTCToLocal(timestamp) {
         // TODO - is this really the way?!
@@ -108,7 +108,7 @@ function fromDbusFact(fact) {
     return result;
 }
 
-function fromDbusFacts(facts) {
+export function fromDbusFacts(facts) {
     let res = [];
     for (var fact of facts) {
         res.push(fromDbusFact(fact));
diff --git a/extension/widgets/categoryTotalsWidget.js b/extension/widgets/categoryTotalsWidget.js
index 88f9b96..9b36b7e 100644
--- a/extension/widgets/categoryTotalsWidget.js
+++ b/extension/widgets/categoryTotalsWidget.js
@@ -21,13 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import * as Stuff from '../stuff.js'
 
 
 /**
@@ -66,3 +64,5 @@ class CategoryTotals extends St.Label {
         this.set_text(getString(facts));
     }
 });
+
+export default CategoryTotalsWidget;
diff --git a/extension/widgets/factsBox.js b/extension/widgets/factsBox.js
index a033602..ab745de 100644
--- a/extension/widgets/factsBox.js
+++ b/extension/widgets/factsBox.js
@@ -21,23 +21,18 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const PopupMenu = imports.ui.popupMenu;
-const Clutter = imports.gi.Clutter;
-const Mainloop = imports.mainloop;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
-const OngoingFactEntry = Me.imports.widgets.ongoingFactEntry.OngoingFactEntry;
-const CategoryTotalsWidget = Me.imports.widgets.categoryTotalsWidget.CategoryTotalsWidget;
-const TotalTimeWidget = Me.imports.widgets.totalTimeWidget.TotalTimeWidget;
-const TodaysFactsWidget = Me.imports.widgets.todaysFactsWidget.TodaysFactsWidget;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
 
+import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+import * as Stuff from '../stuff.js';
+import OngoingFactEntry from './ongoingFactEntry.js';
+import CategoryTotalsWidget from './categoryTotalsWidget.js';
+import TotalTimeWidget from './totalTimeWidget.js';
+import TodaysFactsWidget from './todaysFactsWidget.js';
 
 /**
  * Create the widget that ``PanelWidget`` will use to dispay the *raw fact entry* as
@@ -79,7 +74,6 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
         // Setup category summery
         this.summaryLabel = new CategoryTotalsWidget();
         main_box.add(this.summaryLabel);
-
         // Setup total time
         this.totalTimeLabel = new TotalTimeWidget();
         main_box.add(this.totalTimeLabel);
@@ -100,7 +94,7 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
      * Focus the fact entry and make sure todaysFactsWidget are scrolled to the bottom.
      */
     focus() {
-        Mainloop.timeout_add(20, function() {
+        GLib.timeout_add(GLib.PRIORITY_DEFAULT, 20, function() {
             this._scrollAdjustment.value = this._scrollAdjustment.upper;
             global.stage.set_key_focus(this.ongoingFactEntry);
         }.bind(this));
@@ -113,3 +107,5 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
         global.stage.set_key_focus(null);
     }
 });
+
+export default FactsBox;
diff --git a/extension/widgets/ongoingFactEntry.js b/extension/widgets/ongoingFactEntry.js
index cce4929..cd63ae3 100644
--- a/extension/widgets/ongoingFactEntry.js
+++ b/extension/widgets/ongoingFactEntry.js
@@ -21,15 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
+import GObject from 'gi://GObject';
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
 
+import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js';
 
 /**
  * Custom Entry widget that allows entering a *raw fact* string for a new ongoing fact.
@@ -186,3 +182,5 @@ class OngoingFactEntry extends St.Entry {
         }
     }
 });
+
+export default OngoingFactEntry;
diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js
index 4a15dd6..b02d37b 100644
--- a/extension/widgets/panelWidget.js
+++ b/extension/widgets/panelWidget.js
@@ -21,20 +21,17 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Clutter = imports.gi.Clutter;
-const PanelMenu = imports.ui.panelMenu;
-const St = imports.gi.St;
-const PopupMenu = imports.ui.popupMenu;
-const GLib = imports.gi.GLib;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Clutter from 'gi://Clutter';
+import St from 'gi://St';
+import GLib from 'gi://GLib';
+import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
 
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const FactsBox = Me.imports.widgets.factsBox.FactsBox;
-const Stuff = Me.imports.stuff;
+import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js';
+import FactsBox from './factsBox.js';
+import * as Stuff from '../stuff.js';
 
 /**
  * Class that defines the actual extension widget to be shown in the panel.
@@ -341,3 +338,5 @@ class PanelWidget extends PanelMenu.Button {
         }
     }
 });
+
+export default PanelWidget;
diff --git a/extension/widgets/todaysFactsWidget.js b/extension/widgets/todaysFactsWidget.js
index 778f964..29c2370 100644
--- a/extension/widgets/todaysFactsWidget.js
+++ b/extension/widgets/todaysFactsWidget.js
@@ -21,17 +21,13 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const Gettext = imports.gettext.domain('hamster-shell-extension');
-const _ = Gettext.gettext;
-
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
 
+import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js';
+import * as Stuff from '../stuff.js';
 
 /**
  * A widget that lists all facts for *today*.
@@ -195,3 +191,5 @@ class TodaysFactsWidget extends St.ScrollView {
         this.populateFactsWidget(facts, ongoingFact);
     }
 });
+
+export default TodaysFactsWidget;
diff --git a/extension/widgets/totalTimeWidget.js b/extension/widgets/totalTimeWidget.js
index 9a6d64b..d11be30 100644
--- a/extension/widgets/totalTimeWidget.js
+++ b/extension/widgets/totalTimeWidget.js
@@ -21,13 +21,11 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 Copyright (c) 2018 Thibaut Madelaine <madtibo_git@tribu-ml.fr>
 */
 
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Me = imports.misc.extensionUtils.getCurrentExtension();
-const Stuff = Me.imports.stuff;
-
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import * as Stuff from '../stuff.js';
 
 /**
  * Custom Label widget that displays total time.
@@ -58,3 +56,5 @@ var TotalTimeWidget = GObject.registerClass(
         this.set_text(getString(facts));
     }
 });
+
+export default TotalTimeWidget;
-- 
2.42.0

openSUSE Build Service is sponsored by