downloading (almost) and only show when migoto is set

This commit is contained in:
SpikeHD
2022-07-23 23:14:31 -07:00
parent c0740417e3
commit 4f3952aeb1
5 changed files with 36 additions and 15 deletions

View File

@@ -35,7 +35,7 @@ interface IState {
miniDownloadsOpen: boolean miniDownloadsOpen: boolean
downloadsOpen: boolean downloadsOpen: boolean
gameDownloadsOpen: boolean gameDownloadsOpen: boolean
moddingOpen: boolean migotoSet: boolean
} }
export class Main extends React.Component<IProps, IState> { export class Main extends React.Component<IProps, IState> {
@@ -47,7 +47,7 @@ export class Main extends React.Component<IProps, IState> {
miniDownloadsOpen: false, miniDownloadsOpen: false,
downloadsOpen: false, downloadsOpen: false,
gameDownloadsOpen: false, gameDownloadsOpen: false,
moddingOpen: false, migotoSet: false,
} }
listen('lang_error', (payload) => { listen('lang_error', (payload) => {
@@ -94,6 +94,10 @@ export class Main extends React.Component<IProps, IState> {
async componentDidMount() { async componentDidMount() {
const cert_generated = await getConfigOption('cert_generated') const cert_generated = await getConfigOption('cert_generated')
this.setState({
migotoSet: !!(await getConfigOption('migoto_path')),
})
if (!cert_generated) { if (!cert_generated) {
// Generate the certificate // Generate the certificate
await invoke('generate_ca_files', { await invoke('generate_ca_files', {
@@ -129,17 +133,19 @@ export class Main extends React.Component<IProps, IState> {
> >
<img src={downBtn} alt="downloads" /> <img src={downBtn} alt="downloads" />
</div> </div>
<div {this.state.migotoSet && (
id="modsBtn" <div
onClick={() => { id="modsBtn"
// Create and dispatch a custom "openMods" event onClick={() => {
const event = new CustomEvent('changePage', { detail: 'modding' }) // Create and dispatch a custom "openMods" event
window.dispatchEvent(event) const event = new CustomEvent('changePage', { detail: 'modding' })
}} window.dispatchEvent(event)
className="TopButton" }}
> className="TopButton"
<img src={wrenchBtn} alt="mods" /> >
</div> <img src={wrenchBtn} alt="mods" />
</div>
)}
{/* <div id="gameBtn" className="TopButton" onClick={() => this.setState({ gameDownloadsOpen: !this.state.gameDownloadsOpen })}> {/* <div id="gameBtn" className="TopButton" onClick={() => this.setState({ gameDownloadsOpen: !this.state.gameDownloadsOpen })}>
<img src={gameBtn} alt="game" /> <img src={gameBtn} alt="game" />
</div> */} </div> */}

View File

@@ -1,5 +1,6 @@
import React from 'react' import React from 'react'
import DownloadHandler from '../utils/download' import DownloadHandler from '../utils/download'
import { ModData } from '../utils/gamebanana'
import { ModHeader } from './components/mods/ModHeader' import { ModHeader } from './components/mods/ModHeader'
import { ModList } from './components/mods/ModList' import { ModList } from './components/mods/ModList'
import TopBar from './components/TopBar' import TopBar from './components/TopBar'
@@ -46,6 +47,10 @@ export class Mods extends React.Component<IProps, IState> {
return return
} }
async addDownload(mod: ModData) {
console.log('Downloading:', mod.name)
}
async setCategory(value: string) { async setCategory(value: string) {
this.setState({ this.setState({
category: value, category: value,
@@ -59,7 +64,7 @@ export class Mods extends React.Component<IProps, IState> {
<ModHeader onChange={this.setCategory} headers={headers} defaultHeader={'hot'} /> <ModHeader onChange={this.setCategory} headers={headers} defaultHeader={'hot'} />
<ModList mode={this.state.category} /> <ModList mode={this.state.category} addDownload={this.addDownload} />
</div> </div>
) )
} }

View File

@@ -7,6 +7,7 @@ import { ModTile } from './ModTile'
interface IProps { interface IProps {
mode: string mode: string
addDownload: (mod: ModData) => void
} }
interface IState { interface IState {
@@ -16,6 +17,8 @@ interface IState {
export class ModList extends React.Component<IProps, IState> { export class ModList extends React.Component<IProps, IState> {
constructor(props: IProps) { constructor(props: IProps) {
super(props) super(props)
this.downloadMod = this.downloadMod.bind(this)
} }
async componentDidMount() { async componentDidMount() {
@@ -28,13 +31,17 @@ export class ModList extends React.Component<IProps, IState> {
}) })
} }
async downloadMod(mod: ModData) {
this.props.addDownload(mod)
}
render() { render() {
return ( return (
<div className="ModList"> <div className="ModList">
{this.state && this.state.modList ? ( {this.state && this.state.modList ? (
<div className="ModListInner"> <div className="ModListInner">
{this.state.modList.map((mod: ModData) => ( {this.state.modList.map((mod: ModData) => (
<ModTile mod={mod} key={mod.id} /> <ModTile mod={mod} key={mod.id} onClick={this.downloadMod} />
))} ))}
</div> </div>
) : ( ) : (

View File

@@ -8,6 +8,7 @@ import Download from '../../../resources/icons/download.svg'
interface IProps { interface IProps {
mod: ModData mod: ModData
onClick: (mod: ModData) => void
} }
interface IState { interface IState {
@@ -31,6 +32,7 @@ export class ModTile extends React.Component<IProps, IState> {
className="ModListItem" className="ModListItem"
onMouseEnter={() => this.setState({ hover: true })} onMouseEnter={() => this.setState({ hover: true })}
onMouseLeave={() => this.setState({ hover: false })} onMouseLeave={() => this.setState({ hover: false })}
onClick={() => this.props.onClick(mod)}
> >
<span className="ModName">{mod.name}</span> <span className="ModName">{mod.name}</span>
<span className="ModAuthor">{mod.submitter.name}</span> <span className="ModAuthor">{mod.submitter.name}</span>

1
src/utils/mods.ts Normal file
View File

@@ -0,0 +1 @@
export {}