Signed-off-by: Winter winter@winter.cafe
+25
-15
appview/repo/repo.go
+25
-15
appview/repo/repo.go
···
657
657
}
658
658
659
659
newSpindle := r.FormValue("spindle")
660
+
removingSpindle := newSpindle == "[[none]]" // see pages/templates/repo/settings/pipelines.html for more info on why we use this value
660
661
client, err := rp.oauth.AuthorizedClient(r)
661
662
if err != nil {
662
663
fail("Failed to authorize. Try again later.", err)
663
664
return
664
665
}
665
666
666
-
// ensure that this is a valid spindle for this user
667
-
validSpindles, err := rp.enforcer.GetSpindlesForUser(user.Did)
668
-
if err != nil {
669
-
fail("Failed to find spindles. Try again later.", err)
670
-
return
667
+
if !removingSpindle {
668
+
// ensure that this is a valid spindle for this user
669
+
validSpindles, err := rp.enforcer.GetSpindlesForUser(user.Did)
670
+
if err != nil {
671
+
fail("Failed to find spindles. Try again later.", err)
672
+
return
673
+
}
674
+
675
+
if !slices.Contains(validSpindles, newSpindle) {
676
+
fail("Failed to configure spindle.", fmt.Errorf("%s is not a valid spindle: %q", newSpindle, validSpindles))
677
+
return
678
+
}
671
679
}
672
680
673
-
if !slices.Contains(validSpindles, newSpindle) {
674
-
fail("Failed to configure spindle.", fmt.Errorf("%s is not a valid spindle: %q", newSpindle, validSpindles))
675
-
return
681
+
spindlePtr := &newSpindle
682
+
if removingSpindle {
683
+
spindlePtr = nil
676
684
}
677
685
678
686
// optimistic update
679
-
err = db.UpdateSpindle(rp.db, string(repoAt), newSpindle)
687
+
err = db.UpdateSpindle(rp.db, string(repoAt), spindlePtr)
680
688
if err != nil {
681
689
fail("Failed to update spindle. Try again later.", err)
682
690
return
···
699
707
Owner: user.Did,
700
708
CreatedAt: f.CreatedAt,
701
709
Description: &f.Description,
702
-
Spindle: &newSpindle,
710
+
Spindle: spindlePtr,
703
711
},
704
712
},
705
713
})
···
709
717
return
710
718
}
711
719
712
-
// add this spindle to spindle stream
713
-
rp.spindlestream.AddSource(
714
-
context.Background(),
715
-
eventconsumer.NewSpindleSource(newSpindle),
716
-
)
720
+
if !removingSpindle {
721
+
// add this spindle to spindle stream
722
+
rp.spindlestream.AddSource(
723
+
context.Background(),
724
+
eventconsumer.NewSpindleSource(newSpindle),
725
+
)
726
+
}
717
727
718
728
rp.pages.HxRefresh(w)
719
729
}