package org.thoughtcrime.securesms.attachments; import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.thoughtcrime.securesms.database.AttachmentDatabase; public abstract class Attachment { @NonNull private final String contentType; private final int transferState; private final long size; @Nullable private final String fileName; @Nullable private final String location; @Nullable private final String key; @Nullable private final String relay; @Nullable private final byte[] digest; @Nullable private final String fastPreflightId; private final boolean voiceNote; public Attachment(@NonNull String contentType, int transferState, long size, @Nullable String fileName, @Nullable String location, @Nullable String key, @Nullable String relay, @Nullable byte[] digest, @Nullable String fastPreflightId, boolean voiceNote) { this.contentType = contentType; this.transferState = transferState; this.size = size; this.fileName = fileName; this.location = location; this.key = key; this.relay = relay; this.digest = digest; this.fastPreflightId = fastPreflightId; this.voiceNote = voiceNote; } @Nullable public abstract Uri getDataUri(); @Nullable public abstract Uri getThumbnailUri(); public int getTransferState() { return transferState; } public boolean isInProgress() { return transferState != AttachmentDatabase.TRANSFER_PROGRESS_DONE && transferState != AttachmentDatabase.TRANSFER_PROGRESS_FAILED; } public long getSize() { return size; } @Nullable public String getFileName() { return fileName; } @NonNull public String getContentType() { return contentType; } @Nullable public String getLocation() { return location; } @Nullable public String getKey() { return key; } @Nullable public String getRelay() { return relay; } @Nullable public byte[] getDigest() { return digest; } @Nullable public String getFastPreflightId() { return fastPreflightId; } public boolean isVoiceNote() { return voiceNote; } }