]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/DeleteLocalAccountDataCommand.java
Reformat files
[signal-cli] / src / main / java / org / asamk / signal / commands / DeleteLocalAccountDataCommand.java
1 package org.asamk.signal.commands;
2
3 import com.fasterxml.jackson.core.type.TypeReference;
4
5 import net.sourceforge.argparse4j.impl.Arguments;
6 import net.sourceforge.argparse4j.inf.Namespace;
7 import net.sourceforge.argparse4j.inf.Subparser;
8
9 import org.asamk.signal.OutputType;
10 import org.asamk.signal.commands.exceptions.CommandException;
11 import org.asamk.signal.commands.exceptions.IOErrorException;
12 import org.asamk.signal.commands.exceptions.UserErrorException;
13 import org.asamk.signal.manager.RegistrationManager;
14 import org.asamk.signal.output.JsonWriter;
15
16 import java.io.IOException;
17 import java.util.List;
18 import java.util.Map;
19
20 public class DeleteLocalAccountDataCommand implements RegistrationCommand, JsonRpcRegistrationCommand<Map<String, Object>> {
21
22 @Override
23 public String getName() {
24 return "deleteLocalAccountData";
25 }
26
27 @Override
28 public void attachToSubparser(final Subparser subparser) {
29 subparser.help(
30 "Delete all local data for this account. Data should only be deleted if the account is unregistered. CAUTION: This cannot be undone.");
31 subparser.addArgument("--ignore-registered")
32 .help("Delete the account data even though the account is still registered on the Signal servers.")
33 .action(Arguments.storeTrue());
34 }
35
36 @Override
37 public void handleCommand(final Namespace ns, final RegistrationManager m) throws CommandException {
38 try {
39 final var ignoreRegistered = Boolean.TRUE.equals(ns.getBoolean("ignore-registered"));
40 if (m.isRegistered() && !ignoreRegistered) {
41 throw new UserErrorException(
42 "Not deleting account, it is still registered. Use --ignore-registered to delete it anyway.");
43 }
44
45 m.deleteLocalAccountData();
46 } catch (IOException e) {
47 throw new IOErrorException("Deletion error: " + e.getMessage(), e);
48 }
49 }
50
51 @Override
52 public TypeReference<Map<String, Object>> getRequestType() {
53 return new TypeReference<>() {};
54 }
55
56 @Override
57 public List<OutputType> getSupportedOutputTypes() {
58 return List.of(OutputType.PLAIN_TEXT, OutputType.JSON);
59 }
60
61 @Override
62 public void handleCommand(
63 Map<String, Object> request,
64 RegistrationManager m,
65 JsonWriter jsonWriter
66 ) throws CommandException {
67 Namespace commandNamespace = new JsonRpcNamespace(request == null ? Map.of() : request);
68 handleCommand(commandNamespace, m);
69 }
70 }