Skip to content

Commit 729132d

Browse files
committed
Add Ref to frontend
1 parent 1f5445f commit 729132d

File tree

3 files changed

+32
-30
lines changed

3 files changed

+32
-30
lines changed

frontend-laminar/src/main/scala/ru/d10xa/jsonlogviewer/ViewElement.scala

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package ru.d10xa.jsonlogviewer
22

3-
import cats.effect.IO
43
import cats.effect.unsafe.implicits.global
4+
import cats.effect.IO
5+
import cats.effect.Ref
56
import com.monovore.decline.Help
67
import com.raquo.airstream.core.Signal
78
import com.raquo.airstream.eventbus.EventBus
89
import com.raquo.airstream.ownership.Owner
9-
import com.raquo.laminar.DomApi
1010
import com.raquo.laminar.api.L.*
11-
import ru.d10xa.jsonlogviewer.decline.Config
11+
import com.raquo.laminar.DomApi
1212
import ru.d10xa.jsonlogviewer.decline.yaml.ConfigYaml
1313
import ru.d10xa.jsonlogviewer.decline.yaml.Feed
14+
import ru.d10xa.jsonlogviewer.decline.Config
1415

1516
import scala.util.chaining.*
1617

@@ -23,23 +24,16 @@ object ViewElement {
2324
.pipe(DomApi.unsafeParseHtmlString)
2425
.pipe(foreignHtmlElement)
2526

26-
def modifyConfigForInlineInput(string: String, config: Config): Config =
27-
config.copy(configYaml =
28-
Some(
29-
ConfigYaml(
30-
filter = None,
31-
formatIn = None,
32-
commands = None,
33-
feeds = Some(
34-
List(
35-
Feed(
36-
name = None,
37-
commands = List.empty,
38-
inlineInput = Some(string),
39-
filter = config.filter,
40-
formatIn = config.formatIn
41-
)
42-
)
27+
def makeConfigYamlForInlineInput(string: String, config: Config): ConfigYaml =
28+
ConfigYaml(
29+
feeds = Some(
30+
List(
31+
Feed(
32+
name = None,
33+
commands = List.empty,
34+
inlineInput = Some(string),
35+
filter = config.filter,
36+
formatIn = config.formatIn
4337
)
4438
)
4539
)
@@ -54,8 +48,13 @@ object ViewElement {
5448
.combineWith(configSignal)
5549
.foreach {
5650
case (string, Right(c)) =>
57-
LogViewerStream
58-
.stream(modifyConfigForInlineInput(string, c))
51+
val configYamlRefIO =
52+
Ref.of[IO, Option[ConfigYaml]](
53+
Some(makeConfigYamlForInlineInput(string, c))
54+
)
55+
fs2.Stream
56+
.eval(configYamlRefIO)
57+
.flatMap(configYamlRef => LogViewerStream.stream(c, configYamlRef))
5958
.compile
6059
.toList
6160
.map(stringsToHtmlElement)
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package ru.d10xa.jsonlogviewer.decline
22

3+
import cats.effect.std.Supervisor
34
import cats.effect.IO
5+
import cats.effect.Ref
6+
import cats.effect.Resource
7+
import ru.d10xa.jsonlogviewer.decline.yaml.ConfigYaml
48
import ru.d10xa.jsonlogviewer.decline.Config.FormatIn
59

610
class ConfigInitImpl extends ConfigInit {
711

8-
override def initConfig(c: Config): IO[Config] = {
9-
IO.pure(
10-
c.copy(
11-
formatIn = c.formatIn.orElse(Some(FormatIn.Json)),
12-
filter = c.filter
13-
)
14-
)
15-
}
12+
override def initConfigYaml(
13+
c: Config,
14+
supervisor: Supervisor[IO]
15+
): Resource[IO, Ref[IO, Option[ConfigYaml]]] =
16+
Resource.eval(Ref.of(None))
1617
}

json-log-viewer/shared/src/main/scala/ru/d10xa/jsonlogviewer/logfmt/LogFmtTokenParser.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,6 @@ object LogFmtTokenParser extends PackratParsers:
6666
program(reader) match {
6767
case NoSuccess(msg, next) => Left(TokenParserError(msg))
6868
case Success(result, next) => Right(result)
69+
case Failure(msg, _) => Left(TokenParserError(msg))
70+
case Error(msg, _) => Left(TokenParserError(msg))
6971
}

0 commit comments

Comments
 (0)