DROID-1803, DROID-2116 App | Tech | Fix misc. errors and crashes (#761)

This commit is contained in:
Evgenii Kozlov 2024-01-09 16:15:17 +01:00 committed by uburoiubu
parent 957f953972
commit e2d3b0faf6
No known key found for this signature in database
GPG Key ID: C8FB80E0A595FBB6
15 changed files with 51 additions and 47 deletions

View File

@ -6,6 +6,8 @@ import androidx.fragment.app.Fragment
import com.anytypeio.anytype.core_utils.ext.FilePickerUtils.getPermissionToRequestByMime
import com.anytypeio.anytype.core_utils.ext.FilePickerUtils.hasPermission
import com.anytypeio.anytype.core_utils.ext.Mimetype
import com.anytypeio.anytype.core_utils.ext.msg
import com.anytypeio.anytype.core_utils.ext.toast
class MediaPermissionHelper(
private val fragment: Fragment,
@ -31,15 +33,19 @@ class MediaPermissionHelper(
}
fun openFilePicker(mimeType: Mimetype, requestCode: Int?) {
this.mimeType = mimeType
this.requestCode = requestCode
val context = fragment.context ?: return
val hasPermission = mimeType.hasPermission(context)
if (hasPermission) {
onPermissionSuccess(mimeType, requestCode)
} else {
val permission = mimeType.getPermissionToRequestByMime()
permissionReadStorage.launch(permission)
try {
this.mimeType = mimeType
this.requestCode = requestCode
val context = fragment.context ?: return
val hasPermission = mimeType.hasPermission(context)
if (hasPermission) {
onPermissionSuccess(mimeType, requestCode)
} else {
val permission = mimeType.getPermissionToRequestByMime()
permissionReadStorage.launch(permission)
}
} catch (e: Exception) {
fragment.toast(e.msg())
}
}
}

View File

@ -832,13 +832,15 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
}
}
subscribe(vm.isUndoRedoToolbarIsVisible) { isVisible ->
val behavior = BottomSheetBehavior.from(binding.undoRedoToolbar)
if (isVisible) {
behavior.state = BottomSheetBehavior.STATE_EXPANDED
behavior.addBottomSheetCallback(onHideBottomSheetCallback)
} else {
behavior.removeBottomSheetCallback(onHideBottomSheetCallback)
behavior.state = BottomSheetBehavior.STATE_HIDDEN
if (hasBinding) {
val behavior = BottomSheetBehavior.from(binding.undoRedoToolbar)
if (isVisible) {
behavior.state = BottomSheetBehavior.STATE_EXPANDED
behavior.addBottomSheetCallback(onHideBottomSheetCallback)
} else {
behavior.removeBottomSheetCallback(onHideBottomSheetCallback)
behavior.state = BottomSheetBehavior.STATE_HIDDEN
}
}
}
subscribe(vm.icon) { icon ->
@ -936,7 +938,11 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
fromName = getFrom(),
isTemplate = command.isTemplate
)
fr.showChildFragment()
if (!fr.isAdded) {
fr.showChildFragment()
} else {
Timber.d("Ignoring, fragment already added.")
}
}
is Command.OpenCoverGallery -> {
findNavController().safeNavigate(

View File

@ -15,7 +15,7 @@ fun ImageView.setEmojiOrNull(unicode: String?) {
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(this)
} catch (e: Throwable) {
Timber.e(e, "Error while setting emoji icon for: $unicode")
Timber.w(e, "Error while setting emoji icon for: $unicode")
}
else
setImageDrawable(null)

View File

@ -9,7 +9,6 @@ import android.view.MenuItem
import android.widget.TextView
import androidx.annotation.CallSuper
import com.anytypeio.anytype.core_models.ThemeColor
import com.anytypeio.anytype.core_ui.BuildConfig
import com.anytypeio.anytype.core_ui.R
import com.anytypeio.anytype.core_ui.common.CheckedCheckboxColorSpan
import com.anytypeio.anytype.core_ui.common.GhostEditorSelectionSpan
@ -20,9 +19,6 @@ import com.anytypeio.anytype.core_ui.common.toSpannable
import com.anytypeio.anytype.core_ui.extensions.applyMovementMethod
import com.anytypeio.anytype.core_ui.extensions.cursorYBottomCoordinate
import com.anytypeio.anytype.core_ui.extensions.resolveThemedTextColor
import com.anytypeio.anytype.core_ui.extensions.setBlockBackgroundColor
import com.anytypeio.anytype.core_ui.features.editor.decoration.DecoratableViewHolder
import com.anytypeio.anytype.core_ui.features.editor.decoration.EditorDecorationContainer
import com.anytypeio.anytype.core_ui.features.editor.holders.`interface`.TextHolder
import com.anytypeio.anytype.core_ui.tools.DefaultSpannableFactory
import com.anytypeio.anytype.core_ui.tools.MentionTextWatcher
@ -360,7 +356,7 @@ interface TextBlockHolder : TextHolder {
}
}
} catch (e: Throwable) {
Timber.e(e, "Error while setting cursor from $item")
Timber.w(e, "Error while setting cursor from $item")
}
}

View File

@ -3,17 +3,10 @@ package com.anytypeio.anytype.core_ui.features.editor.holders.media
import android.graphics.drawable.Drawable
import android.view.View
import android.widget.FrameLayout
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.recyclerview.widget.RecyclerView
import com.anytypeio.anytype.core_ui.BuildConfig
import com.anytypeio.anytype.core_ui.R
import com.anytypeio.anytype.core_ui.databinding.ItemBlockPictureBinding
import com.anytypeio.anytype.core_ui.features.editor.decoration.DecoratableCardViewHolder
import com.anytypeio.anytype.core_ui.features.editor.decoration.EditorDecorationContainer
import com.anytypeio.anytype.core_ui.features.editor.decoration.applySelectorOffset
import com.anytypeio.anytype.core_utils.ext.dimen
import com.anytypeio.anytype.core_utils.ext.indentize
import com.anytypeio.anytype.core_utils.ext.invisible
import com.anytypeio.anytype.core_utils.ext.visible
import com.anytypeio.anytype.presentation.editor.editor.listener.ListenerType
@ -49,7 +42,7 @@ class Picture(val binding: ItemBlockPictureBinding) : Media(binding.root), Decor
isFirstResource: Boolean
): Boolean {
error.visible()
Timber.e(e, "Error while loading picture")
Timber.w(e, "Error while loading picture")
return false
}

View File

@ -359,13 +359,13 @@ sealed class Title(view: View) : BlockViewHolder(view), TextHolder {
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(emoji)
} catch (e: Throwable) {
Timber.e(e, "Error while setting emoji icon for: ${item.emoji}")
Timber.w(e, "Error while setting emoji icon for: ${item.emoji}")
}
} else {
emoji.setImageDrawable(null)
}
} catch (e: Throwable) {
Timber.e(e, "Could not set emoji icon")
Timber.w(e, "Could not set emoji icon")
}
}

View File

@ -8,7 +8,6 @@ import com.anytypeio.anytype.core_ui.features.editor.BlockViewDiffUtil
import com.anytypeio.anytype.core_ui.features.editor.BlockViewHolder
import com.anytypeio.anytype.core_ui.widgets.text.TextInputWidget
import com.anytypeio.anytype.core_utils.ext.dimen
import com.anytypeio.anytype.presentation.editor.editor.KeyPressedEvent
import com.anytypeio.anytype.presentation.editor.editor.model.Alignment
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
import timber.log.Timber
@ -76,7 +75,7 @@ class Description(val binding: ItemBlockDescriptionBinding) : BlockViewHolder(bi
}
}
} catch (e: Throwable) {
Timber.e(e, "Error while setting cursor from $item")
Timber.w(e, "Error while setting cursor from $item")
}
}
}

View File

@ -43,7 +43,7 @@ class ObjectCardIconWidget @JvmOverloads constructor(
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(ivIcon)
} catch (e: Throwable) {
Timber.e(e, "Error while setting emoji icon for: ${icon.unicode}")
Timber.w(e, "Error while setting emoji icon for: ${icon.unicode}")
}
}
is ObjectIcon.Basic.Image -> {

View File

@ -220,7 +220,7 @@ class ObjectIconWidget @JvmOverloads constructor(
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(binding.ivEmoji)
} catch (e: Throwable) {
Timber.e(e, "Error while setting emoji icon for: $emoji")
Timber.w(e, "Error while setting emoji icon for: $emoji")
}
} else {
binding.ivEmoji.setImageDrawable(null)

View File

@ -14,13 +14,13 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.res.ResourcesCompat
import androidx.core.content.res.use
import androidx.core.view.updateLayoutParams
import com.anytypeio.anytype.core_models.ThemeColor
import com.anytypeio.anytype.core_ui.R
import com.anytypeio.anytype.core_ui.extensions.dark
import com.anytypeio.anytype.core_ui.extensions.light
import com.anytypeio.anytype.core_utils.ext.formatTimestamp
import com.anytypeio.anytype.core_utils.ext.setDrawableColor
import com.anytypeio.anytype.emojifier.Emojifier
import com.anytypeio.anytype.core_models.ThemeColor
import com.anytypeio.anytype.presentation.objects.ObjectIcon
import com.anytypeio.anytype.presentation.relations.model.DefaultObjectRelationValueView
import com.anytypeio.anytype.presentation.sets.model.ObjectView
@ -242,7 +242,7 @@ class GalleryViewContentWidget @JvmOverloads constructor(
.load(Emojifier.uri(icon.unicode))
.into(image)
} catch (e: Throwable) {
Timber.e(
Timber.w(
e,
"Error while setting emoji icon for: ${icon.unicode}"
)

View File

@ -118,7 +118,7 @@ class GalleryViewDefaultTitleIcon @JvmOverloads constructor(
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(ivIconEmoji)
} catch (e: Throwable) {
Timber.e(e, "Error while setting emoji icon for: $emoji")
Timber.w(e, "Error while setting emoji icon for: $emoji")
}
} else {
ivIconEmoji.setImageDrawable(null)

View File

@ -55,7 +55,7 @@ object Emojifier {
return uri(page, index)
} catch (e: Exception) {
return Config.EMPTY_URI.also {
Timber.e(e, "Error while searching for uri")
Timber.w(e, "Error while searching for uri")
}
}
}

View File

@ -27,7 +27,7 @@ class MDNSDelegate(
}
}
} catch (e: Exception) {
Timber.e(e, "Error while starting MDNS delegate")
Timber.w(e, "Error while starting MDNS delegate")
}
}
@ -38,7 +38,7 @@ class MDNSDelegate(
resolver.stop()
}
} catch (e: Exception) {
Timber.e(e, "Error while stopping MDNS delegate")
Timber.w(e, "Error while stopping MDNS delegate")
}
}
@ -49,7 +49,7 @@ class MDNSDelegate(
if (isStarted) start()
}
} catch (e: Exception) {
Timber.e(e, "Error while setting observer")
Timber.w(e, "Error while setting observer")
}
}
@ -60,7 +60,7 @@ class MDNSDelegate(
stop()
}
} catch (e: Exception) {
Timber.e(e, "Error while removing observer")
Timber.w(e, "Error while removing observer")
}
}
}

View File

@ -39,7 +39,7 @@ class MDNSResolver(
}
}
} catch (e: Exception) {
Timber.e(e, "Error while starting MDNS Resolver")
Timber.w(e, "Error while starting MDNS Resolver")
}
}

View File

@ -371,7 +371,11 @@ fun List<BlockView>.enterSAM(
is BlockView.DataView.EmptySource -> view.copy(
isSelected = isSelected
)
else -> view.also { check(view !is BlockView.Permission) }
else -> view.also {
if(view !is BlockView.Permission) {
Timber.e("Attempts to enter SAM for block which does not support read / write mode")
}
}
}
}