Removed any server side trace of message deletion
This commit is contained in:
20
client/src/main/java/envoy/client/event/MessageDeletion.java
Normal file
20
client/src/main/java/envoy/client/event/MessageDeletion.java
Normal file
@ -0,0 +1,20 @@
|
||||
package envoy.client.event;
|
||||
|
||||
import envoy.event.Event;
|
||||
|
||||
/**
|
||||
* Conveys the deletion of a message between clients and server.
|
||||
*
|
||||
* @author Leon Hofmeister
|
||||
* @since Envoy Common v0.3-beta
|
||||
*/
|
||||
public class MessageDeletion extends Event<Long> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* @param messageID the ID of the deleted message
|
||||
* @since Envoy Common v0.3-beta
|
||||
*/
|
||||
public MessageDeletion(long messageID) { super(messageID); }
|
||||
}
|
@ -78,7 +78,7 @@ public final class MessageControl extends Label {
|
||||
|
||||
// Delete message - if own message - action
|
||||
if (ownMessage && client.isOnline()) {
|
||||
final var deleteMenuItem = new MenuItem("Delete");
|
||||
final var deleteMenuItem = new MenuItem("Delete locally");
|
||||
deleteMenuItem.setOnAction(e -> MessageUtil.deleteMessage(message));
|
||||
items.add(deleteMenuItem);
|
||||
}
|
||||
|
@ -82,6 +82,7 @@ public class TextInputContextMenu extends ContextMenu {
|
||||
copyMI.disableProperty().bind(control.selectedTextProperty().isEmpty());
|
||||
deleteMI.disableProperty().bind(control.selectedTextProperty().isEmpty());
|
||||
clearMI.disableProperty().bind(control.textProperty().isEmpty());
|
||||
selectAllMI.disableProperty().bind(control.textProperty().isEmpty());
|
||||
setOnShowing(e -> pasteMI.setDisable(!Clipboard.getSystemClipboard().hasString()));
|
||||
|
||||
selectAllMI.getProperties().put("refreshMenu", Boolean.TRUE);
|
||||
|
@ -223,8 +223,8 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
// The sender of the message is the recipient of the chat
|
||||
// Exceptions: this user is the sender (sync) or group message (group is
|
||||
// recipient)
|
||||
final boolean ownMessage = message.getSenderID() == localDB.getUser().getID();
|
||||
final var recipientID = message instanceof GroupMessage || ownMessage ? message.getRecipientID() : message.getSenderID();
|
||||
final var ownMessage = message.getSenderID() == localDB.getUser().getID();
|
||||
final var recipientID = message instanceof GroupMessage || ownMessage ? message.getRecipientID() : message.getSenderID();
|
||||
|
||||
localDB.getChat(recipientID).ifPresent(chat -> {
|
||||
chat.insert(message);
|
||||
@ -308,13 +308,6 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
@Event(eventType = Logout.class, priority = 200)
|
||||
private void onLogout() { eventBus.removeListener(this); }
|
||||
|
||||
@Event(priority = 200)
|
||||
private void onMessageDeletion(MessageDeletion message) {
|
||||
|
||||
// Clearing the selection if the own user was the sender of this event
|
||||
if (message.isOwnEvent()) Platform.runLater(() -> { messageList.getSelectionModel().clearSelection(); });
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes all {@code SystemCommands} used in {@code ChatScene}.
|
||||
*
|
||||
@ -412,7 +405,7 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
if (currentChat != null) {
|
||||
topBarContactLabel.setText(currentChat.getRecipient().getName());
|
||||
if (currentChat.getRecipient() instanceof User) {
|
||||
final String status = ((User) currentChat.getRecipient()).getStatus().toString();
|
||||
final var status = ((User) currentChat.getRecipient()).getStatus().toString();
|
||||
topBarStatusLabel.setText(status);
|
||||
topBarStatusLabel.getStyleClass().add(status.toLowerCase());
|
||||
recipientProfilePic.setImage(IconUtil.loadIconThemeSensitive("user_icon", 43));
|
||||
@ -420,7 +413,7 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
topBarStatusLabel.setText(currentChat.getRecipient().getContacts().size() + " members");
|
||||
recipientProfilePic.setImage(IconUtil.loadIconThemeSensitive("group_icon", 43));
|
||||
}
|
||||
final Rectangle clip = new Rectangle();
|
||||
final var clip = new Rectangle();
|
||||
clip.setWidth(43);
|
||||
clip.setHeight(43);
|
||||
clip.setArcHeight(43);
|
||||
@ -778,6 +771,13 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
pendingAttachment = messageAttachment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the current message selection
|
||||
*
|
||||
* @since Envoy Client v0.3-beta
|
||||
*/
|
||||
public void clearMessageSelection() { messageList.getSelectionModel().clearSelection(); }
|
||||
|
||||
@FXML
|
||||
private void searchContacts() {
|
||||
chats.setPredicate(contactSearch.getText().isBlank() ? c -> true
|
||||
|
@ -8,8 +8,9 @@ import java.util.logging.*;
|
||||
import javafx.stage.FileChooser;
|
||||
|
||||
import envoy.client.data.*;
|
||||
import envoy.client.event.MessageDeletion;
|
||||
import envoy.client.ui.controller.ChatScene;
|
||||
import envoy.data.Message;
|
||||
import envoy.event.MessageDeletion;
|
||||
import envoy.util.EnvoyLog;
|
||||
|
||||
import dev.kske.eventbus.EventBus;
|
||||
@ -44,14 +45,13 @@ public class MessageUtil {
|
||||
* @since Envoy Client v0.3-beta
|
||||
*/
|
||||
public static void deleteMessage(Message message) {
|
||||
final var messageDeletionEvent = new MessageDeletion(message.getID());
|
||||
messageDeletionEvent.setOwnEvent();
|
||||
final var messageDeletionEvent = new MessageDeletion(message.getID());
|
||||
final var controller = Context.getInstance().getSceneContext().getController();
|
||||
if (controller.getClass().equals(ChatScene.class)) ((ChatScene) controller).clearMessageSelection();
|
||||
|
||||
// Removing the message locally
|
||||
EventBus.getInstance().dispatch(messageDeletionEvent);
|
||||
|
||||
// Removing the message on the server and this chat's recipients
|
||||
Context.getInstance().getClient().send(messageDeletionEvent);
|
||||
logger.log(Level.FINEST, "message deletion was requested for " + message);
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ public class MessageUtil {
|
||||
*/
|
||||
public static void forwardMessage(Message message) { logger.log(Level.FINEST, "message forwarding was requested for " + message); }
|
||||
|
||||
/**selected
|
||||
/**
|
||||
* Quotes the given message.
|
||||
* Currently not implemented.
|
||||
*
|
||||
@ -95,7 +95,7 @@ public class MessageUtil {
|
||||
} else file = new File(downloadLocation, fileName);
|
||||
|
||||
// A file was selected
|
||||
if (file != null) try (FileOutputStream fos = new FileOutputStream(file)) {
|
||||
if (file != null) try (var fos = new FileOutputStream(file)) {
|
||||
fos.write(message.getAttachment().getData());
|
||||
logger.log(Level.FINE, "Attachment of message was saved at " + file.getAbsolutePath());
|
||||
} catch (final IOException e) {
|
||||
|
Reference in New Issue
Block a user