diff --git a/CHANGELOG.md b/CHANGELOG.md index 1822bb0463..b44829c2a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### New features 🚀 +* Archive (#547) * Link to existing object (#770) * Move-to from one document to other document (#770) @@ -14,6 +15,7 @@ ### Fixes & tech 🚒 +* Handle exceptions when emojifier fails to provide uri for emoji icon (#856) * Render children for all text blocks (#846) * Scroll-and-move restrictions issues (#847) * Cannot add block after document's title via add-block-menu (#827) diff --git a/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/DocumentIconActionMenuFragment.kt b/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/DocumentIconActionMenuFragment.kt index 5e59574d77..031b8a2a02 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/DocumentIconActionMenuFragment.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/DocumentIconActionMenuFragment.kt @@ -34,6 +34,7 @@ import com.agileburo.anytype.ui.page.modals.DocumentEmojiIconPickerFragment import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import kotlinx.android.synthetic.main.action_toolbar_page_icon.* +import timber.log.Timber import javax.inject.Inject class DocumentIconActionMenuFragment : BaseFragment(R.layout.action_toolbar_page_icon), @@ -69,11 +70,15 @@ class DocumentIconActionMenuFragment : BaseFragment(R.layout.action_toolbar_page private fun setIcon() { arguments?.getString(EMOJI_KEY)?.let { unicode -> - Glide - .with(emojiIconImage) - .load(Emojifier.uri(unicode)) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(emojiIconImage) + try { + Glide + .with(emojiIconImage) + .load(Emojifier.uri(unicode)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(emojiIconImage) + } catch (e: Throwable) { + Timber.e(e, "Error while setting emoji icon for: $unicode") + } } arguments?.getString(IMAGE_KEY)?.let { url -> Glide diff --git a/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/PageBlockActionToolbar.kt b/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/PageBlockActionToolbar.kt index 4b8e8c224b..2ae4a788fe 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/PageBlockActionToolbar.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/page/modals/actions/PageBlockActionToolbar.kt @@ -10,6 +10,7 @@ import com.agileburo.anytype.core_utils.ext.visible import com.agileburo.anytype.emojifier.Emojifier import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy +import timber.log.Timber class PageBlockActionToolbar : BlockActionToolbar() { @@ -38,11 +39,15 @@ class PageBlockActionToolbar : BlockActionToolbar() { when { block.emoji != null -> { image.setImageDrawable(null) - Glide - .with(emoji) - .load(Emojifier.uri(block.emoji!!)) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(emoji) + try { + Glide + .with(emoji) + .load(Emojifier.uri(block.emoji!!)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(emoji) + } catch (e: Throwable) { + Timber.e(e, "Error while setting emoji icon for: ${block.emoji}") + } } block.image != null -> { image.visible() diff --git a/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Page.kt b/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Page.kt index 81100366e8..e7a33be67f 100644 --- a/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Page.kt +++ b/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Page.kt @@ -10,6 +10,7 @@ import com.agileburo.anytype.emojifier.Emojifier import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import kotlinx.android.synthetic.main.item_block_page.view.* +import timber.log.Timber class Page(view: View) : BlockViewHolder(view), BlockViewHolder.IndentableHolder, SupportNesting { @@ -35,11 +36,15 @@ class Page(view: View) : BlockViewHolder(view), BlockViewHolder.IndentableHolder when { item.emoji != null -> { image.setImageDrawable(null) - Glide - .with(emoji) - .load(Emojifier.uri(item.emoji)) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(emoji) + try { + Glide + .with(emoji) + .load(Emojifier.uri(item.emoji)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(emoji) + } catch (e: Throwable) { + Timber.e(e, "Error while setting emoji icon for: ${item.emoji}") + } } item.image != null -> { image.visible() diff --git a/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Title.kt b/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Title.kt index a5e2589f44..22fa4349cf 100644 --- a/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Title.kt +++ b/core-ui/src/main/java/com/agileburo/anytype/core_ui/features/editor/holders/other/Title.kt @@ -153,11 +153,15 @@ sealed class Title(view: View) : BlockViewHolder(view), TextHolder { private fun setEmoji(item: BlockView.Title.Document) { try { if (item.emoji != null) { - Glide - .with(emoji) - .load(Emojifier.uri(item.emoji)) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(emoji) + try { + Glide + .with(emoji) + .load(Emojifier.uri(item.emoji)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(emoji) + } catch (e: Throwable) { + Timber.e(e, "Error while setting emoji icon for: ${item.emoji}") + } } } catch (e: Throwable) { Timber.e(e, "Could not set emoji icon") diff --git a/core-ui/src/main/java/com/agileburo/anytype/core_ui/widgets/toolbar/adapter/MentionAdapter.kt b/core-ui/src/main/java/com/agileburo/anytype/core_ui/widgets/toolbar/adapter/MentionAdapter.kt index e3515c9986..cc23ac72a9 100644 --- a/core-ui/src/main/java/com/agileburo/anytype/core_ui/widgets/toolbar/adapter/MentionAdapter.kt +++ b/core-ui/src/main/java/com/agileburo/anytype/core_ui/widgets/toolbar/adapter/MentionAdapter.kt @@ -11,6 +11,7 @@ import com.agileburo.anytype.emojifier.Emojifier import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import kotlinx.android.synthetic.main.item_mention.view.* +import timber.log.Timber class MentionAdapter( private var data: ArrayList, @@ -97,11 +98,15 @@ class MentionAdapter( tvTitle.text = item.title when { !item.emoji.isNullOrBlank() -> { - Glide - .with(image) - .load(Emojifier.uri(item.emoji)) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .into(image) + try { + Glide + .with(image) + .load(Emojifier.uri(item.emoji)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(image) + } catch (e: Throwable) { + Timber.e(e, "Error while setting emoji icon for: ${item.emoji}") + } } !item.image.isNullOrBlank() -> { Glide diff --git a/library-emojifier/src/main/java/com/agileburo/anytype/emojifier/Emojifier.kt b/library-emojifier/src/main/java/com/agileburo/anytype/emojifier/Emojifier.kt index f7721abf7a..6a004e427e 100644 --- a/library-emojifier/src/main/java/com/agileburo/anytype/emojifier/Emojifier.kt +++ b/library-emojifier/src/main/java/com/agileburo/anytype/emojifier/Emojifier.kt @@ -13,6 +13,7 @@ object Emojifier { * @param unicode emoji unicode * @return uri for loading emoji as image */ + @Throws(IllegalStateException::class) fun uri(unicode: String): String { val (page, index) = search(unicode) return uri(page, index) @@ -31,6 +32,7 @@ object Emojifier { * @param unicode emoji unicode * @return a pair constisting of emoji's page and emoji's index for this [unicode] */ + @Throws(IllegalStateException::class) private fun search(unicode: String): Pair { val cached = cache[unicode]