From 2cd9dd761ddb32b2d0c551345b6ac6a8a7c2dc16 Mon Sep 17 00:00:00 2001 From: kitsunyan Date: Tue, 7 Jul 2020 23:10:59 +0300 Subject: [PATCH] Add Open Collective --- .../nya/kitsunyan/foxydroid/entity/Product.kt | 6 ++++++ .../kitsunyan/foxydroid/index/IndexHandler.kt | 4 +++- .../kitsunyan/foxydroid/index/IndexV1Parser.kt | 1 + .../kitsunyan/foxydroid/screen/ProductAdapter.kt | 5 ++++- .../res/drawable/ic_donate_opencollective.xml | 16 ++++++++++++++++ 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/main/res/drawable/ic_donate_opencollective.xml diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/entity/Product.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/entity/Product.kt index d7c2d1f..4f2af4e 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/entity/Product.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/entity/Product.kt @@ -19,6 +19,7 @@ data class Product(val repositoryId: Long, val packageName: String, val name: St data class Litecoin(val address: String): Donate() data class Flattr(val id: String): Donate() data class Liberapay(val id: String): Donate() + data class OpenCollective(val id: String): Donate() } class Screenshot(val locale: String, val type: Type, val path: String) { @@ -104,6 +105,10 @@ data class Product(val repositoryId: Long, val packageName: String, val name: St writeStringField("type", "liberapay") writeStringField("id", it.id) } + is Donate.OpenCollective -> { + writeStringField("type", "openCollective") + writeStringField("id", it.id) + } }::class } } @@ -189,6 +194,7 @@ data class Product(val repositoryId: Long, val packageName: String, val name: St "litecoin" -> Donate.Litecoin(address) "flattr" -> Donate.Flattr(id) "liberapay" -> Donate.Liberapay(id) + "openCollective" -> Donate.OpenCollective(id) else -> null } } diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexHandler.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexHandler.kt index eb8b9e0..b094067 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexHandler.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexHandler.kt @@ -31,7 +31,8 @@ class IndexHandler(private val repositoryId: Long, private val callback: Callbac internal object DonateComparator: Comparator { private val classes = listOf(Product.Donate.Regular::class, Product.Donate.Bitcoin::class, - Product.Donate.Litecoin::class, Product.Donate.Flattr::class, Product.Donate.Liberapay::class) + Product.Donate.Litecoin::class, Product.Donate.Flattr::class, Product.Donate.Liberapay::class, + Product.Donate.OpenCollective::class) override fun compare(donate1: Product.Donate, donate2: Product.Donate): Int { val index1 = classes.indexOf(donate1::class) @@ -247,6 +248,7 @@ class IndexHandler(private val repositoryId: Long, private val callback: Callbac "litecoin" -> productBuilder.donates += Product.Donate.Litecoin(content) "flattr" -> productBuilder.donates += Product.Donate.Flattr(content) "liberapay" -> productBuilder.donates += Product.Donate.Liberapay(content) + "openCollective" -> productBuilder.donates += Product.Donate.OpenCollective(content) } } } diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexV1Parser.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexV1Parser.kt index 2fdb656..eb4b4d9 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexV1Parser.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/index/IndexV1Parser.kt @@ -124,6 +124,7 @@ object IndexV1Parser { it.string("bitcoin") -> donates += Product.Donate.Bitcoin(valueAsString) it.string("flattrID") -> donates += Product.Donate.Flattr(valueAsString) it.string("liberapayID") -> donates += Product.Donate.Liberapay(valueAsString) + it.string("openCollective") -> donates += Product.Donate.OpenCollective(valueAsString) it.dictionary("localized") -> forEachKey { if (it.token == JsonToken.START_OBJECT) { val locale = it.key diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductAdapter.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductAdapter.kt index 6059f07..d1a108c 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductAdapter.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductAdapter.kt @@ -210,6 +210,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) is Product.Donate.Litecoin -> R.drawable.ic_donate_litecoin is Product.Donate.Flattr -> R.drawable.ic_donate_flattr is Product.Donate.Liberapay -> R.drawable.ic_donate_liberapay + is Product.Donate.OpenCollective -> R.drawable.ic_donate_opencollective } override fun getTitle(context: Context): String = when (donate) { @@ -218,14 +219,16 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) is Product.Donate.Litecoin -> "Litecoin" is Product.Donate.Flattr -> "Flattr" is Product.Donate.Liberapay -> "Liberapay" + is Product.Donate.OpenCollective -> "Open Collective" } override val uri: Uri? = when (donate) { is Product.Donate.Regular -> Uri.parse(donate.url) is Product.Donate.Bitcoin -> Uri.parse("bitcoin:${donate.address}") - is Product.Donate.Litecoin -> Uri.parse("liberapay:${donate.address}") + is Product.Donate.Litecoin -> Uri.parse("litecoin:${donate.address}") is Product.Donate.Flattr -> Uri.parse("https://flattr.com/thing/${donate.id}") is Product.Donate.Liberapay -> Uri.parse("https://liberapay.com/~${donate.id}") + is Product.Donate.OpenCollective -> Uri.parse("https://opencollective.com/${donate.id}") } } } diff --git a/src/main/res/drawable/ic_donate_opencollective.xml b/src/main/res/drawable/ic_donate_opencollective.xml new file mode 100644 index 0000000..f1459f3 --- /dev/null +++ b/src/main/res/drawable/ic_donate_opencollective.xml @@ -0,0 +1,16 @@ + + + + + +