Skip to content

Commit fa94157

Browse files
authored
V7 / code review changes (#14)
* clean up settings & translations, avoid global instance * avoid using eventhandler instance in global scope * cleanup / update metadata * code cleanup
1 parent ccce679 commit fa94157

File tree

21 files changed

+178
-762
lines changed

21 files changed

+178
-762
lines changed

gitlab-extension@infinicode.de/components/gitlab/projectSelectButtons.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ const { GObject, St } = imports.gi
33
const ExtensionUtils = imports.misc.extensionUtils
44
const Me = ExtensionUtils.getCurrentExtension()
55

6-
const { Settings } = Me.imports.helpers.settings
6+
const { SettingsHandler } = Me.imports.helpers.settings
77

88
var ProjectSelectButtons = GObject.registerClass({}, class ProjectSelectButtons extends St.BoxLayout {
99
_init () {
1010
super._init({
1111
style_class: 'project-select-buttons'
1212
})
1313

14-
this._settingsChangedId = Settings.connect('changed', (value, key) => {
14+
this._settings = new SettingsHandler()
15+
16+
this._settingsChangedId = this._settings.connect('changed', (value, key) => {
1517
if (key === 'gitlab-accounts' || key === 'selected-gitlab-account-index') {
1618
this._sync()
1719
}
@@ -29,18 +31,18 @@ var ProjectSelectButtons = GObject.registerClass({}, class ProjectSelectButtons
2931
_createButtons () {
3032
this.destroy_all_children()
3133

32-
const gitlabAccounts = Settings.gitlab_accounts
34+
const gitlabAccounts = this._settings.gitlab_accounts
3335

3436
gitlabAccounts.forEach((gitlabAccount, index) => {
35-
const additionalStyleClasses = index === Settings.selected_gitlab_account_index ? 'active' : ''
37+
const additionalStyleClasses = index === this._settings.selected_gitlab_account_index ? 'active' : ''
3638

3739
const gitlabAccountButton = new St.Button({
3840
style_class: `message button ${additionalStyleClasses}`,
3941
label: gitlabAccount.name
4042
})
4143

4244
gitlabAccountButton.connect('clicked', () => {
43-
Settings.selected_gitlab_account_index = index
45+
this._settings.selected_gitlab_account_index = index
4446
})
4547

4648
this.add_child(gitlabAccountButton)
@@ -49,7 +51,7 @@ var ProjectSelectButtons = GObject.registerClass({}, class ProjectSelectButtons
4951

5052
_onDestroy () {
5153
if (this._settingsChangedId) {
52-
Settings.disconnect(this._settingsChangedId)
54+
this._settings.disconnect(this._settingsChangedId)
5355
}
5456
}
5557
})

gitlab-extension@infinicode.de/components/screenWrapper/screenWrapper.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ const ExtensionUtils = imports.misc.extensionUtils
44
const Me = ExtensionUtils.getCurrentExtension()
55
const { ProjectsScreen } = Me.imports.components.screens.projectsScreen.projectsScreen
66
const { ProjectDetailsScreen } = Me.imports.components.screens.projectDetailsScreen.projectDetailsScreen
7-
const { EventHandler } = Me.imports.helpers.eventHandler
87

98
var ScreenWrapper = GObject.registerClass(
109
class ScreenWrapper extends St.Widget {
11-
_init () {
10+
_init (mainEventHandler) {
1211
super._init({
1312
style_class: 'screen-wrapper'
1413
})
1514

16-
this._showScreenConnectId = EventHandler.connect('show-screen', (sender, { screen, additionalData }) => this.showScreen(screen, additionalData))
15+
this._mainEventHandler = mainEventHandler
16+
this._showScreenConnectId = this._mainEventHandler.connect('show-screen', (sender, { screen, additionalData }) => this.showScreen(screen, additionalData))
1717

1818
this.showScreen()
1919
}
@@ -23,12 +23,12 @@ var ScreenWrapper = GObject.registerClass(
2323

2424
switch (screenName) {
2525
case 'project-details':
26-
screen = new ProjectDetailsScreen(additionalData.item)
26+
screen = new ProjectDetailsScreen(additionalData.item, this._mainEventHandler)
2727
break
2828

2929
case 'projects':
3030
default:
31-
screen = new ProjectsScreen()
31+
screen = new ProjectsScreen(this._mainEventHandler)
3232
break
3333
}
3434

@@ -38,7 +38,7 @@ var ScreenWrapper = GObject.registerClass(
3838

3939
_onDestroy () {
4040
if (this._showScreenConnectId) {
41-
EventHandler.disconnect(this._showScreenConnectId)
41+
this._mainEventHandler.disconnect(this._showScreenConnectId)
4242
}
4343
}
4444
}

gitlab-extension@infinicode.de/components/screens/projectDetailsScreen/projectDetailsScreen.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,20 @@ const TABS = {
1818
}
1919

2020
var ProjectDetailsScreen = GObject.registerClass({}, class ProjectDetailsScreen extends St.BoxLayout {
21-
_init (projectItem) {
21+
_init (projectItem, mainEventHandler) {
2222
super._init({
2323
style_class: 'screen project-details-screen',
2424
vertical: true
2525
})
2626

27+
this._mainEventHandler = mainEventHandler
2728
this._selectedTab = TABS.COMMITS
2829

2930
this.projectItem = projectItem
3031

3132
const searchBar = new SearchBar({
32-
back_screen_name: 'projects'
33+
back_screen_name: 'projects',
34+
mainEventHandler: this._mainEventHandler
3335
})
3436

3537
// Static Details Header // TODO: don't be lazy and create a own component for it -.-

gitlab-extension@infinicode.de/components/screens/projectsScreen/projectsScreen.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ const ExtensionUtils = imports.misc.extensionUtils
44
const Me = ExtensionUtils.getCurrentExtension()
55

66
const { clearCache } = Me.imports.helpers.data
7-
const { EventHandler } = Me.imports.helpers.eventHandler
87
const { FlatList } = Me.imports.components.flatList.flatList
98
const { ProjectSelectButtons } = Me.imports.components.gitlab.projectSelectButtons
109
const { ProjectCard } = Me.imports.components.cards.projectCard
1110
const { SearchBar } = Me.imports.components.searchBar.searchBar
1211

1312
const {
14-
Settings,
13+
SettingsHandler,
1514
GITLAB_ACCOUNTS,
1615
SELECTED_GITLAB_ACCOUNT_INDEX
1716
} = Me.imports.helpers.settings
@@ -26,21 +25,24 @@ const SETTINGS_KEYS_TO_REFRESH = [
2625
]
2726

2827
var ProjectsScreen = GObject.registerClass({}, class ProjectsScreen extends St.BoxLayout {
29-
_init () {
28+
_init (mainEventHandler) {
3029
super._init({
3130
style_class: 'screen projects-screen',
3231
vertical: true
3332
})
3433

34+
this._mainEventHandler = mainEventHandler
35+
this._settings = new SettingsHandler()
36+
3537
this._settingsChangedId = null
3638

37-
const searchBar = new SearchBar()
39+
const searchBar = new SearchBar({ mainEventHandler: this._mainEventHandler })
3840
this._list = new FlatList()
3941

4042
this.add_child(searchBar)
4143

4244
this._projectSelectButtons = new ProjectSelectButtons()
43-
this._projectSelectButtons.visible = Settings.gitlab_accounts.length > 1
45+
this._projectSelectButtons.visible = this._settings.gitlab_accounts.length > 1
4446
this.add_child(this._projectSelectButtons)
4547

4648
this.add_child(this._list)
@@ -52,15 +54,15 @@ var ProjectsScreen = GObject.registerClass({}, class ProjectsScreen extends St.B
5254

5355
searchBar.connect('text-change', (sender, searchText) => this._filter_results(searchText))
5456

55-
this._settingsChangedId = Settings.connect('changed', (value, key) => {
57+
this._settingsChangedId = this._settings.connect('changed', (value, key) => {
5658
if (SETTINGS_KEYS_TO_REFRESH.includes(key)) {
5759
this._loadData()
5860
}
5961

60-
this._projectSelectButtons.visible = Settings.gitlab_accounts.length > 1
62+
this._projectSelectButtons.visible = this._settings.gitlab_accounts.length > 1
6163
})
6264

63-
this._list.connect('clicked-item', (sender, item) => EventHandler.emit('show-screen', {
65+
this._list.connect('clicked-item', (sender, item) => this._mainEventHandler.emit('show-screen', {
6466
screen: 'project-details',
6567
additionalData: {
6668
item: item.cardItem
@@ -90,7 +92,7 @@ var ProjectsScreen = GObject.registerClass({}, class ProjectsScreen extends St.B
9092
}
9193

9294
async _loadData () {
93-
if (!Settings.selected_gitlab_account) {
95+
if (!this._settings.selected_gitlab_account) {
9496
this._list.show_error_info(Translations.TOKEN_ERROR)
9597
return
9698
}
@@ -126,7 +128,7 @@ var ProjectsScreen = GObject.registerClass({}, class ProjectsScreen extends St.B
126128

127129
_onDestroy () {
128130
if (this._settingsChangedId) {
129-
Settings.disconnect(this._settingsChangedId)
131+
this._settings.disconnect(this._settingsChangedId)
130132
}
131133
}
132134
})

gitlab-extension@infinicode.de/components/searchBar/searchBar.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ const Util = imports.misc.util
55

66
const Me = ExtensionUtils.getCurrentExtension()
77

8-
const { EventHandler } = Me.imports.helpers.eventHandler
98
const { IconButton } = Me.imports.components.buttons.iconButton
109
const { Translations } = Me.imports.helpers.translations
1110

@@ -17,12 +16,13 @@ var SearchBar = GObject.registerClass({
1716
'refresh': {}
1817
}
1918
}, class SearchBar extends St.BoxLayout {
20-
_init ({ back_screen_name } = {}) {
19+
_init ({ back_screen_name, mainEventHandler } = {}) {
2120
super._init({
2221
style_class: 'search-bar',
2322
x_expand: true
2423
})
2524

25+
this._mainEventHandler = mainEventHandler
2626
this.back_screen_name = back_screen_name
2727

2828
this._searchAreaBox = this._createSearchArea()
@@ -45,7 +45,7 @@ var SearchBar = GObject.registerClass({
4545
style_class: 'navigate-back-icon-button',
4646
icon_name: 'go-previous-symbolic',
4747
text: Translations.BACK,
48-
onClick: () => EventHandler.emit('show-screen', { screen: this.back_screen_name })
48+
onClick: () => this._mainEventHandler.emit('show-screen', { screen: this.back_screen_name })
4949
})
5050

5151
searchInputBox.add_child(backIconButton)
@@ -95,7 +95,7 @@ var SearchBar = GObject.registerClass({
9595
icon_name: 'emblem-system-symbolic',
9696
icon_size: 18,
9797
onClick: () => {
98-
EventHandler.emit('hide-panel')
98+
this._mainEventHandler.emit('hide-panel')
9999
Util.spawn(['gnome-shell-extension-prefs', 'gitlab-extension@infinicode.de'])
100100
}
101101
})

gitlab-extension@infinicode.de/components/settings/aboutPage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const Me = ExtensionUtils.getCurrentExtension()
33

44
const { Adw, GdkPixbuf, Gio, GLib, GObject, Gtk } = imports.gi
55

6-
const { Settings } = Me.imports.helpers.settings
6+
const { SettingsHandler } = Me.imports.helpers.settings
77
const { Translations } = Me.imports.helpers.translations
88

99
var AboutPage = GObject.registerClass({

gitlab-extension@infinicode.de/components/settings/gitlabAccountListPage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const Me = ExtensionUtils.getCurrentExtension()
33

44
const { Adw, Gio, GObject, Gtk } = imports.gi
55

6-
const { Settings } = Me.imports.helpers.settings
6+
const { SettingsHandler } = Me.imports.helpers.settings
77
const { Translations } = Me.imports.helpers.translations
88

99
const { NewItemModel } = Me.imports.components.settings.subcomponents.newItemModel

gitlab-extension@infinicode.de/components/settings/settingsPage.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const Me = ExtensionUtils.getCurrentExtension()
33

44
const { Adw, Gio, GObject, Gtk } = imports.gi
55

6-
const { Settings } = Me.imports.helpers.settings
6+
const { SettingsHandler } = Me.imports.helpers.settings
77
const { Translations } = Me.imports.helpers.translations
88

99
var SettingsPage = GObject.registerClass({
@@ -32,6 +32,8 @@ class GeneralPreferenceGroup extends Adw.PreferencesGroup {
3232
title: Translations.SETTINGS.TITLE_GENERAL
3333
})
3434

35+
this._settings = new SettingsHandler()
36+
3537
const panelPositions = new Gtk.StringList()
3638
panelPositions.append(Translations.SETTINGS.POSITION_IN_PANEL_LEFT)
3739
panelPositions.append(Translations.SETTINGS.POSITION_IN_PANEL_CENTER)
@@ -40,11 +42,11 @@ class GeneralPreferenceGroup extends Adw.PreferencesGroup {
4042
const panelPositionRow = new Adw.ComboRow({
4143
title: Translations.SETTINGS.POSITION_IN_PANEL,
4244
model: panelPositions,
43-
selected: Settings.position_in_panel
45+
selected: this._settings.position_in_panel
4446
})
4547

4648
panelPositionRow.connect('notify::selected', (widget) => {
47-
Settings.position_in_panel = widget.selected
49+
this._settings.position_in_panel = widget.selected
4850
})
4951
this.add(panelPositionRow)
5052
}

gitlab-extension@infinicode.de/components/settings/subcomponents/gitlabAccountModelList.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const { Gio, GObject } = imports.gi
55

66
const { GitlabAccountItem } = Me.imports.components.settings.subcomponents.gitlabAccountItem
77

8-
const { Settings, GITLAB_ACCOUNTS, DEFAULT_GITLAB_DATA } = Me.imports.helpers.settings
8+
const { SettingsHandler, GITLAB_ACCOUNTS, DEFAULT_GITLAB_DATA } = Me.imports.helpers.settings
99
const { Translations } = Me.imports.helpers.translations
1010

1111
const SETTING_KEYS_TO_REFRESH = [
@@ -23,10 +23,12 @@ var GitlabAccountModelList = GObject.registerClass({
2323
constructor () {
2424
super()
2525

26+
this._settings = new SettingsHandler()
27+
2628
this.#items = this.convert_items()
2729

2830
this.#changedId =
29-
Settings.connect('changed', (value, key) => {
31+
this._settings.connect('changed', (value, key) => {
3032
if (!SETTING_KEYS_TO_REFRESH.includes(key)) {
3133
return
3234
}
@@ -40,7 +42,7 @@ var GitlabAccountModelList = GObject.registerClass({
4042
}
4143

4244
convert_items () {
43-
return Settings.gitlab_accounts.map(item => {
45+
return this._settings.gitlab_accounts.map(item => {
4446
const gitlabAccountItem = new GitlabAccountItem()
4547

4648
gitlabAccountItem.id = item.id || Gio.dbus_generate_guid()
@@ -129,7 +131,7 @@ var GitlabAccountModelList = GObject.registerClass({
129131
}
130132

131133
save_items () {
132-
Settings.gitlab_accounts = this.#items
134+
this._settings.gitlab_accounts = this.#items
133135
}
134136

135137
vfunc_get_item_type () {

gitlab-extension@infinicode.de/components/settings/subcomponents/gitlabAccountRow.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const { Adw, Gdk, Gio, GLib, GObject, Gtk, Pango } = imports.gi
55
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain'])
66
const _ = Gettext.gettext
77

8-
const { Settings, SETTINGS_SCHEMA_DOMAIN } = Me.imports.helpers.settings
8+
const { SettingsHandler, SETTINGS_SCHEMA_DOMAIN } = Me.imports.helpers.settings
99
const { initTranslations, Translations } = Me.imports.helpers.translations
1010

1111
var GitlabAccountRow = GObject.registerClass({

0 commit comments

Comments
 (0)