Skip to content

Commit 3b02708

Browse files
committed
bugfix: Fix issues discovered in admin interface and in logs
1 parent ec0ad44 commit 3b02708

5 files changed

Lines changed: 16 additions & 16 deletions

File tree

modules/infra/src/main/scala/scaladex/infra/github/GithubModel.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ object GithubModel:
152152
for
153153
endCursor <- cursor.downField("pageInfo").downField("endCursor").as[Option[String]]
154154
hasNextPage <- cursor.downField("pageInfo").downField("hasNextPage").as[Boolean]
155-
nodes <- cursor.downField("nodes").as[Seq[T]]
155+
nodes <- cursor.downField("nodes").as[Seq[Option[T]]].map(_.flatten)
156156
yield GraphQLPage(endCursor, hasNextPage, nodes)
157157

158158
case class UserInfo(login: String, name: Option[String], avatarUrl: String):

modules/server/src/main/resources/reference.conf

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@ scaladex {
1717
}
1818
}
1919

20-
akka {
21-
loggers = [akka.event.slf4j.Slf4jLogger]
20+
pekko {
21+
loggers = [org.apache.pekko.event.slf4j.Slf4jLogger]
2222
loglevel = INFO
2323
http.server {
2424
idle-timeout = 30s
2525
}
2626
http.parsing.illegal-header-warnings = off
27-
# The following is available in 10.1.x only
28-
# http.parsing.ignore-illegal-header-for = ["user-agent", "accept-language"]
2927
}

modules/server/src/main/scala/scaladex/server/route/ProjectPages.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class ProjectPages(
8585
artifactsParams { params =>
8686
getProjectOrRedirect(ref, user) { project =>
8787
val artifactsF = database.getProjectArtifacts(ref, artifactName, params.stableOnly)
88-
val headerF = projectService.getHeader(project).map(_.get)
88+
val headerF = projectService.getHeader(project)
8989
for artifacts <- artifactsF; header <- headerF yield
9090
val binaryVersions = artifacts
9191
.map(_.binaryVersion)
@@ -314,10 +314,12 @@ class ProjectPages(
314314

315315
private def getBadges(ref: Project.Reference, user: Option[UserState]): Route =
316316
getProjectOrRedirect(ref, user) { project =>
317-
for header <- projectService.getHeader(project).map(_.get) yield
318-
val artifact = header.getDefaultArtifact(None, None)
319-
val page = html.badges(env, user, project, header, artifact)
320-
complete(StatusCodes.OK, page)
317+
for header <- projectService.getHeader(project) yield header.flatMap(_.getDefaultArtifact(None, None)) match
318+
case Some(artifact) =>
319+
val page = html.badges(env, user, project, header, artifact)
320+
complete(StatusCodes.OK, page)
321+
case None =>
322+
complete(StatusCodes.NotFound)
321323
}
322324

323325
private val editForm: Directive1[Project.Settings] =

modules/template/src/main/twirl/scaladex/view/project/badges.scala.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
env: Env,
1414
user: Option[UserState],
1515
project: Project,
16-
header: ProjectHeader,
16+
header: Option[ProjectHeader],
1717
artifact: Artifact
1818
)
1919
@main(env, title = project.repository.value, user, extraMeta = project.twitterCard.toHeadMeta, extraMetaProperty = project.ogp.toHeadMetaProperty) {
2020
<main id="container-project">
21-
@headproject(env, user, project, Some(header), ProjectTab.Badges)
21+
@headproject(env, user, project, header, ProjectTab.Badges)
2222
<div class="container">
2323
<div class="content-project box project-badges">
2424
<section class="badge-section" id="latest">
@@ -27,7 +27,7 @@ <h2>Latest version</h2>
2727
<pre aria-label="Badge markdown" id="badge-markdown">[![@artifact.name Scala version support](@artifact.latestBadgeUrl(env))](@artifact.fullHttpUrl(env))</pre>
2828
<button class="btn btn-primary btn-copy pull-right" data-clipboard-target="badge-markdown">Copy Markdown</button>
2929
</section>
30-
@header.platforms(artifact.name).map { platform =>
30+
@header.flatMap(_.platforms(artifact.name)).map { platform =>
3131
<section class="badge-section" id="@platform">
3232
<h2>@platform badge</h2>
3333
<img src="@artifact.badgeUrl(env, Some(platform))" />

modules/template/src/main/twirl/scaladex/view/project/versions.scala.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
env: Env,
1616
user: Option[UserState],
1717
project: Project,
18-
header: ProjectHeader,
18+
header: Option[ProjectHeader],
1919
artifactName: Artifact.Name,
2020
allBinaryVersions: Seq[BinaryVersion],
2121
artifactByVersions: SortedMap[(Instant, Version), Seq[Artifact]],
@@ -24,7 +24,7 @@
2424

2525
@main(env, title = project.repository.toString, user) {
2626
<main id="container-project">
27-
@headproject(env, user, project, Some(header), ProjectTab.Versions)
27+
@headproject(env, user, project, header, ProjectTab.Versions)
2828
<div class="container">
2929
<div class="content-project versions box" data-organization="@project.reference.organization"
3030
data-repository="@project.reference.repository">
@@ -34,7 +34,7 @@ <h2>
3434
<select class="selectpicker" title="Other Artifacts"
3535
data-style="btn-default" data-selected-text-format="static"
3636
onchange="window.location=this.value">
37-
@for(name <- header.allArtifactNames) {
37+
@for(name <- header.map(_.allArtifactNames).getOrElse(Seq.empty)) {
3838
<option value="@versionsUri(project.reference, name, params)" @if(name == artifactName) {selected}>
3939
@name
4040
</option>

0 commit comments

Comments
 (0)