mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Merge branch '1647-illegal-state' into 'master'
Fix IllegalStateException when creating image attachments Closes #1647 See merge request briar/briar!1187
This commit is contained in:
@@ -76,8 +76,12 @@ class AttachmentCreatorImpl implements AttachmentCreator {
|
||||
@UiThread
|
||||
public LiveData<AttachmentResult> storeAttachments(
|
||||
LiveData<GroupId> groupId, Collection<Uri> newUris) {
|
||||
if (task != null || result != null || !uris.isEmpty())
|
||||
if (task != null || result != null || !uris.isEmpty()) {
|
||||
if (task != null) LOG.warning("Task already exists!");
|
||||
if (result != null) LOG.warning("Result already exists!");
|
||||
if (!uris.isEmpty()) LOG.warning("Uris available: " + uris);
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
MutableLiveData<AttachmentResult> result = new MutableLiveData<>();
|
||||
this.result = result;
|
||||
uris.addAll(newUris);
|
||||
@@ -96,8 +100,12 @@ class AttachmentCreatorImpl implements AttachmentCreator {
|
||||
@UiThread
|
||||
public LiveData<AttachmentResult> getLiveAttachments() {
|
||||
MutableLiveData<AttachmentResult> result = this.result;
|
||||
if (task == null || result == null || uris.isEmpty())
|
||||
if (task == null || result == null || uris.isEmpty()) {
|
||||
if (task == null) LOG.warning("No Task!");
|
||||
if (result == null) LOG.warning("No Result!");
|
||||
if (uris.isEmpty()) LOG.warning("Uris empty!");
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
// A task is already running. It will update the result LiveData.
|
||||
// So nothing more to do here.
|
||||
return result;
|
||||
@@ -174,8 +182,7 @@ class AttachmentCreatorImpl implements AttachmentCreator {
|
||||
@Override
|
||||
@UiThread
|
||||
public void cancel() {
|
||||
if (task == null) throw new AssertionError();
|
||||
task.cancel();
|
||||
if (task != null) task.cancel();
|
||||
deleteUnsentAttachments();
|
||||
resetState();
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ public class ConversationViewModel extends AndroidViewModel
|
||||
@Override
|
||||
protected void onCleared() {
|
||||
super.onCleared();
|
||||
attachmentCreator.deleteUnsentAttachments();
|
||||
attachmentCreator.cancel(); // also deletes unsent attachments
|
||||
eventBus.removeListener(this);
|
||||
}
|
||||
|
||||
@@ -274,6 +274,7 @@ public class ConversationViewModel extends AndroidViewModel
|
||||
settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE);
|
||||
}
|
||||
|
||||
@UiThread
|
||||
private void createMessage(GroupId groupId, @Nullable String text,
|
||||
List<AttachmentHeader> headers, long timestamp,
|
||||
boolean hasImageSupport) {
|
||||
@@ -292,6 +293,7 @@ public class ConversationViewModel extends AndroidViewModel
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
private void storeMessage(PrivateMessage m) {
|
||||
attachmentCreator.onAttachmentsSent(m.getMessage().getId());
|
||||
dbExecutor.execute(() -> {
|
||||
|
||||
@@ -79,7 +79,7 @@ public class ImagePreview extends ConstraintLayout {
|
||||
((ImagePreviewAdapter) imageList.getAdapter());
|
||||
int pos = requireNonNull(adapter).loadItemPreview(result);
|
||||
if (pos != NO_POSITION) {
|
||||
imageList.smoothScrollToPosition(pos);
|
||||
imageList.scrollToPosition(pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user