2021-06-24 06:05:55 +02:00
|
|
|
package org.thoughtcrime.securesms.conversation.v2.dialogs
|
|
|
|
|
2023-05-31 04:45:41 +02:00
|
|
|
import android.app.Dialog
|
2021-06-24 06:05:55 +02:00
|
|
|
import android.graphics.Typeface
|
2023-05-31 04:45:41 +02:00
|
|
|
import android.os.Bundle
|
2021-06-24 06:05:55 +02:00
|
|
|
import android.text.Spannable
|
|
|
|
import android.text.SpannableStringBuilder
|
|
|
|
import android.text.style.StyleSpan
|
2023-05-31 04:45:41 +02:00
|
|
|
import androidx.fragment.app.DialogFragment
|
2021-10-04 09:51:19 +02:00
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
2021-06-24 06:05:55 +02:00
|
|
|
import network.loki.messenger.R
|
2022-01-14 06:56:15 +01:00
|
|
|
import network.loki.messenger.databinding.DialogDownloadBinding
|
2022-11-11 05:29:39 +01:00
|
|
|
import org.session.libsession.database.StorageProtocol
|
2021-06-24 06:05:55 +02:00
|
|
|
import org.session.libsession.messaging.contacts.Contact
|
2022-11-11 00:39:10 +01:00
|
|
|
import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment
|
2021-06-24 06:05:55 +02:00
|
|
|
import org.session.libsession.utilities.recipients.Recipient
|
2023-05-31 15:53:53 +02:00
|
|
|
import org.thoughtcrime.securesms.createSessionDialog
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.thoughtcrime.securesms.database.SessionContactDatabase
|
|
|
|
import javax.inject.Inject
|
2021-06-24 06:05:55 +02:00
|
|
|
|
2021-06-25 01:19:21 +02:00
|
|
|
/** Shown when receiving media from a contact for the first time, to confirm that
|
|
|
|
* they are to be trusted and files sent by them are to be downloaded. */
|
2021-10-04 09:51:19 +02:00
|
|
|
@AndroidEntryPoint
|
2022-11-11 05:29:39 +01:00
|
|
|
class AutoDownloadDialog(private val threadRecipient: Recipient,
|
2022-11-11 00:39:10 +01:00
|
|
|
private val databaseAttachment: DatabaseAttachment
|
2023-08-23 08:45:24 +02:00
|
|
|
) : DialogFragment() {
|
2021-06-24 06:05:55 +02:00
|
|
|
|
2022-11-11 05:29:39 +01:00
|
|
|
@Inject lateinit var storage: StorageProtocol
|
2021-10-04 09:51:19 +02:00
|
|
|
@Inject lateinit var contactDB: SessionContactDatabase
|
|
|
|
|
2023-05-31 15:53:53 +02:00
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = createSessionDialog {
|
2022-11-11 05:29:39 +01:00
|
|
|
val threadId = storage.getThreadId(threadRecipient) ?: run {
|
|
|
|
dismiss()
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
val displayName = when {
|
|
|
|
threadRecipient.isOpenGroupRecipient -> storage.getOpenGroup(threadId)?.name ?: "UNKNOWN"
|
|
|
|
threadRecipient.isClosedGroupRecipient -> storage.getGroup(threadRecipient.address.toGroupString())?.title ?: "UNKNOWN"
|
|
|
|
else -> storage.getContactWithSessionID(threadRecipient.address.serialize())?.displayName(Contact.ContactContext.REGULAR) ?: "UNKNOWN"
|
|
|
|
}
|
2023-08-23 08:45:24 +02:00
|
|
|
title(resources.getString(R.string.dialog_auto_download_title))
|
|
|
|
|
2022-11-11 05:29:39 +01:00
|
|
|
val explanation = resources.getString(R.string.dialog_auto_download_explanation, displayName)
|
2021-06-24 06:05:55 +02:00
|
|
|
val spannable = SpannableStringBuilder(explanation)
|
|
|
|
val startIndex = explanation.indexOf(name)
|
|
|
|
spannable.setSpan(StyleSpan(Typeface.BOLD), startIndex, startIndex + name.count(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
2023-05-31 04:45:41 +02:00
|
|
|
text(spannable)
|
|
|
|
|
2023-08-23 08:45:24 +02:00
|
|
|
button(R.string.dialog_download_button_title, R.string.AccessibilityId_download_media) {
|
2022-11-11 05:29:39 +01:00
|
|
|
setAutoDownload(true)
|
|
|
|
}
|
2023-08-23 08:45:24 +02:00
|
|
|
cancelButton {
|
|
|
|
setAutoDownload(false)
|
|
|
|
}
|
2021-06-24 06:05:55 +02:00
|
|
|
}
|
|
|
|
|
2022-11-11 05:29:39 +01:00
|
|
|
private fun setAutoDownload(shouldDownload: Boolean) {
|
|
|
|
storage.setAutoDownloadAttachments(threadRecipient, shouldDownload)
|
2021-06-24 06:05:55 +02:00
|
|
|
}
|
2023-05-31 04:45:41 +02:00
|
|
|
}
|