diff --git a/src/main/scala/ocelot/desktop/ui/widget/help/UpdateCheckerDialog.scala b/src/main/scala/ocelot/desktop/ui/widget/help/UpdateCheckerDialog.scala index 2216679..99f9169 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/help/UpdateCheckerDialog.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/help/UpdateCheckerDialog.scala @@ -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) => diff --git a/src/main/scala/ocelot/desktop/util/OcelotOnlineAPI.scala b/src/main/scala/ocelot/desktop/util/OcelotOnlineAPI.scala index a55e2af..5e43645 100644 --- a/src/main/scala/ocelot/desktop/util/OcelotOnlineAPI.scala +++ b/src/main/scala/ocelot/desktop/util/OcelotOnlineAPI.scala @@ -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]) }