mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-02 12:30:39 +00:00
Add blockContact and unblockContact subcommands
This commit is contained in:
parent
3b2682a57a
commit
7f0ce68ec1
7 changed files with 97 additions and 1 deletions
1
.idea/codeStyles/Project.xml
generated
1
.idea/codeStyles/Project.xml
generated
|
@ -16,7 +16,6 @@
|
||||||
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
|
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
|
||||||
</codeStyleSettings>
|
</codeStyleSettings>
|
||||||
<codeStyleSettings language="XML">
|
<codeStyleSettings language="XML">
|
||||||
<option name="FORCE_REARRANGE_MODE" value="0" />
|
|
||||||
<arrangement>
|
<arrangement>
|
||||||
<rules />
|
<rules />
|
||||||
</arrangement>
|
</arrangement>
|
||||||
|
|
|
@ -24,6 +24,10 @@ public interface Signal extends DBusInterface {
|
||||||
|
|
||||||
void setContactName(String number, String name);
|
void setContactName(String number, String name);
|
||||||
|
|
||||||
|
void blockContact(String number);
|
||||||
|
|
||||||
|
void unblockContact(String number);
|
||||||
|
|
||||||
List<byte[]> getGroupIds();
|
List<byte[]> getGroupIds();
|
||||||
|
|
||||||
String getGroupName(byte[] groupId);
|
String getGroupName(byte[] groupId);
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ public class Commands {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
addCommand("addDevice", new AddDeviceCommand());
|
addCommand("addDevice", new AddDeviceCommand());
|
||||||
|
addCommand("blockContact", new BlockContactCommand());
|
||||||
addCommand("daemon", new DaemonCommand());
|
addCommand("daemon", new DaemonCommand());
|
||||||
addCommand("link", new LinkCommand());
|
addCommand("link", new LinkCommand());
|
||||||
addCommand("listContacts", new ListContactsCommand());
|
addCommand("listContacts", new ListContactsCommand());
|
||||||
|
@ -25,6 +26,7 @@ public class Commands {
|
||||||
addCommand("updateContact", new UpdateContactCommand());
|
addCommand("updateContact", new UpdateContactCommand());
|
||||||
addCommand("setPin", new SetPinCommand());
|
addCommand("setPin", new SetPinCommand());
|
||||||
addCommand("trust", new TrustCommand());
|
addCommand("trust", new TrustCommand());
|
||||||
|
addCommand("unblockContact", new UnblockContactCommand());
|
||||||
addCommand("unregister", new UnregisterCommand());
|
addCommand("unregister", new UnregisterCommand());
|
||||||
addCommand("updateAccount", new UpdateAccountCommand());
|
addCommand("updateAccount", new UpdateAccountCommand());
|
||||||
addCommand("updateGroup", new UpdateGroupCommand());
|
addCommand("updateGroup", new UpdateGroupCommand());
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -686,6 +686,36 @@ public class Manager implements Signal {
|
||||||
account.save();
|
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
|
@Override
|
||||||
public List<byte[]> getGroupIds() {
|
public List<byte[]> getGroupIds() {
|
||||||
List<GroupInfo> groups = getGroups();
|
List<GroupInfo> groups = getGroups();
|
||||||
|
|
|
@ -19,6 +19,9 @@ public class ContactInfo {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public String profileKey;
|
public String profileKey;
|
||||||
|
|
||||||
|
@JsonProperty(defaultValue = "false")
|
||||||
|
public boolean blocked;
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public SignalServiceAddress getAddress() {
|
public SignalServiceAddress getAddress() {
|
||||||
return new SignalServiceAddress(null, number);
|
return new SignalServiceAddress(null, number);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue