|
|
|
|
@ -11,7 +11,12 @@ import androidx.core.graphics.createBitmap
|
|
|
|
|
import androidx.core.net.toUri
|
|
|
|
|
import com.mikepenz.iconics.IconicsDrawable
|
|
|
|
|
import com.mikepenz.iconics.utils.sizeDp
|
|
|
|
|
import dagger.hilt.EntryPoint
|
|
|
|
|
import dagger.hilt.InstallIn
|
|
|
|
|
import dagger.hilt.android.EntryPointAccessors
|
|
|
|
|
import dagger.hilt.components.SingletonComponent
|
|
|
|
|
import org.tasks.BuildConfig
|
|
|
|
|
import org.tasks.analytics.Firebase
|
|
|
|
|
import org.tasks.icons.OutlinedGoogleMaterial
|
|
|
|
|
import timber.log.Timber
|
|
|
|
|
import java.io.File
|
|
|
|
|
@ -19,6 +24,12 @@ import java.io.FileOutputStream
|
|
|
|
|
|
|
|
|
|
class WidgetIconProvider : ContentProvider() {
|
|
|
|
|
|
|
|
|
|
@EntryPoint
|
|
|
|
|
@InstallIn(SingletonComponent::class)
|
|
|
|
|
interface WidgetIconProviderEntryPoint {
|
|
|
|
|
val firebase: Firebase
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreate() = true
|
|
|
|
|
|
|
|
|
|
override fun openFile(uri: Uri, mode: String): ParcelFileDescriptor? {
|
|
|
|
|
@ -76,10 +87,17 @@ class WidgetIconProvider : ContentProvider() {
|
|
|
|
|
bitmap.recycle()
|
|
|
|
|
} catch (e: Exception) {
|
|
|
|
|
Timber.e(e, "Failed to generate icon: $iconName")
|
|
|
|
|
hilt().firebase.reportException(e)
|
|
|
|
|
file.delete()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun hilt() =
|
|
|
|
|
EntryPointAccessors.fromApplication(
|
|
|
|
|
context!!.applicationContext,
|
|
|
|
|
WidgetIconProviderEntryPoint::class.java
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
private fun getCacheFile(iconName: String): File {
|
|
|
|
|
val context = context ?: throw IllegalStateException("Context is null")
|
|
|
|
|
val cacheDir = File(context.cacheDir, "widget_icons")
|
|
|
|
|
|