Fixes some UI desync
This commit is contained in:
parent
dd37c07485
commit
c06176c900
7 changed files with 41 additions and 32 deletions
|
@ -1,3 +1,3 @@
|
|||
class Consts {
|
||||
static const VERSION = "1.1.112324.1636";
|
||||
static const VERSION = "1.1.112324.1707";
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import 'package:servermanager/pages/ModManager.dart';
|
|||
import 'package:servermanager/pages/autorestart.dart';
|
||||
import 'package:servermanager/pages/home.dart';
|
||||
import 'package:servermanager/pages/snapshots.dart';
|
||||
import 'package:servermanager/structs/credentials.dart';
|
||||
import 'package:servermanager/structs/settings.dart';
|
||||
|
||||
import 'pages/ServerSettings.dart';
|
||||
|
@ -106,6 +107,17 @@ class ServerPage extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
// Make a temporary fake user for action logging
|
||||
if (login.username == settings.superuser.name) {
|
||||
settings.loggedInUser = settings.superuser;
|
||||
} else {
|
||||
for (User usr in settings.inst!.admins) {
|
||||
if (usr.name == login.username) {
|
||||
settings.loggedInUser = usr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Navigator.pushNamed(context, "/home");
|
||||
} else {
|
||||
print("Login not valid");
|
||||
|
|
|
@ -353,16 +353,6 @@ class C2SUploadSettingsPacket implements IPacket {
|
|||
|
||||
if (!performRestart) {
|
||||
return PacketResponse.nil;
|
||||
} else {
|
||||
// Send a webhook with all the mods listed
|
||||
String modListText = "";
|
||||
for (var entry in settings.inst!.mods) {
|
||||
modListText += "${entry.mod_name}\n";
|
||||
}
|
||||
|
||||
modListText = modListText.trim();
|
||||
DiscordHookHelper.sendWebHook(settings.inst!.discord,
|
||||
DiscordHookProps.INACTIVE, "Mod List Updated", modListText);
|
||||
}
|
||||
|
||||
// Check if server is running, if not, stop immediately
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:servermanager/structs/discordHookHelper.dart';
|
||||
|
||||
import '../structs/mod.dart';
|
||||
import '../structs/settings.dart';
|
||||
|
@ -26,22 +27,25 @@ class ModManagerState extends State<ModManager> {
|
|||
onPressed: () {
|
||||
for (Mod M in settings.inst!.mods) {
|
||||
M.enabled = false;
|
||||
|
||||
settings.loggedInUser!
|
||||
.sendDiscordActionLog("${M.mod_name} was disabled");
|
||||
;
|
||||
}
|
||||
|
||||
setState(() {
|
||||
settings.restartRequired = true;
|
||||
});
|
||||
setState(() {});
|
||||
},
|
||||
icon: Icon(Icons.swipe_down)),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
for (Mod M in settings.inst!.mods) {
|
||||
M.enabled = true;
|
||||
|
||||
settings.loggedInUser!
|
||||
.sendDiscordActionLog("${M.mod_name} was enabled");
|
||||
}
|
||||
|
||||
setState(() {
|
||||
settings.restartRequired = true;
|
||||
});
|
||||
setState(() {});
|
||||
},
|
||||
icon: Icon(Icons.swipe_up))
|
||||
],
|
||||
|
@ -60,7 +64,8 @@ class ModManagerState extends State<ModManager> {
|
|||
} while (i < end - oldIndex);
|
||||
settings.inst!.mods[end] = item;
|
||||
|
||||
settings.restartRequired = true;
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Reordered Mod List\n\n${item.mod_name} is now in load order ${end}");
|
||||
} else if (oldIndex > newIndex) {
|
||||
//From bottom to top
|
||||
Mod item = settings.inst!.mods[oldIndex];
|
||||
|
@ -68,10 +73,12 @@ class ModManagerState extends State<ModManager> {
|
|||
settings.inst!.mods[i] = settings.inst!.mods[i - 1];
|
||||
}
|
||||
settings.inst!.mods[newIndex] = item;
|
||||
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Reordered Mod List\n\n${item.mod_name} is now in load order ${newIndex}");
|
||||
}
|
||||
setState(() {
|
||||
settings.Write();
|
||||
settings.restartRequired = true;
|
||||
});
|
||||
},
|
||||
itemBuilder: (ctx, idx) {
|
||||
|
@ -98,15 +105,18 @@ class ModManagerState extends State<ModManager> {
|
|||
ModEditReturnArgs MERA = reply as ModEditReturnArgs;
|
||||
if (MERA.delete) {
|
||||
setState(() {
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Deleted Mod: ${settings.inst!.mods[idx].mod_name}");
|
||||
|
||||
settings.inst!.mods.removeAt(idx);
|
||||
settings.restartRequired = true;
|
||||
});
|
||||
return;
|
||||
}
|
||||
setState(() {
|
||||
settings.inst!.mods[idx] = MERA.mod!;
|
||||
|
||||
settings.restartRequired = true;
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Edited Mod: ${MERA.mod!.mod_name}");
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -127,9 +137,10 @@ class ModManagerState extends State<ModManager> {
|
|||
|
||||
setState(() {
|
||||
settings.inst!.mods.add(MERA.mod!);
|
||||
|
||||
settings.restartRequired = true;
|
||||
});
|
||||
|
||||
settings.loggedInUser!
|
||||
.sendDiscordActionLog("Added Mod: ${MERA.mod!.mod_name}");
|
||||
}
|
||||
},
|
||||
),
|
||||
|
|
|
@ -128,11 +128,9 @@ class HomePageState extends State<HomePage> {
|
|||
|
||||
C2SUploadSettingsPacket upload = C2SUploadSettingsPacket();
|
||||
upload.srvSettings = settings.serialize();
|
||||
upload.performRestart =
|
||||
requireRestart || settings.restartRequired;
|
||||
upload.performRestart = requireRestart;
|
||||
|
||||
await settings.client!.send(upload,
|
||||
settings.restartRequired ? false : !requireRestart);
|
||||
await settings.client!.send(upload, !requireRestart);
|
||||
Settings.Clear();
|
||||
|
||||
setState(() {});
|
||||
|
@ -143,7 +141,7 @@ class HomePageState extends State<HomePage> {
|
|||
},
|
||||
),
|
||||
SwitchListTile(
|
||||
value: requireRestart || settings.restartRequired,
|
||||
value: requireRestart,
|
||||
onChanged: (V) {
|
||||
setState(() {
|
||||
requireRestart = V;
|
||||
|
@ -151,7 +149,7 @@ class HomePageState extends State<HomePage> {
|
|||
},
|
||||
title: Text("Perform Restart"),
|
||||
subtitle: Text(
|
||||
"Whether a immediate server restart should be performed in combination with this wrapper settings update${settings.restartRequired ? "\n** A RESTART IS REQUIRED DUE TO MOD LIST CHANGES" : ""}"),
|
||||
"Whether a immediate server restart should be performed in combination with this wrapper settings update"),
|
||||
)
|
||||
],
|
||||
)),
|
||||
|
|
|
@ -45,8 +45,6 @@ class Settings {
|
|||
|
||||
StateMachine subsys = StateMachine();
|
||||
|
||||
bool restartRequired = false;
|
||||
|
||||
factory Settings() {
|
||||
return Instance;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
|||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 1.1.112324+1636
|
||||
version: 1.1.112324+1707
|
||||
|
||||
environment:
|
||||
sdk: ">=3.1.4 <4.0.0"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue