Skip to content

Commit 4a5ca2e

Browse files
committed
Move mod repository adding to a new tab using the new INPUT_FIELD option
1 parent aec7a14 commit 4a5ca2e

7 files changed

Lines changed: 117 additions & 216 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99
- Added new mod option type `INPUT_FIELD`
1010

11+
### Changed
12+
13+
- Move repository adding from a popup to a separate tab in CCModManager's options
14+
1115
### Fixed
1216

1317
- Improve browser compatibility

src/gui/list.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ import { ModEntry } from '../types'
22
import { ModDB } from '../moddb'
33
import { Fliters, createFuzzyFilteredModList } from '../filters'
44
import { LocalMods } from '../local-mods'
5-
import './list-entry'
6-
import './repo-add'
75
import { InstallQueue } from '../mod-installer'
86
import { Lang } from '../lang-manager'
97
import { Opts } from '../options'
108
import { isFullMode } from '../plugin'
9+
import './list-entry'
1110

1211
declare global {
1312
namespace modmanager.gui {

src/gui/menu.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ declare global {
4343
checkUpdatesButton: sc.ButtonGui
4444
filtersButton: sc.ButtonGui
4545
filtersPopup: modmanager.gui.FiltersPopup
46-
reposPopup: modmanager.gui.RepoAddPopup
4746
changelogButton: sc.ButtonGui
4847
changelogPopup?: modmanager.gui.Changelog
4948

@@ -544,10 +543,6 @@ modmanager.gui.Menu = sc.ListInfoMenu.extend({
544543
sc.menu.pushMenu(sc.MENU_SUBMENU.MOD_OPTIONS)
545544
modmanager.gui.optionsMenu.updateEntries(mod)
546545
},
547-
openRepositoriesPopup() {
548-
this.reposPopup ??= new modmanager.gui.RepoAddPopup()
549-
this.reposPopup.show()
550-
},
551546
openChangelogPopup(mod) {
552547
this.changelogPopup ??= new modmanager.gui.Changelog()
553548
this.changelogPopup.setMod(mod)

src/gui/repo-add.ts

Lines changed: 0 additions & 182 deletions
This file was deleted.

src/moddb.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ModEntry, ModEntryLocal, ModEntryServer, NPDatabase } from './types'
22
import { FileCache } from './cache'
33
import { Opts } from './options'
44
import { semver } from './library-providers'
5+
import { modDatabasesToInputFields } from './repo-add'
56

67
export class ModDB {
78
private static databasesLoaded: boolean = false
@@ -26,6 +27,7 @@ export class ModDB {
2627
}
2728

2829
ModDB.testingOptInModIds = new Set(Opts.testingOptInMods)
30+
modDatabasesToInputFields()
2931
}
3032

3133
static repoURLToFileName(url: string): string {

src/options.ts

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { FileCache } from './cache'
22
import { ModInstallDialogs } from './gui/install-dialogs'
3+
import { modDatabasesToInputFields, repoChangeEvent, repoIsValid } from './repo-add'
34
import { Lang } from './lang-manager'
45
import { LocalMods } from './local-mods'
56
import { InstallQueue } from './mod-installer'
@@ -21,33 +22,6 @@ export function registerOpts() {
2122
type: 'CHECKBOX',
2223
init: true,
2324
},
24-
repositoriesButton: {
25-
type: 'BUTTON',
26-
onPress() {
27-
modmanager.gui.menu.openRepositoriesPopup()
28-
},
29-
},
30-
resetRepositoriesButton: {
31-
type: 'BUTTON',
32-
onPress() {
33-
Opts.repositories = Opts.flatOpts.repositories.init
34-
sc.Dialogs.showInfoDialog(Lang.opts.resetRepositoriesButton.onclickPopup)
35-
},
36-
},
37-
38-
repositories: {
39-
type: 'JSON_DATA',
40-
init: ['@CCDirectLink/CCModDB/stable', '@CCDirectLink/CCModDB/testing'] as string[],
41-
changeEvent() {
42-
if (!ig.game) return
43-
44-
ModDB.loadDatabases(true)
45-
46-
ModDB.loadAllMods(false).then(() => {
47-
LocalMods.refreshOrigin()
48-
})
49-
},
50-
},
5125
testingOptInMods: {
5226
type: 'JSON_DATA',
5327
init: [] as string[],
@@ -127,6 +101,52 @@ export function registerOpts() {
127101
},
128102
},
129103
},
104+
repositories: {
105+
settings: {
106+
tabIcon: 'interface',
107+
title: 'Repositories',
108+
},
109+
headers: {
110+
repositories: {
111+
resetRepositoriesButton: {
112+
type: 'BUTTON',
113+
onPress() {
114+
Opts.repositories = Opts.flatOpts.repositories.init
115+
modDatabasesToInputFields()
116+
117+
if (sc.menu?.currentMenu == sc.MENU_SUBMENU?.MOD_OPTIONS) {
118+
modmanager.gui.optionsMenu.reopenMenu()
119+
}
120+
sc.Dialogs.showInfoDialog(Lang.opts.resetRepositoriesButton.onclickPopup)
121+
},
122+
},
123+
124+
repositories: {
125+
type: 'JSON_DATA',
126+
init: ['@CCDirectLink/CCModDB/stable', '@CCDirectLink/CCModDB/testing'] as string[],
127+
changeEvent() {
128+
if (!ig.game) return
129+
130+
ModDB.loadDatabases(true)
131+
132+
ModDB.loadAllMods(false).then(() => {
133+
LocalMods.refreshOrigin()
134+
})
135+
},
136+
},
137+
// prettier-ignore
138+
...{
139+
inputFieldRepo0: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
140+
inputFieldRepo1: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
141+
inputFieldRepo2: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
142+
inputFieldRepo3: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
143+
inputFieldRepo4: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
144+
inputFieldRepo5: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
145+
inputFieldRepo6: { type: 'INPUT_FIELD', init: '', changeEvent: repoChangeEvent, isValid: repoIsValid },
146+
},
147+
},
148+
},
149+
},
130150
} as const satisfies Options
131151
Opts = modmanager.registerAndGetModOptions(
132152
{

0 commit comments

Comments
 (0)