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:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user