Fix font networking main thread crash.
This commit is contained in:
parent
6376642d38
commit
904215fe38
2 changed files with 36 additions and 19 deletions
|
@ -2,30 +2,41 @@ package org.thoughtcrime.securesms.fonts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
|
import android.os.Build
|
||||||
import org.signal.imageeditor.core.Renderer
|
import org.signal.imageeditor.core.Renderer
|
||||||
import org.signal.imageeditor.core.RendererContext
|
import org.signal.imageeditor.core.RendererContext
|
||||||
import org.thoughtcrime.securesms.util.FutureTaskListener
|
|
||||||
import java.util.Locale
|
|
||||||
import java.util.concurrent.ExecutionException
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RenderContext TypefaceProvider that provides typefaces using TextFont.
|
* RenderContext TypefaceProvider that provides typefaces using TextFont.
|
||||||
*/
|
*/
|
||||||
object FontTypefaceProvider : RendererContext.TypefaceProvider {
|
object FontTypefaceProvider : RendererContext.TypefaceProvider {
|
||||||
override fun getSelectedTypeface(context: Context, renderer: Renderer, invalidate: RendererContext.Invalidate): Typeface {
|
override fun getSelectedTypeface(context: Context, renderer: Renderer, invalidate: RendererContext.Invalidate): Typeface {
|
||||||
return when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), TextFont.BOLD)) {
|
return getTypeface()
|
||||||
is Fonts.FontResult.Immediate -> fontResult.typeface
|
// TODO [cody] Need to rework Fonts.kt to not hit network on main, reverting to old typeface for now
|
||||||
is Fonts.FontResult.Async -> {
|
// return when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), TextFont.BOLD)) {
|
||||||
fontResult.future.addListener(object : FutureTaskListener<Typeface> {
|
// is Fonts.FontResult.Immediate -> fontResult.typeface
|
||||||
override fun onSuccess(result: Typeface?) {
|
// is Fonts.FontResult.Async -> {
|
||||||
invalidate.onInvalidate(renderer)
|
// fontResult.future.addListener(object : FutureTaskListener<Typeface> {
|
||||||
}
|
// override fun onSuccess(result: Typeface?) {
|
||||||
|
// invalidate.onInvalidate(renderer)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// override fun onFailure(exception: ExecutionException?) = Unit
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
// fontResult.placeholder
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
override fun onFailure(exception: ExecutionException?) = Unit
|
private fun getTypeface(): Typeface {
|
||||||
})
|
return if (Build.VERSION.SDK_INT < 26) {
|
||||||
|
Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
|
||||||
fontResult.placeholder
|
} else {
|
||||||
}
|
Typeface.Builder("")
|
||||||
|
.setFallback("sans-serif")
|
||||||
|
.setWeight(900)
|
||||||
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryScale
|
||||||
import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryTextWatcher
|
import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryTextWatcher
|
||||||
import org.thoughtcrime.securesms.stories.viewer.page.StoryDisplay
|
import org.thoughtcrime.securesms.stories.viewer.page.StoryDisplay
|
||||||
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture
|
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture
|
||||||
|
import org.thoughtcrime.securesms.util.concurrent.SimpleTask
|
||||||
import org.thoughtcrime.securesms.util.visible
|
import org.thoughtcrime.securesms.util.visible
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
|
@ -152,10 +153,15 @@ class StoryTextPostView @JvmOverloads constructor(
|
||||||
setTextBackgroundColor(storyTextPost.textBackgroundColor)
|
setTextBackgroundColor(storyTextPost.textBackgroundColor)
|
||||||
setTextGravity(TextAlignment.CENTER)
|
setTextGravity(TextAlignment.CENTER)
|
||||||
|
|
||||||
when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), font)) {
|
SimpleTask.run(
|
||||||
is Fonts.FontResult.Immediate -> setTypeface(fontResult.typeface)
|
{
|
||||||
is Fonts.FontResult.Async -> setTypeface(fontResult.future.get())
|
when (val fontResult = Fonts.resolveFont(context, Locale.getDefault(), font)) {
|
||||||
}
|
is Fonts.FontResult.Immediate -> fontResult.typeface
|
||||||
|
is Fonts.FontResult.Async -> fontResult.future.get()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ typeface -> setTypeface(typeface) }
|
||||||
|
)
|
||||||
|
|
||||||
hideCloseButton()
|
hideCloseButton()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue