···
1251
+
if err := r.ParseForm(); err != nil {
1252
+
l.Error("invalid form", "err", err)
errorId := "default-label-operation"
fail := func(msg string, err error) {
rp.pages.Notice(w, errorId, msg)
1257
-
labelAt := r.FormValue("label")
1258
-
_, err = db.GetLabelDefinition(rp.db, db.FilterEq("at_uri", labelAt))
1262
+
labelAts := r.Form["label"]
1263
+
_, err = db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", labelAts))
fail("Failed to subscribe to label.", err)
1265
-
newRepo.Labels = append(newRepo.Labels, labelAt)
1270
+
newRepo.Labels = append(newRepo.Labels, labelAts...)
1273
+
slices.Sort(newRepo.Labels)
1274
+
newRepo.Labels = slices.Compact(newRepo.Labels)
repoRecord := newRepo.AsRecord()
client, err := rp.oauth.AuthorizedClient(r)
···
1289
-
err = db.SubscribeLabel(rp.db, &models.RepoLabel{
1290
-
RepoAt: f.RepoAt(),
1291
-
LabelAt: syntax.ATURI(labelAt),
1299
+
tx, err := rp.db.Begin()
fail("Failed to subscribe to label.", err)
1304
+
defer tx.Rollback()
1306
+
for _, l := range labelAts {
1307
+
err = db.SubscribeLabel(tx, &models.RepoLabel{
1308
+
RepoAt: f.RepoAt(),
1309
+
LabelAt: syntax.ATURI(l),
1312
+
fail("Failed to subscribe to label.", err)
1317
+
if err := tx.Commit(); err != nil {
1318
+
fail("Failed to subscribe to label.", err)
···
1338
+
if err := r.ParseForm(); err != nil {
1339
+
l.Error("invalid form", "err", err)
errorId := "default-label-operation"
fail := func(msg string, err error) {
rp.pages.Notice(w, errorId, msg)
1320
-
labelAt := r.FormValue("label")
1321
-
_, err = db.GetLabelDefinition(rp.db, db.FilterEq("at_uri", labelAt))
1349
+
labelAts := r.Form["label"]
1350
+
_, err = db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", labelAts))
fail("Failed to unsubscribe to label.", err)
···
for _, l := range newRepo.Labels {
1360
+
if !slices.Contains(labelAts, l) {
updated = append(updated, l)
···
err = db.UnsubscribeLabel(
db.FilterEq("repo_at", f.RepoAt()),
1362
-
db.FilterEq("label_at", labelAt),
1391
+
db.FilterIn("label_at", labelAts),
fail("Failed to unsubscribe label.", err)
···
subscribedLabels[l] = struct{}{}
1959
+
// if there is atleast 1 unsubbed default label, show the "subscribe all" button,
1960
+
// if all default labels are subbed, show the "unsubscribe all" button
1961
+
shouldSubscribeAll := false
1962
+
for _, dl := range defaultLabels {
1963
+
if _, ok := subscribedLabels[dl.AtUri().String()]; !ok {
1964
+
// one of the default labels is not subscribed to
1965
+
shouldSubscribeAll = true
rp.pages.RepoGeneralSettings(w, pages.RepoGeneralSettingsParams{
1931
-
LoggedInUser: user,
1932
-
RepoInfo: f.RepoInfo(user),
1933
-
Branches: result.Branches,
1935
-
DefaultLabels: defaultLabels,
1936
-
SubscribedLabels: subscribedLabels,
1937
-
Tabs: settingsTabs,
1971
+
LoggedInUser: user,
1972
+
RepoInfo: f.RepoInfo(user),
1973
+
Branches: result.Branches,
1975
+
DefaultLabels: defaultLabels,
1976
+
SubscribedLabels: subscribedLabels,
1977
+
ShouldSubscribeAll: shouldSubscribeAll,
1978
+
Tabs: settingsTabs,