fix: include shareMedicationOverview in unsaved settings detection (#433)

Add shareMedicationOverview to the settingsChanged memo in AppContext
so toggling the shared medication overview setting correctly triggers
the unsaved-changes indicator.

Includes regression test for the fix.
This commit is contained in:
Daniel Volz
2026-03-14 21:49:37 +01:00
committed by GitHub
parent c38c6efb6d
commit 8ec7d3ae3d
2 changed files with 24 additions and 0 deletions
+1
View File
@@ -793,6 +793,7 @@ export function AppProvider({ children }: { children: React.ReactNode }) {
settings.maxNaggingReminders !== savedSettings.maxNaggingReminders ||
settings.stockCalculationMode !== savedSettings.stockCalculationMode ||
settings.shareStockStatus !== savedSettings.shareStockStatus ||
settings.shareMedicationOverview !== savedSettings.shareMedicationOverview ||
settings.upcomingTodayOnly !== savedSettings.upcomingTodayOnly ||
settings.shareScheduleTodayOnly !== savedSettings.shareScheduleTodayOnly ||
settings.expiryWarningDays !== savedSettings.expiryWarningDays
@@ -132,6 +132,7 @@ describe("useAppContext", () => {
shoutrrrIntakeReminders: true,
stockCalculationMode: "automatic",
shareStockStatus: true,
shareMedicationOverview: false,
expiryWarningDays: 30,
},
setSettings: vi.fn(),
@@ -171,6 +172,7 @@ describe("useAppContext", () => {
shoutrrrIntakeReminders: true,
stockCalculationMode: "automatic",
shareStockStatus: true,
shareMedicationOverview: false,
expiryWarningDays: 30,
},
settingsLoading: false,
@@ -292,6 +294,27 @@ describe("useAppContext", () => {
expect(result.current.settingsChanged).toBe(false);
});
it("marks settings as changed when shareMedicationOverview differs", async () => {
const settingsValue = mockUseSettings();
mockUseSettings.mockReturnValue({
...settingsValue,
settings: {
...settingsValue.settings,
shareMedicationOverview: true,
},
savedSettings: {
...settingsValue.savedSettings,
shareMedicationOverview: false,
},
});
const { result } = renderHook(() => useAppContext(), { wrapper });
await waitFor(() => {
expect(result.current.settingsChanged).toBe(true);
});
});
it("exposes the settings load error from useSettings", async () => {
const settingsValue = mockUseSettings();
mockUseSettings.mockReturnValue({