Skip to content
This repository was archived by the owner on Mar 17, 2026. It is now read-only.

Bug 2026039391: Fehler unendlicher Loading-Screen bei Restart der Application - #52

Open
NVNKL wants to merge 2 commits into
masterfrom
bug-2026039391-restart-loading-loop
Open

Bug 2026039391: Fehler unendlicher Loading-Screen bei Restart der Application#52
NVNKL wants to merge 2 commits into
masterfrom
bug-2026039391-restart-loading-loop

Conversation

@NVNKL

@NVNKL NVNKL commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

Infos

  • HtmlClient wird erst neu gebaut, wenn FrameworkSystemsGmbH/fs#1780 gemerged wurde.
  • Version Bump wurde dort auch bereits gemacht.

Problem

Die login()-Methode im broker.service.ts hat kein fireLoadingChanged(false) nach der Verarbeitung der Response. Beim Erstlogin fällt das nicht auf, weil die ViewerComponent zu dem Zeitpunkt noch nicht existiert (User ist auf der Login-Seite). Der _onLoadingChanged$$ ist ein Subject, kein BehaviorSubject — die ViewerComponent bekommt also nur Emissionen, die nach seiner Subscription kommen.

Beim Restart ist die ViewerComponent aber bereits aktiv und subscribed:

fireLoadingChanged(false) → isLoading = false
doRequest() → fireLoadingChanged(true) → isLoading = true
Kein fireLoadingChanged(false) kommt → isLoading bleibt permanent true

Warum keine Umstellung auf BehaviorSubject?

Subject: Neue Subscriber bekommen nur zukünftige Emissionen.
BehaviorSubject: Neue Subscriber bekommen sofort den letzten Wert bei Subscription.

Konkrete Auswirkung

Der ViewerComponent subscribed sich in ngOnInit auf onLoadingChangedDelayed:

Erstlogin: login() → doRequest() → fireLoadingChanged(true) → Response verarbeitet → onAfterResponse() → showViewer() → ViewerComponent wird erstellt und subscribed.

Mit Subject: ViewerComponent bekommt nichts → isLoading bleibt false → kein Blocker
Mit BehaviorSubject: ViewerComponent bekommt sofort true → Blocker wird angezeigt, obwohl das Loading eigentlich schon vorbei ist

Das ist genau der Grund, warum es aktuell beim Erstlogin funktioniert — der Subject "vergisst" das true, das vor der Subscription emittiert wurde. Mit einem BehaviorSubject würdest du das bestehende (funktionierende) Erstlogin-Verhalten kaputt machen.

Der Subject ist hier also die richtige Wahl. Das eigentliche Problem war nicht der Subject-Typ, sondern das fehlende fireLoadingChanged(false) in der login()-Pipeline — und das ist jetzt mit dem finalize behoben

@NVNKL NVNKL added the bug label Mar 11, 2026
@NVNKL
NVNKL requested a review from FSARE March 11, 2026 16:36
@NVNKL NVNKL self-assigned this Mar 11, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant