Make Version object safer

This commit is contained in:
UnicornFreedom 2023-10-14 18:40:20 +02:00
parent a1eb9bbbda
commit 6c622446e8
2 changed files with 40 additions and 27 deletions

View File

@ -48,39 +48,52 @@ class UpdateCheckerDialog extends ModalDialog with Logging {
OcelotOnlineAPI.checkRemoteVersion {
case Success(version) =>
setContainerChildren(ArraySeq.empty)
container.children :+= new Label(s"Release: ${BuildInfo.version} ${version.releaseVersion.drop(1)}")
if (version.releaseVersion.drop(1) == BuildInfo.version) {
container.children :+= new PaddingBox(new Label("Up to date!", small = true), Padding2D(6))
} else {
container.children :+= new PaddingBox(new Label("New release version is available:", small = true), Padding2D(6))
if (Desktop.isDesktopSupported) {
container.children :+= new PaddingBox(new Button {
override def text: String = "Download"
override def onClick(): Unit = Desktop.getDesktop.browse(new URI("https://ocelot.fomalhaut.me/desktop"))
}, Padding2D(6))
if (version.releaseVersion.isDefined) {
val newReleaseVersion = version.releaseVersion.get.drop(1)
container.children :+= new Label(s"Release: ${BuildInfo.version} ${newReleaseVersion}")
if (newReleaseVersion == BuildInfo.version) {
container.children :+= new PaddingBox(new Label("Up to date!", small = true), Padding2D(6))
} else {
container.children :+= new PaddingBox(new Label("https://ocelot.fomalhaut.me/desktop", small = true), Padding2D(6))
container.children :+= new PaddingBox(new Label("New release version is available:", small = true), Padding2D(6))
if (Desktop.isDesktopSupported) {
container.children :+= new PaddingBox(new Button {
override def text: String = "Download"
override def onClick(): Unit = Desktop.getDesktop.browse(new URI("https://ocelot.fomalhaut.me/desktop"))
}, Padding2D(6))
} else {
container.children :+= new PaddingBox(new Label("https://ocelot.fomalhaut.me/desktop", small = true), Padding2D(6))
}
}
} else {
container.children :+= new Label("Release: N\\A")
}
container.children :+= new Filler {
override def minimumSize: Size2D = Size2D(8, 16)
}
container.children :+= new Label(s"Dev build: ${BuildInfo.commit.take(7)} ${version.devId.take(7)}")
if (BuildInfo.commit.take(7) == version.devId.take(7)) {
container.children :+= new PaddingBox(new Label("Up to date!", small = true), Padding2D(6))
} else {
container.children :+= new PaddingBox(
new Label(s"New dev build from ${version.devDate.withZoneSameInstant(ZoneId.systemDefault()).format(dateFormat)}:", small = true)
, Padding2D(4))
if (Desktop.isDesktopSupported) {
container.children :+= new PaddingBox(new Button {
override def text: String = "Download"
override def onClick(): Unit = Desktop.getDesktop.browse(new URI("https://ocelot.fomalhaut.me/desktop"))
}, Padding2D(6))
if (version.devId.isDefined && version.devDate.isDefined) {
val newDevVersion = version.devId.get.take(7)
container.children :+= new Label(s"Dev build: ${BuildInfo.commit.take(7)} ${newDevVersion}")
if (BuildInfo.commit.take(7) == newDevVersion) {
container.children :+= new PaddingBox(new Label("Up to date!", small = true), Padding2D(6))
} else {
container.children :+= new PaddingBox(new Label("https://ocelot.fomalhaut.me/desktop", small = true), Padding2D(6))
container.children :+= new PaddingBox(
new Label(s"New dev build from ${version.devDate.get.withZoneSameInstant(ZoneId.systemDefault()).format(dateFormat)}:", small = true)
, Padding2D(4))
if (Desktop.isDesktopSupported) {
container.children :+= new PaddingBox(new Button {
override def text: String = "Download"
override def onClick(): Unit = Desktop.getDesktop.browse(new URI("https://ocelot.fomalhaut.me/desktop"))
}, Padding2D(6))
} else {
container.children :+= new PaddingBox(new Label("https://ocelot.fomalhaut.me/desktop", small = true), Padding2D(6))
}
}
} else {
container.children :+= new Label("Dev build: N\\A")
}
case Failure(exception) =>

View File

@ -24,8 +24,8 @@ object OcelotOnlineAPI {
val releaseVersion = RegexReleaseVersion.findFirstMatchIn(response).map(_.group(1))
val releaseDate = RegexReleaseDate.findFirstMatchIn(response).map(_.group(1))
val version = Version(
devId.orNull, devDate.map(it => ZonedDateTime.parse(it)).orNull,
releaseVersion.orNull, releaseDate.map(it => ZonedDateTime.parse(it)).orNull
devId, devDate.map(it => ZonedDateTime.parse(it)),
releaseVersion, releaseDate.map(it => ZonedDateTime.parse(it))
)
source.close()
@ -45,5 +45,5 @@ object OcelotOnlineAPI {
}
}
case class Version(devId: String, devDate: ZonedDateTime, releaseVersion: String, releaseDate: ZonedDateTime)
case class Version(devId: Option[String], devDate: Option[ZonedDateTime], releaseVersion: Option[String], releaseDate: Option[ZonedDateTime])
}