2021-09-23 05:49:32 +02:00
|
|
|
package org.thoughtcrime.securesms.preferences
|
|
|
|
|
2021-10-08 07:43:45 +02:00
|
|
|
import android.content.ContentResolver
|
|
|
|
import android.content.ContentValues
|
2021-09-23 07:47:43 +02:00
|
|
|
import android.content.Intent
|
2021-10-08 07:43:45 +02:00
|
|
|
import android.media.MediaScannerConnection
|
|
|
|
import android.net.Uri
|
2021-09-23 07:47:43 +02:00
|
|
|
import android.os.Build
|
2021-10-08 07:43:45 +02:00
|
|
|
import android.os.Environment
|
|
|
|
import android.provider.MediaStore
|
2021-09-23 05:49:32 +02:00
|
|
|
import android.view.LayoutInflater
|
2021-10-08 07:43:45 +02:00
|
|
|
import android.webkit.MimeTypeMap
|
2021-09-23 07:47:43 +02:00
|
|
|
import android.widget.Toast
|
2021-09-23 05:49:32 +02:00
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
2022-02-28 07:23:58 +01:00
|
|
|
import kotlinx.coroutines.Dispatchers.Main
|
2021-09-23 05:49:32 +02:00
|
|
|
import kotlinx.coroutines.Job
|
|
|
|
import kotlinx.coroutines.launch
|
2022-02-28 07:23:58 +01:00
|
|
|
import kotlinx.coroutines.withContext
|
2021-09-23 07:47:43 +02:00
|
|
|
import network.loki.messenger.BuildConfig
|
2021-09-23 05:49:32 +02:00
|
|
|
import network.loki.messenger.R
|
2022-01-14 06:56:15 +01:00
|
|
|
import network.loki.messenger.databinding.DialogShareLogsBinding
|
2021-10-08 07:43:45 +02:00
|
|
|
import org.session.libsignal.utilities.ExternalStorageUtil
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
import org.session.libsignal.utilities.Log
|
2021-09-23 07:47:43 +02:00
|
|
|
import org.thoughtcrime.securesms.ApplicationContext
|
2021-09-23 05:49:32 +02:00
|
|
|
import org.thoughtcrime.securesms.conversation.v2.utilities.BaseDialog
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
import org.thoughtcrime.securesms.util.FileProviderUtil
|
2021-10-08 07:43:45 +02:00
|
|
|
import org.thoughtcrime.securesms.util.StreamUtil
|
|
|
|
import java.io.File
|
|
|
|
import java.io.FileOutputStream
|
|
|
|
import java.io.IOException
|
2022-01-14 06:56:15 +01:00
|
|
|
import java.util.Objects
|
2021-10-08 07:43:45 +02:00
|
|
|
import java.util.concurrent.TimeUnit
|
2021-09-23 05:49:32 +02:00
|
|
|
|
|
|
|
class ShareLogsDialog : BaseDialog() {
|
|
|
|
|
|
|
|
private var shareJob: Job? = null
|
|
|
|
|
|
|
|
override fun setContentView(builder: AlertDialog.Builder) {
|
2022-01-14 06:56:15 +01:00
|
|
|
val binding = DialogShareLogsBinding.inflate(LayoutInflater.from(requireContext()))
|
|
|
|
binding.cancelButton.setOnClickListener {
|
2021-09-23 05:49:32 +02:00
|
|
|
dismiss()
|
|
|
|
}
|
2022-01-14 06:56:15 +01:00
|
|
|
binding.shareButton.setOnClickListener {
|
2021-09-23 05:49:32 +02:00
|
|
|
// start the export and share
|
|
|
|
shareLogs()
|
|
|
|
}
|
2022-01-14 06:56:15 +01:00
|
|
|
builder.setView(binding.root)
|
2021-09-23 05:49:32 +02:00
|
|
|
builder.setCancelable(false)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun shareLogs() {
|
|
|
|
shareJob?.cancel()
|
|
|
|
shareJob = lifecycleScope.launch(Dispatchers.IO) {
|
2021-09-23 07:47:43 +02:00
|
|
|
val persistentLogger = ApplicationContext.getInstance(context).persistentLogger
|
|
|
|
try {
|
2021-10-08 07:43:45 +02:00
|
|
|
val context = requireContext()
|
|
|
|
val outputUri: Uri = ExternalStorageUtil.getDownloadUri()
|
|
|
|
val mediaUri = getExternalFile()
|
|
|
|
if (mediaUri == null) {
|
|
|
|
// show toast saying media saved
|
|
|
|
dismiss()
|
|
|
|
return@launch
|
|
|
|
}
|
|
|
|
|
|
|
|
val inputStream = persistentLogger.logs.get().byteInputStream()
|
|
|
|
val updateValues = ContentValues()
|
|
|
|
if (outputUri.scheme == ContentResolver.SCHEME_FILE) {
|
|
|
|
FileOutputStream(mediaUri.path).use { outputStream ->
|
|
|
|
StreamUtil.copy(inputStream, outputStream)
|
|
|
|
MediaScannerConnection.scanFile(context, arrayOf(mediaUri.path), arrayOf("text/plain"), null)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
context.contentResolver.openOutputStream(mediaUri, "w").use { outputStream ->
|
|
|
|
val total: Long = StreamUtil.copy(inputStream, outputStream)
|
|
|
|
if (total > 0) {
|
|
|
|
updateValues.put(MediaStore.MediaColumns.SIZE, total)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (Build.VERSION.SDK_INT > 28) {
|
|
|
|
updateValues.put(MediaStore.MediaColumns.IS_PENDING, 0)
|
|
|
|
}
|
|
|
|
if (updateValues.size() > 0) {
|
|
|
|
requireContext().contentResolver.update(mediaUri, updateValues, null, null)
|
|
|
|
}
|
2021-09-23 05:49:32 +02:00
|
|
|
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
val shareUri = if (mediaUri.scheme == ContentResolver.SCHEME_FILE) {
|
|
|
|
FileProviderUtil.getUriFor(context, File(mediaUri.path!!))
|
|
|
|
} else {
|
|
|
|
mediaUri
|
2021-09-23 07:47:43 +02:00
|
|
|
}
|
|
|
|
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
withContext(Main) {
|
|
|
|
val shareIntent = Intent().apply {
|
|
|
|
action = Intent.ACTION_SEND
|
|
|
|
putExtra(Intent.EXTRA_STREAM, shareUri)
|
|
|
|
type = "text/plain"
|
|
|
|
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
|
|
}
|
|
|
|
startActivity(Intent.createChooser(shareIntent, getString(R.string.share)))
|
|
|
|
}
|
2021-09-23 07:47:43 +02:00
|
|
|
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
dismiss()
|
2021-09-23 07:47:43 +02:00
|
|
|
} catch (e: Exception) {
|
2022-02-28 07:23:58 +01:00
|
|
|
withContext(Main) {
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
Log.e("Loki", "Error saving logs", e)
|
2022-02-28 07:23:58 +01:00
|
|
|
Toast.makeText(context,"Error saving logs", Toast.LENGTH_LONG).show()
|
|
|
|
}
|
2021-09-23 07:47:43 +02:00
|
|
|
dismiss()
|
|
|
|
}
|
2021-09-23 05:49:32 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-08 07:43:45 +02:00
|
|
|
@Throws(IOException::class)
|
|
|
|
private fun pathTaken(outputUri: Uri, dataPath: String): Boolean {
|
|
|
|
requireContext().contentResolver.query(outputUri, arrayOf(MediaStore.MediaColumns.DATA),
|
|
|
|
MediaStore.MediaColumns.DATA + " = ?", arrayOf(dataPath),
|
|
|
|
null).use { cursor ->
|
|
|
|
if (cursor == null) {
|
|
|
|
throw IOException("Something is wrong with the filename to save")
|
|
|
|
}
|
|
|
|
return cursor.moveToFirst()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun getExternalFile(): Uri? {
|
|
|
|
val context = requireContext()
|
|
|
|
val base = "${Build.MANUFACTURER}-${Build.DEVICE}-API${Build.VERSION.SDK_INT}-v${BuildConfig.VERSION_NAME}-${System.currentTimeMillis()}"
|
|
|
|
val extension = "txt"
|
|
|
|
val fileName = "$base.$extension"
|
|
|
|
val mimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType("text/plain")
|
|
|
|
val outputUri: Uri = ExternalStorageUtil.getDownloadUri()
|
|
|
|
val contentValues = ContentValues()
|
|
|
|
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
|
|
|
|
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType)
|
|
|
|
contentValues.put(MediaStore.MediaColumns.DATE_ADDED, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))
|
|
|
|
contentValues.put(MediaStore.MediaColumns.DATE_MODIFIED, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))
|
|
|
|
if (Build.VERSION.SDK_INT > 28) {
|
|
|
|
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1)
|
|
|
|
} else if (Objects.equals(outputUri.scheme, ContentResolver.SCHEME_FILE)) {
|
|
|
|
val outputDirectory = File(outputUri.path)
|
|
|
|
var outputFile = File(outputDirectory, "$base.$extension")
|
|
|
|
var i = 0
|
|
|
|
while (outputFile.exists()) {
|
|
|
|
outputFile = File(outputDirectory, base + "-" + ++i + "." + extension)
|
|
|
|
}
|
|
|
|
if (outputFile.isHidden) {
|
|
|
|
throw IOException("Specified name would not be visible")
|
|
|
|
}
|
|
|
|
return Uri.fromFile(outputFile)
|
|
|
|
} else {
|
|
|
|
var outputFileName = fileName
|
|
|
|
val externalPath = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)!!
|
|
|
|
var dataPath = String.format("%s/%s", externalPath, outputFileName)
|
|
|
|
var i = 0
|
|
|
|
while (pathTaken(outputUri, dataPath)) {
|
|
|
|
outputFileName = base + "-" + ++i + "." + extension
|
|
|
|
dataPath = String.format("%s/%s", externalPath, outputFileName)
|
|
|
|
}
|
|
|
|
contentValues.put(MediaStore.MediaColumns.DATA, dataPath)
|
|
|
|
}
|
|
|
|
return context.contentResolver.insert(outputUri, contentValues)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2021-09-23 05:49:32 +02:00
|
|
|
}
|