Add blockContact and unblockContact subcommands

This commit is contained in:
Daniel Schäufele 2020-01-05 00:03:27 +01:00
parent 3b2682a57a
commit 7f0ce68ec1
7 changed files with 97 additions and 1 deletions

View file

@ -16,7 +16,6 @@
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
</codeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="0" />
<arrangement>
<rules />
</arrangement>

View file

@ -24,6 +24,10 @@ public interface Signal extends DBusInterface {
void setContactName(String number, String name);
void blockContact(String number);
void unblockContact(String number);
List<byte[]> getGroupIds();
String getGroupName(byte[] groupId);

View file

@ -0,0 +1,29 @@
package org.asamk.signal.commands;
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
import org.asamk.signal.manager.Manager;
public class BlockContactCommand implements LocalCommand {
@Override
public void attachToSubparser(final Subparser subparser) {
subparser.addArgument("number")
.help("Contact number");
subparser.help("Block the given contact (no messages will be received)");
}
@Override
public int handleCommand(final Namespace ns, final Manager m) {
if (!m.isRegistered()) {
System.err.println("User is not registered.");
return 1;
}
String number = ns.getString("number");
m.blockContact(number);
return 0;
}
}

View file

@ -9,6 +9,7 @@ public class Commands {
static {
addCommand("addDevice", new AddDeviceCommand());
addCommand("blockContact", new BlockContactCommand());
addCommand("daemon", new DaemonCommand());
addCommand("link", new LinkCommand());
addCommand("listContacts", new ListContactsCommand());
@ -25,6 +26,7 @@ public class Commands {
addCommand("updateContact", new UpdateContactCommand());
addCommand("setPin", new SetPinCommand());
addCommand("trust", new TrustCommand());
addCommand("unblockContact", new UnblockContactCommand());
addCommand("unregister", new UnregisterCommand());
addCommand("updateAccount", new UpdateAccountCommand());
addCommand("updateGroup", new UpdateGroupCommand());

View file

@ -0,0 +1,29 @@
package org.asamk.signal.commands;
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
import org.asamk.signal.manager.Manager;
public class UnblockContactCommand implements LocalCommand {
@Override
public void attachToSubparser(final Subparser subparser) {
subparser.addArgument("number")
.help("Contact number");
subparser.help("Unblock the given contact (messages will be received again)");
}
@Override
public int handleCommand(final Namespace ns, final Manager m) {
if (!m.isRegistered()) {
System.err.println("User is not registered.");
return 1;
}
String number = ns.getString("number");
m.unblockContact(number);
return 0;
}
}

View file

@ -686,6 +686,36 @@ public class Manager implements Signal {
account.save();
}
@Override
public void blockContact(String number) {
ContactInfo contact = account.getContactStore().getContact(number);
if (contact == null) {
contact = new ContactInfo();
contact.number = number;
System.err.println("Adding and blocking contact " + number);
} else {
System.err.println("Blocking contact " + number);
}
contact.blocked = true;
account.getContactStore().updateContact(contact);
account.save();
}
@Override
public void unblockContact(String number) {
ContactInfo contact = account.getContactStore().getContact(number);
if (contact == null) {
contact = new ContactInfo();
contact.number = number;
System.err.println("Adding and unblocking contact " + number);
} else {
System.err.println("Unblocking contact " + number);
}
contact.blocked = false;
account.getContactStore().updateContact(contact);
account.save();
}
@Override
public List<byte[]> getGroupIds() {
List<GroupInfo> groups = getGroups();

View file

@ -19,6 +19,9 @@ public class ContactInfo {
@JsonProperty
public String profileKey;
@JsonProperty(defaultValue = "false")
public boolean blocked;
@JsonIgnore
public SignalServiceAddress getAddress() {
return new SignalServiceAddress(null, number);