X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/997b3c6a2a1f2e9a50fe579ac726677ea0d57d0c..cd29144e81701698092f3334bee0c99c0f77f202:/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index 2cf3c813..977dfa75 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -78,6 +78,7 @@ public class DbusSignalImpl implements Signal { public void close() { unExportDevices(); + unExportGroups(); } @Override @@ -152,12 +153,12 @@ public class DbusSignalImpl implements Signal { .map(RecipientIdentifier.class::cast) .collect(Collectors.toSet())); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (AttachmentInvalidException e) { throw new Error.AttachmentInvalid(e.getMessage()); } catch (IOException e) { - throw new Error.Failure(e.getMessage()); + throw new Error.Failure(e); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { throw new Error.GroupNotFound(e.getMessage()); } @@ -181,8 +182,8 @@ public class DbusSignalImpl implements Signal { getSingleRecipientIdentifiers(recipients, m.getSelfNumber()).stream() .map(RecipientIdentifier.class::cast) .collect(Collectors.toSet())); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { @@ -197,8 +198,8 @@ public class DbusSignalImpl implements Signal { try { final var results = m.sendRemoteDeleteMessage(targetSentTimestamp, Set.of(new RecipientIdentifier.Group(getGroupId(groupId)))); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { @@ -235,8 +236,8 @@ public class DbusSignalImpl implements Signal { getSingleRecipientIdentifiers(recipients, m.getSelfNumber()).stream() .map(RecipientIdentifier.class::cast) .collect(Collectors.toSet())); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { @@ -277,6 +278,19 @@ public class DbusSignalImpl implements Signal { } } + @Override + public void sendViewedReceipt( + final String recipient, final List messageIds + ) throws Error.Failure, Error.UntrustedIdentity { + try { + m.sendViewedReceipt(getSingleRecipientIdentifier(recipient, m.getSelfNumber()), messageIds); + } catch (IOException e) { + throw new Error.Failure(e.getMessage()); + } catch (UntrustedIdentityException e) { + throw new Error.UntrustedIdentity(e.getMessage()); + } + } + @Override public void sendContacts() { try { @@ -302,8 +316,8 @@ public class DbusSignalImpl implements Signal { try { final var results = m.sendMessage(new Message(message, attachments), Set.of(RecipientIdentifier.NoteToSelf.INSTANCE)); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (AttachmentInvalidException e) { throw new Error.AttachmentInvalid(e.getMessage()); } catch (IOException e) { @@ -317,7 +331,7 @@ public class DbusSignalImpl implements Signal { public void sendEndSessionMessage(final List recipients) { try { final var results = m.sendEndSessionMessage(getSingleRecipientIdentifiers(recipients, m.getSelfNumber())); - checkSendMessageResults(results.getTimestamp(), results.getResults()); + checkSendMessageResults(results.timestamp(), results.results()); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } @@ -328,8 +342,8 @@ public class DbusSignalImpl implements Signal { try { var results = m.sendMessage(new Message(message, attachments), Set.of(new RecipientIdentifier.Group(getGroupId(groupId)))); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { @@ -353,8 +367,8 @@ public class DbusSignalImpl implements Signal { getSingleRecipientIdentifier(targetAuthor, m.getSelfNumber()), targetSentTimestamp, Set.of(new RecipientIdentifier.Group(getGroupId(groupId)))); - checkSendMessageResults(results.getTimestamp(), results.getResults()); - return results.getTimestamp(); + checkSendMessageResults(results.timestamp(), results.results()); + return results.timestamp(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { @@ -419,7 +433,7 @@ public class DbusSignalImpl implements Signal { var groups = m.getGroups(); var ids = new ArrayList(groups.size()); for (var group : groups) { - ids.add(group.getGroupId().serialize()); + ids.add(group.groupId().serialize()); } return ids; } @@ -443,10 +457,10 @@ public class DbusSignalImpl implements Signal { @Override public String getGroupName(final byte[] groupId) { var group = m.getGroup(getGroupId(groupId)); - if (group == null || group.getTitle() == null) { + if (group == null || group.title() == null) { return ""; } else { - return group.getTitle(); + return group.title(); } } @@ -456,7 +470,7 @@ public class DbusSignalImpl implements Signal { if (group == null) { return List.of(); } else { - final var members = group.getMembers(); + final var members = group.members(); return getRecipientStrings(members); } } @@ -477,7 +491,7 @@ public class DbusSignalImpl implements Signal { final var memberIdentifiers = getSingleRecipientIdentifiers(members, m.getSelfNumber()); if (groupId == null) { final var results = m.createGroup(name, memberIdentifiers, avatar == null ? null : new File(avatar)); - checkSendMessageResults(results.second().getTimestamp(), results.second().getResults()); + checkSendMessageResults(results.second().timestamp(), results.second().results()); return results.first().serialize(); } else { final var results = m.updateGroup(getGroupId(groupId), @@ -487,7 +501,7 @@ public class DbusSignalImpl implements Signal { .withAvatarFile(avatar == null ? null : new File(avatar)) .build()); if (results != null) { - checkSendMessageResults(results.getTimestamp(), results.getResults()); + checkSendMessageResults(results.timestamp(), results.results()); } return groupId; } @@ -599,8 +613,8 @@ public class DbusSignalImpl implements Signal { // all numbers the system knows @Override public List listNumbers() { - return Stream.concat(m.getIdentities().stream().map(Identity::getRecipient), - m.getContacts().stream().map(Pair::first)) + return Stream.concat(m.getIdentities().stream().map(Identity::recipient), + m.getContacts().stream().map(Pair::first)) .map(a -> a.getNumber().orElse(null)) .filter(Objects::nonNull) .distinct() @@ -619,7 +633,7 @@ public class DbusSignalImpl implements Signal { } // Try profiles if no contact name was found for (var identity : m.getIdentities()) { - final var address = identity.getRecipient(); + final var address = identity.recipient(); var number = address.getNumber().orElse(null); if (number != null) { Profile profile = null; @@ -834,7 +848,7 @@ public class DbusSignalImpl implements Signal { if (d.isThisDevice()) { thisDevice = new DBusPath(deviceObjectPath); } - this.devices.add(new StructDevice(new DBusPath(deviceObjectPath), d.getId(), emptyIfNull(d.getName()))); + this.devices.add(new StructDevice(new DBusPath(deviceObjectPath), d.id(), emptyIfNull(d.name()))); }); } @@ -861,15 +875,15 @@ public class DbusSignalImpl implements Signal { unExportGroups(); groups.forEach(g -> { - final var object = new DbusSignalGroupImpl(g.getGroupId()); + final var object = new DbusSignalGroupImpl(g.groupId()); try { connection.exportObject(object); } catch (DBusException e) { e.printStackTrace(); } this.groups.add(new StructGroup(new DBusPath(object.getObjectPath()), - g.getGroupId().serialize(), - emptyIfNull(g.getTitle()))); + g.groupId().serialize(), + emptyIfNull(g.title()))); }); } @@ -884,22 +898,22 @@ public class DbusSignalImpl implements Signal { public DbusSignalDeviceImpl(final org.asamk.signal.manager.api.Device device) { super.addPropertiesHandler(new DbusInterfacePropertiesHandler("org.asamk.Signal.Device", - List.of(new DbusProperty<>("Id", device::getId), - new DbusProperty<>("Name", () -> emptyIfNull(device.getName()), this::setDeviceName), - new DbusProperty<>("Created", device::getCreated), - new DbusProperty<>("LastSeen", device::getLastSeen)))); + List.of(new DbusProperty<>("Id", device::id), + new DbusProperty<>("Name", () -> emptyIfNull(device.name()), this::setDeviceName), + new DbusProperty<>("Created", device::created), + new DbusProperty<>("LastSeen", device::lastSeen)))); this.device = device; } @Override public String getObjectPath() { - return getDeviceObjectPath(objectPath, device.getId()); + return getDeviceObjectPath(objectPath, device.id()); } @Override public void removeDevice() throws Error.Failure { try { - m.removeLinkedDevices(device.getId()); + m.removeLinkedDevices(device.id()); updateDevices(); } catch (IOException e) { throw new Error.Failure(e.getMessage()); @@ -928,36 +942,36 @@ public class DbusSignalImpl implements Signal { this.groupId = groupId; super.addPropertiesHandler(new DbusInterfacePropertiesHandler("org.asamk.Signal.Group", List.of(new DbusProperty<>("Id", groupId::serialize), - new DbusProperty<>("Name", () -> emptyIfNull(getGroup().getTitle()), this::setGroupName), + new DbusProperty<>("Name", () -> emptyIfNull(getGroup().title()), this::setGroupName), new DbusProperty<>("Description", - () -> emptyIfNull(getGroup().getDescription()), + () -> emptyIfNull(getGroup().description()), this::setGroupDescription), new DbusProperty<>("Avatar", this::setGroupAvatar), new DbusProperty<>("IsBlocked", () -> getGroup().isBlocked(), this::setIsBlocked), new DbusProperty<>("IsMember", () -> getGroup().isMember()), new DbusProperty<>("IsAdmin", () -> getGroup().isAdmin()), new DbusProperty<>("MessageExpirationTimer", - () -> getGroup().getMessageExpirationTimer(), + () -> getGroup().messageExpirationTimer(), this::setMessageExpirationTime), new DbusProperty<>("Members", - () -> new Variant<>(getRecipientStrings(getGroup().getMembers()), "as")), + () -> new Variant<>(getRecipientStrings(getGroup().members()), "as")), new DbusProperty<>("PendingMembers", - () -> new Variant<>(getRecipientStrings(getGroup().getPendingMembers()), "as")), + () -> new Variant<>(getRecipientStrings(getGroup().pendingMembers()), "as")), new DbusProperty<>("RequestingMembers", - () -> new Variant<>(getRecipientStrings(getGroup().getRequestingMembers()), "as")), + () -> new Variant<>(getRecipientStrings(getGroup().requestingMembers()), "as")), new DbusProperty<>("Admins", - () -> new Variant<>(getRecipientStrings(getGroup().getAdminMembers()), "as")), + () -> new Variant<>(getRecipientStrings(getGroup().adminMembers()), "as")), new DbusProperty<>("PermissionAddMember", - () -> getGroup().getPermissionAddMember().name(), + () -> getGroup().permissionAddMember().name(), this::setGroupPermissionAddMember), new DbusProperty<>("PermissionEditDetails", - () -> getGroup().getPermissionEditDetails().name(), + () -> getGroup().permissionEditDetails().name(), this::setGroupPermissionEditDetails), new DbusProperty<>("PermissionSendMessage", - () -> getGroup().getPermissionSendMessage().name(), + () -> getGroup().permissionSendMessage().name(), this::setGroupPermissionSendMessage), new DbusProperty<>("GroupInviteLink", () -> { - final var groupInviteLinkUrl = getGroup().getGroupInviteLinkUrl(); + final var groupInviteLinkUrl = getGroup().groupInviteLinkUrl(); return groupInviteLinkUrl == null ? "" : groupInviteLinkUrl.getUrl(); })))); }