Fix crossed notify toggles for project watches
The submit and new changes buttons were cross-wired, causing the one to impact the other's value. Fix that, and while we are at it clarify the names involved so there is less confusion going on. Change-Id: Ie1b082e35b7a95913a7feb92739f79220a24a983 Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
parent
887bc2d59f
commit
6819cef106
@ -134,9 +134,9 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
table.setWidget(row, 1, new CheckBox());
|
table.setWidget(row, 1, new CheckBox());
|
||||||
table.setWidget(row, 2, fp);
|
table.setWidget(row, 2, fp);
|
||||||
|
|
||||||
addNotifyButton(AccountProjectWatch.Type.NEW_CHANGES, info, row, 3);
|
addNotifyButton(AccountProjectWatch.NotifyType.NEW_CHANGES, info, row, 3);
|
||||||
addNotifyButton(AccountProjectWatch.Type.COMMENTS, info, row, 4);
|
addNotifyButton(AccountProjectWatch.NotifyType.ALL_COMMENTS, info, row, 4);
|
||||||
addNotifyButton(AccountProjectWatch.Type.SUBMITS, info, row, 5);
|
addNotifyButton(AccountProjectWatch.NotifyType.SUBMITTED_CHANGES, info, row, 5);
|
||||||
|
|
||||||
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
||||||
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().iconCell());
|
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().iconCell());
|
||||||
@ -148,7 +148,7 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
setRowItem(row, info);
|
setRowItem(row, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addNotifyButton(final AccountProjectWatch.Type type,
|
protected void addNotifyButton(final AccountProjectWatch.NotifyType type,
|
||||||
final AccountProjectWatchInfo info, final int row, final int col) {
|
final AccountProjectWatchInfo info, final int row, final int col) {
|
||||||
final CheckBox cbox = new CheckBox();
|
final CheckBox cbox = new CheckBox();
|
||||||
|
|
||||||
@ -157,13 +157,16 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
public void onClick(final ClickEvent event) {
|
public void onClick(final ClickEvent event) {
|
||||||
final boolean oldVal = info.getWatch().isNotify(type);
|
final boolean oldVal = info.getWatch().isNotify(type);
|
||||||
info.getWatch().setNotify(type, cbox.getValue());
|
info.getWatch().setNotify(type, cbox.getValue());
|
||||||
|
cbox.setEnabled(false);
|
||||||
Util.ACCOUNT_SVC.updateProjectWatch(info.getWatch(),
|
Util.ACCOUNT_SVC.updateProjectWatch(info.getWatch(),
|
||||||
new GerritCallback<VoidResult>() {
|
new GerritCallback<VoidResult>() {
|
||||||
public void onSuccess(final VoidResult result) {
|
public void onSuccess(final VoidResult result) {
|
||||||
|
cbox.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(final Throwable caught) {
|
public void onFailure(final Throwable caught) {
|
||||||
|
cbox.setEnabled(true);
|
||||||
info.getWatch().setNotify(type, oldVal);
|
info.getWatch().setNotify(type, oldVal);
|
||||||
cbox.setValue(oldVal);
|
cbox.setValue(oldVal);
|
||||||
super.onFailure(caught);
|
super.onFailure(caught);
|
||||||
|
@ -21,8 +21,8 @@ import com.google.gwtorm.client.StringKey;
|
|||||||
/** An {@link Account} interested in a {@link Project}. */
|
/** An {@link Account} interested in a {@link Project}. */
|
||||||
public final class AccountProjectWatch {
|
public final class AccountProjectWatch {
|
||||||
|
|
||||||
public enum Type {
|
public enum NotifyType {
|
||||||
NEW_CHANGES, SUBMITS, COMMENTS
|
NEW_CHANGES, ALL_COMMENTS, SUBMITTED_CHANGES
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String FILTER_ALL = "*";
|
public static final String FILTER_ALL = "*";
|
||||||
@ -124,46 +124,32 @@ public final class AccountProjectWatch {
|
|||||||
return FILTER_ALL.equals(key.filter.get()) ? null : key.filter.get();
|
return FILTER_ALL.equals(key.filter.get()) ? null : key.filter.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isNotifyNewChanges() {
|
public boolean isNotify(final NotifyType type) {
|
||||||
|
switch (type) {
|
||||||
|
case NEW_CHANGES:
|
||||||
return notifyNewChanges;
|
return notifyNewChanges;
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyNewChanges(final boolean a) {
|
case ALL_COMMENTS:
|
||||||
notifyNewChanges = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isNotifyAllComments() {
|
|
||||||
return notifyAllComments;
|
return notifyAllComments;
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyAllComments(final boolean a) {
|
case SUBMITTED_CHANGES:
|
||||||
notifyAllComments = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isNotifySubmittedChanges() {
|
|
||||||
return notifySubmittedChanges;
|
return notifySubmittedChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNotifySubmittedChanges(final boolean a) {
|
|
||||||
notifySubmittedChanges = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isNotify(final Type type) {
|
|
||||||
switch(type) {
|
|
||||||
case NEW_CHANGES: return notifySubmittedChanges;
|
|
||||||
case SUBMITS: return notifyNewChanges;
|
|
||||||
case COMMENTS: return notifyAllComments;
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNotify(final Type type, final boolean v) {
|
public void setNotify(final NotifyType type, final boolean v) {
|
||||||
switch(type) {
|
switch (type) {
|
||||||
case NEW_CHANGES: notifySubmittedChanges = v;
|
case NEW_CHANGES:
|
||||||
|
notifyNewChanges = v;
|
||||||
break;
|
break;
|
||||||
case SUBMITS: notifyNewChanges = v;
|
|
||||||
|
case ALL_COMMENTS:
|
||||||
|
notifyAllComments = v;
|
||||||
break;
|
break;
|
||||||
case COMMENTS: notifyAllComments = v;
|
|
||||||
|
case SUBMITTED_CHANGES:
|
||||||
|
notifySubmittedChanges = v;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import com.google.gerrit.reviewdb.PatchSet;
|
|||||||
import com.google.gerrit.reviewdb.PatchSetApproval;
|
import com.google.gerrit.reviewdb.PatchSetApproval;
|
||||||
import com.google.gerrit.reviewdb.PatchSetInfo;
|
import com.google.gerrit.reviewdb.PatchSetInfo;
|
||||||
import com.google.gerrit.reviewdb.StarredChange;
|
import com.google.gerrit.reviewdb.StarredChange;
|
||||||
|
import com.google.gerrit.reviewdb.AccountProjectWatch.NotifyType;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.patch.PatchList;
|
import com.google.gerrit.server.patch.PatchList;
|
||||||
import com.google.gerrit.server.patch.PatchListEntry;
|
import com.google.gerrit.server.patch.PatchListEntry;
|
||||||
@ -299,7 +300,7 @@ public abstract class ChangeEmail extends OutgoingEmail {
|
|||||||
// BCC anyone else who has interest in this project's changes
|
// BCC anyone else who has interest in this project's changes
|
||||||
//
|
//
|
||||||
for (final AccountProjectWatch w : getWatches()) {
|
for (final AccountProjectWatch w : getWatches()) {
|
||||||
if (w.isNotifyAllComments()) {
|
if (w.isNotify(NotifyType.ALL_COMMENTS)) {
|
||||||
add(RecipientType.BCC, w.getAccountId());
|
add(RecipientType.BCC, w.getAccountId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import com.google.gerrit.reviewdb.AccountGroup;
|
|||||||
import com.google.gerrit.reviewdb.AccountGroupMember;
|
import com.google.gerrit.reviewdb.AccountGroupMember;
|
||||||
import com.google.gerrit.reviewdb.AccountProjectWatch;
|
import com.google.gerrit.reviewdb.AccountProjectWatch;
|
||||||
import com.google.gerrit.reviewdb.Change;
|
import com.google.gerrit.reviewdb.Change;
|
||||||
|
import com.google.gerrit.reviewdb.AccountProjectWatch.NotifyType;
|
||||||
import com.google.gerrit.server.ssh.SshInfo;
|
import com.google.gerrit.server.ssh.SshInfo;
|
||||||
import com.google.gwtorm.client.OrmException;
|
import com.google.gwtorm.client.OrmException;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@ -61,7 +62,7 @@ public class CreateChangeSender extends NewChangeSender {
|
|||||||
// BCC anyone who has interest in this project's changes
|
// BCC anyone who has interest in this project's changes
|
||||||
//
|
//
|
||||||
for (final AccountProjectWatch w : getWatches()) {
|
for (final AccountProjectWatch w : getWatches()) {
|
||||||
if (w.isNotifyNewChanges()) {
|
if (w.isNotify(NotifyType.NEW_CHANGES)) {
|
||||||
if (owners.contains(w.getAccountId())) {
|
if (owners.contains(w.getAccountId())) {
|
||||||
add(RecipientType.TO, w.getAccountId());
|
add(RecipientType.TO, w.getAccountId());
|
||||||
} else {
|
} else {
|
||||||
|
@ -23,6 +23,7 @@ import com.google.gerrit.reviewdb.ApprovalCategoryValue;
|
|||||||
import com.google.gerrit.reviewdb.Branch;
|
import com.google.gerrit.reviewdb.Branch;
|
||||||
import com.google.gerrit.reviewdb.Change;
|
import com.google.gerrit.reviewdb.Change;
|
||||||
import com.google.gerrit.reviewdb.PatchSetApproval;
|
import com.google.gerrit.reviewdb.PatchSetApproval;
|
||||||
|
import com.google.gerrit.reviewdb.AccountProjectWatch.NotifyType;
|
||||||
import com.google.gwtorm.client.OrmException;
|
import com.google.gwtorm.client.OrmException;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.assistedinject.Assisted;
|
import com.google.inject.assistedinject.Assisted;
|
||||||
@ -149,7 +150,7 @@ public class MergedSender extends ReplyToChangeSender {
|
|||||||
// BCC anyone else who has interest in this project's changes
|
// BCC anyone else who has interest in this project's changes
|
||||||
//
|
//
|
||||||
for (final AccountProjectWatch w : getWatches()) {
|
for (final AccountProjectWatch w : getWatches()) {
|
||||||
if (w.isNotifySubmittedChanges()) {
|
if (w.isNotify(NotifyType.SUBMITTED_CHANGES)) {
|
||||||
add(RecipientType.BCC, w.getAccountId());
|
add(RecipientType.BCC, w.getAccountId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user