DROID-1803, DROID-2116 App | Tech | Fix misc. errors and crashes (#761)
This commit is contained in:
parent
957f953972
commit
e2d3b0faf6
|
@ -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())
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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(
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 -> {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}"
|
||||
)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue