From 958d472582a5c3eb5052763fc5d58362d55a22d0 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Sat, 9 May 2026 15:14:34 +0300 Subject: [PATCH] =?UTF-8?q?fix(ui):=20MainLayout=20=E2=80=94=20declare=20@?= =?UTF-8?q?implements=20IDisposable=20so=20Dispose=20actually=20runs=20(HI?= =?UTF-8?q?GH)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The component had a Dispose() method that detached ThemeState/LocaleState event handlers, but it was never invoked because the @implements directive was missing. Each navigation through the layout leaked two subscriptions on the singleton state objects. Other state subscribers (NavBody.razor, AnomalyFeed.razor) already declare the directive correctly. --- src/Marathon.UI/MainLayout.razor | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Marathon.UI/MainLayout.razor b/src/Marathon.UI/MainLayout.razor index 2c575f4..699b786 100644 --- a/src/Marathon.UI/MainLayout.razor +++ b/src/Marathon.UI/MainLayout.razor @@ -1,4 +1,5 @@ @inherits LayoutComponentBase +@implements IDisposable @inject ThemeState ThemeState @inject LocaleState LocaleState @inject IStringLocalizer L