Rework undo deletion logic.

Previously the MessageFacade and MessageStateHolder both had their own
state of the last deleted message, which was redundant. Now only
MessageStateHolder governs the state of a pending deletion and
MessageFacade handles commiting the deletion to the server.
This commit is contained in:
leopoldsedev
2020-02-15 19:12:35 +01:00
committed by Jannis Mattheis
parent 0ebeeec35e
commit 8d4a331bba
4 changed files with 60 additions and 43 deletions

View File

@@ -55,10 +55,10 @@ import com.github.gotify.log.Log;
import com.github.gotify.log.LogsActivity;
import com.github.gotify.login.LoginActivity;
import com.github.gotify.messages.provider.ApplicationHolder;
import com.github.gotify.messages.provider.MessageDeletion;
import com.github.gotify.messages.provider.MessageFacade;
import com.github.gotify.messages.provider.MessageState;
import com.github.gotify.messages.provider.MessageWithImage;
import com.github.gotify.messages.provider.PositionPair;
import com.github.gotify.service.WebSocketService;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.BaseTransientBottomBar;
@@ -374,15 +374,15 @@ public class MessagesActivity extends AppCompatActivity
}
private void undoDelete() {
PositionPair positionPair = messages.undoDeleteLocal();
MessageDeletion deletion = messages.undoDeleteLocal();
if (positionPair != null) {
if (deletion != null) {
ListMessageAdapter adapter = (ListMessageAdapter) messagesView.getAdapter();
adapter.setItems(messages.get(appId));
int insertPosition =
appId == MessageState.ALL_MESSAGES
? positionPair.getAllPosition()
: positionPair.getAppPosition();
? deletion.getAllPosition()
: deletion.getAppPosition();
adapter.notifyItemInserted(insertPosition);
}
}