mirror of
https://github.com/oxen-io/session-android.git
synced 2025-03-25 21:14:38 +00:00
prevent overwriting external capture URIs
Closes #4719 fixes #4538 // FREEBIE
This commit is contained in:
parent
bde838d35a
commit
7625ba919e
@ -995,7 +995,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
case AttachmentTypeSelectorAdapter.ADD_CONTACT_INFO:
|
||||
AttachmentManager.selectContactInfo(this, PICK_CONTACT_INFO); break;
|
||||
case AttachmentTypeSelectorAdapter.TAKE_PHOTO:
|
||||
attachmentManager.capturePhoto(this, recipients, TAKE_PHOTO); break;
|
||||
attachmentManager.capturePhoto(this, TAKE_PHOTO); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -126,8 +126,8 @@ public class AttachmentManager {
|
||||
}
|
||||
|
||||
private void setSlide(@NonNull Slide slide) {
|
||||
if (getSlideUri() != null) cleanup(getSlideUri());
|
||||
if (captureUri != null && slide.getUri() != captureUri) cleanup(captureUri);
|
||||
if (getSlideUri() != null) cleanup(getSlideUri());
|
||||
if (captureUri != null && !captureUri.equals(slide.getUri())) cleanup(captureUri);
|
||||
|
||||
this.captureUri = null;
|
||||
this.slide = Optional.of(slide);
|
||||
@ -225,12 +225,12 @@ public class AttachmentManager {
|
||||
return captureUri;
|
||||
}
|
||||
|
||||
public void capturePhoto(Activity activity, Recipients recipients, int requestCode) {
|
||||
public void capturePhoto(Activity activity, int requestCode) {
|
||||
try {
|
||||
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
|
||||
if (captureUri == null) {
|
||||
captureUri = PersistentBlobProvider.getInstance(context).createForExternal(recipients);
|
||||
captureUri = PersistentBlobProvider.getInstance(context).createForExternal();
|
||||
}
|
||||
Log.w(TAG, "captureUri path is " + captureUri.getPath());
|
||||
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri);
|
||||
|
@ -97,10 +97,9 @@ public class PersistentBlobProvider {
|
||||
});
|
||||
}
|
||||
|
||||
public Uri createForExternal(@NonNull Recipients recipients) throws IOException {
|
||||
return Uri.fromFile(new File(getExternalDir(context), String.valueOf(generateId(recipients)) + ".jpg"))
|
||||
public Uri createForExternal() throws IOException {
|
||||
return Uri.fromFile(new File(getExternalDir(context), String.valueOf(System.currentTimeMillis()) + ".jpg"))
|
||||
.buildUpon()
|
||||
.appendQueryParameter("unique", String.valueOf(System.currentTimeMillis()))
|
||||
.build();
|
||||
}
|
||||
|
||||
@ -121,10 +120,6 @@ public class PersistentBlobProvider {
|
||||
: new DecryptingPartInputStream(getFile(id), masterSecret);
|
||||
}
|
||||
|
||||
private int generateId(Recipients recipients) {
|
||||
return Math.abs(Arrays.hashCode(recipients.getIds()));
|
||||
}
|
||||
|
||||
private File getFile(long id) {
|
||||
return new File(context.getDir("captures", Context.MODE_PRIVATE), id + ".jpg");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user