mirror of
https://github.com/OpenFactorioServerManager/factorio-server-manager.git
synced 2025-02-13 13:59:49 +02:00
only compatible mod-updates and downgrades
This commit is contained in:
parent
fe88e09eb9
commit
41708ee924
@ -440,11 +440,17 @@ func FactorioVersion(w http.ResponseWriter, r *http.Request) {
|
||||
Success: true,
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json;charset=UTF-8")
|
||||
|
||||
status := map[string]string{}
|
||||
status["version"] = FactorioServ.Version
|
||||
status["base_mod_version"] = FactorioServ.BaseModVersion
|
||||
|
||||
resp.Data = status
|
||||
|
||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||
log.Printf("Error loading Factorio Version: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
|
@ -59,8 +59,10 @@ class App extends React.Component {
|
||||
dataType: "json",
|
||||
success: (data) => {
|
||||
if (data.success === true) {
|
||||
this.setState({loggedIn: true,
|
||||
username: data.data.Username})
|
||||
this.setState({
|
||||
loggedIn: true,
|
||||
username: data.data.Username
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -115,11 +117,13 @@ class App extends React.Component {
|
||||
}
|
||||
|
||||
getFactorioVersion() {
|
||||
$:ajax({
|
||||
$.ajax({
|
||||
url: "/api/server/facVersion",
|
||||
dataType: "json",
|
||||
// dataType: "json",
|
||||
success: (data) => {
|
||||
|
||||
this.setState({
|
||||
factorioVersion: data.data.base_mod_version
|
||||
});
|
||||
},
|
||||
error: (xhr, status, err) => {
|
||||
console.log('api/server/status', status, err.toString());
|
||||
@ -149,16 +153,19 @@ class App extends React.Component {
|
||||
// Render react-router components and pass in props
|
||||
{React.cloneElement(
|
||||
this.props.children,
|
||||
{message: "",
|
||||
messages: this.state.messages,
|
||||
flashMessage: this.flashMessage,
|
||||
facServStatus: this.facServStatus,
|
||||
serverStatus: this.state.serverStatus,
|
||||
getStatus: this.getStatus,
|
||||
saves: this.state.saves,
|
||||
getSaves: this.getSaves,
|
||||
username: this.state.username,
|
||||
socket: this.socket}
|
||||
{
|
||||
message: "",
|
||||
messages: this.state.messages,
|
||||
flashMessage: this.flashMessage,
|
||||
facServStatus: this.facServStatus,
|
||||
serverStatus: this.state.serverStatus,
|
||||
factorioVersion: this.state.factorioVersion,
|
||||
getStatus: this.getStatus,
|
||||
saves: this.state.saves,
|
||||
getSaves: this.getSaves,
|
||||
username: this.state.username,
|
||||
socket: this.socket
|
||||
}
|
||||
)}
|
||||
|
||||
<Footer />
|
||||
|
@ -1,4 +1,5 @@
|
||||
import React from 'react';
|
||||
import SemVer from 'semver';
|
||||
|
||||
class Mod extends React.Component {
|
||||
constructor(props) {
|
||||
@ -35,11 +36,19 @@ class Mod extends React.Component {
|
||||
success: (data) => {
|
||||
let newData = JSON.parse(data.data);
|
||||
//get newest COMPATIBLE release
|
||||
let newestRelease;
|
||||
newData.releases.forEach((release) => {
|
||||
console.log(release);
|
||||
})
|
||||
let newestRelease = newData.releases[newData.releases.length - 1];
|
||||
if(newestRelease.version != this.props.mod.version) {
|
||||
//TODO change to info_json dependency (when mod-portal-api is working again)
|
||||
if(SemVer.satisfies(this.props.factorioVersion, release.info_json.factorio_version + ".x")) {
|
||||
if(!newestRelease) {
|
||||
newestRelease = release;
|
||||
} else if(SemVer.gt(release.version, newestRelease.version)) {
|
||||
newestRelease = release;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(newestRelease && newestRelease.version != this.props.mod.version) {
|
||||
if(this.props.updateCountAdd)
|
||||
this.props.updateCountAdd();
|
||||
|
||||
@ -47,7 +56,8 @@ class Mod extends React.Component {
|
||||
newVersionAvailable: true,
|
||||
newVersion: {
|
||||
downloadUrl: newestRelease.download_url,
|
||||
file_name: newestRelease.file_name
|
||||
file_name: newestRelease.file_name,
|
||||
version: newestRelease.version
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@ -87,6 +97,13 @@ class Mod extends React.Component {
|
||||
|
||||
let version;
|
||||
if(this.state.newVersionAvailable) {
|
||||
let faArrow;
|
||||
if(SemVer.gt(this.state.newVersion.version, this.props.mod.version)) {
|
||||
faArrow = "fa fa-arrow-circle-up";
|
||||
} else {
|
||||
faArrow = "fa fa-arrow-circle-down";
|
||||
}
|
||||
|
||||
version = <span>{this.props.mod.version}
|
||||
<a className="btn btn-xs btn-default update-button"
|
||||
style={{
|
||||
@ -108,7 +125,7 @@ class Mod extends React.Component {
|
||||
this.state.updateInProgress ?
|
||||
<div className='loader' style={{width: 15, height: 15, marginRight: 0, borderWidth: 3,}}></div>
|
||||
:
|
||||
<i className="fa fa-arrow-circle-up" title="Update Mod" style={{fontSize: "15pt"}}></i>
|
||||
<i className={faArrow} title="Update Mod" style={{fontSize: "15pt"}}></i>
|
||||
}
|
||||
</a>
|
||||
</span>;
|
||||
|
@ -446,6 +446,7 @@ class ModPackOverview extends React.Component {
|
||||
</div>
|
||||
<div className="box-body">
|
||||
<ModManager
|
||||
{...this.props}
|
||||
installedMods={modpack.mods.mods}
|
||||
deleteMod={this.modPackDeleteModHandler}
|
||||
toggleMod={this.modPackToggleModHandler}
|
||||
|
@ -530,6 +530,7 @@ class ModsContent extends React.Component {
|
||||
<section className="content">
|
||||
<ModOverview
|
||||
{...this.state}
|
||||
{...this.props}
|
||||
loadDownloadList={this.loadDownloadList}
|
||||
submitFactorioLogin={this.handlerFactorioLogin}
|
||||
toggleMod={this.toggleModHandler}
|
||||
|
@ -21,7 +21,8 @@
|
||||
"react-dom": "^15.0.1",
|
||||
"react-native-listener": "^1.0.2",
|
||||
"react-router": "^2.3.0",
|
||||
"sweetalert": "^1.1.3"
|
||||
"sweetalert": "^1.1.3",
|
||||
"semver": "latest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"css-loader": "^0.23.1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user