mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Show warning dialog when attempting to save optimized media.
This commit is contained in:
committed by
jeffrey-signal
parent
c554c0d456
commit
6a3d1634b9
@@ -50,11 +50,14 @@ import org.thoughtcrime.securesms.mediapreview.MediaIntentFactory;
|
||||
import org.thoughtcrime.securesms.mediapreview.MediaPreviewV2Activity;
|
||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||
import org.signal.core.ui.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.util.BottomOffsetDecoration;
|
||||
import org.thoughtcrime.securesms.util.OffloadedMediaDialogUtil;
|
||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
@@ -368,9 +371,32 @@ public final class MediaOverviewPageFragment extends LoggingFragment
|
||||
|
||||
bottomActionBar.setItems(Arrays.asList(
|
||||
new ActionItem(R.drawable.symbol_save_android_24, getResources().getQuantityString(R.plurals.MediaOverviewActivity_save_plural, selectionCount), () -> {
|
||||
Collection<MediaTable.MediaRecord> selected = getListAdapter().getSelectedMedia();
|
||||
|
||||
if (SignalStore.backup().getOptimizeStorage()) {
|
||||
boolean allOffloaded = selected.stream().allMatch(r -> r.getAttachment() != null && !r.getAttachment().hasData);
|
||||
boolean someOffloaded = !allOffloaded && selected.stream().anyMatch(r -> r.getAttachment() != null && !r.getAttachment().hasData);
|
||||
|
||||
if (allOffloaded) {
|
||||
OffloadedMediaDialogUtil.showAllOffloaded(requireContext());
|
||||
return;
|
||||
} else if (someOffloaded) {
|
||||
OffloadedMediaDialogUtil.showPartiallyOffloaded(requireContext(), () -> {
|
||||
Collection<MediaTable.MediaRecord> saveable = selected.stream().filter(r -> r.getAttachment() == null || r.getAttachment().hasData).collect(java.util.stream.Collectors.toList());
|
||||
lifecycleDisposable.add(
|
||||
MediaActions
|
||||
.handleSaveMedia(MediaOverviewPageFragment.this, saveable)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(this::exitMultiSelect)
|
||||
);
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
lifecycleDisposable.add(
|
||||
MediaActions
|
||||
.handleSaveMedia(MediaOverviewPageFragment.this, getListAdapter().getSelectedMedia())
|
||||
.handleSaveMedia(MediaOverviewPageFragment.this, selected)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(this::exitMultiSelect)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user