sim: fix changing settings bug
authorJoey Hess <joeyh@joeyh.name>
Tue, 17 Sep 2024 15:37:25 +0000 (11:37 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 17 Sep 2024 15:38:26 +0000 (11:38 -0400)
Annex/Sim.hs

index f1843760746ad323094cee9c5d0d6656849506a8..943f4781c2bd1c3c190232bd7aade32d11feeca5 100644 (file)
@@ -920,22 +920,22 @@ updateSimRepoState newst sr = do
                        , removeDiff = const . flip groupChange (const mempty)
                        }
                updateField oldst newst simWanted $ DiffUpdate
-                       { replaceDiff = const . preferredContentSet
+                       { replaceDiff = replaceNew preferredContentSet
                        , addDiff = preferredContentSet
                        , removeDiff = const . flip preferredContentSet mempty
                        }
                updateField oldst newst simRequired $ DiffUpdate
-                       { replaceDiff = const . requiredContentSet
+                       { replaceDiff = replaceNew requiredContentSet
                        , addDiff = requiredContentSet
                        , removeDiff = const . flip requiredContentSet mempty
                        }
                updateField oldst newst simGroupWanted $ DiffUpdate
-                       { replaceDiff = const . groupPreferredContentSet
+                       { replaceDiff = replaceNew groupPreferredContentSet
                        , addDiff = groupPreferredContentSet
                        , removeDiff = const . flip groupPreferredContentSet mempty
                        }
                updateField oldst newst simMaxSize $ DiffUpdate
-                       { replaceDiff = const . recordMaxSize
+                       { replaceDiff = replaceNew recordMaxSize
                        , addDiff = recordMaxSize
                        , removeDiff = const . flip recordMaxSize (MaxSize 0)
                        }
@@ -953,7 +953,7 @@ updateSimRepoState newst sr = do
                                (getSimLocations' ls)
                        }
                updateField oldst newst simFiles $ DiffUpdate
-                       { replaceDiff = const . stageannexedfile
+                       { replaceDiff = replaceNew stageannexedfile
                        , addDiff = stageannexedfile
                        , removeDiff = const . unstageannexedfile
                        }
@@ -987,6 +987,9 @@ data DiffUpdate a b m = DiffUpdate
        , removeDiff :: a -> b -> m ()
        }
 
+replaceNew :: (a -> b -> m ()) -> a -> b -> b -> m ()
+replaceNew f a new _old = f a new
+
 updateMap
        :: (Monad m, Ord a, Eq b)
        => M.Map a b