diff --git a/core/base/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt b/core/base/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt new file mode 100644 index 00000000..a3777bd5 --- /dev/null +++ b/core/base/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt @@ -0,0 +1,23 @@ +package de.mm20.launcher2.plugin.config + +import android.os.Bundle + +fun SearchPluginConfig(bundle: Bundle): SearchPluginConfig? { + return SearchPluginConfig( + storageStrategy = valueOfOrElse( + bundle.getString( + "storageStrategy", + StorageStrategy.StoreCopy.name + ), + StorageStrategy.StoreCopy, + ) + ) +} + +private fun valueOfOrElse(value: String, default: StorageStrategy): StorageStrategy { + return try { + StorageStrategy.valueOf(value) + } catch (e: IllegalArgumentException) { + default + } +} \ No newline at end of file diff --git a/core/base/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt b/core/base/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt new file mode 100644 index 00000000..7d125333 --- /dev/null +++ b/core/base/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt @@ -0,0 +1,12 @@ +package de.mm20.launcher2.plugin.config + +import android.os.Bundle + +fun WeatherPluginConfig(bundle: Bundle): WeatherPluginConfig { + return WeatherPluginConfig( + minUpdateInterval = bundle.getLong( + "minUpdateInterval", + 60 * 60 * 1000L + ), + ) +} \ No newline at end of file diff --git a/core/shared/build.gradle.kts b/core/shared/build.gradle.kts index e5dfd406..6011e632 100644 --- a/core/shared/build.gradle.kts +++ b/core/shared/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.dokka) `maven-publish` } diff --git a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt index ea466990..5296a0b7 100644 --- a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt +++ b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/SearchPluginConfig.kt @@ -9,24 +9,4 @@ data class SearchPluginConfig( * @see [StorageStrategy] */ val storageStrategy: StorageStrategy = StorageStrategy.StoreCopy, -) { - fun toBundle(): Bundle { - return Bundle().apply { - putString("storageStrategy", storageStrategy.name) - } - } - - companion object { - operator fun invoke(bundle: Bundle): SearchPluginConfig? { - return SearchPluginConfig( - storageStrategy = StorageStrategy.valueOfOrElse( - bundle.getString( - "storageStrategy", - StorageStrategy.StoreCopy.name - ), - StorageStrategy.StoreCopy, - ) - ) - } - } -} \ No newline at end of file +) \ No newline at end of file diff --git a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/StorageStrategy.kt b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/StorageStrategy.kt index bfa6a46c..e374df55 100644 --- a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/StorageStrategy.kt +++ b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/StorageStrategy.kt @@ -22,13 +22,4 @@ enum class StorageStrategy { * results and if you don't want to implement a cache for search results. */ StoreCopy; - companion object { - fun valueOfOrElse(value: String, default: StorageStrategy): StorageStrategy { - return try { - valueOf(value) - } catch (e: IllegalArgumentException) { - default - } - } - } } \ No newline at end of file diff --git a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt index 1e77d302..4f293cc2 100644 --- a/core/shared/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt +++ b/core/shared/src/main/java/de/mm20/launcher2/plugin/config/WeatherPluginConfig.kt @@ -9,22 +9,4 @@ data class WeatherPluginConfig( * or weather provider. */ val minUpdateInterval: Long = 60 * 60 * 1000L, -) { - - fun toBundle(): Bundle { - return Bundle().apply { - putLong("minUpdateInterval", minUpdateInterval) - } - } - - companion object { - operator fun invoke(bundle: Bundle): WeatherPluginConfig { - return WeatherPluginConfig( - minUpdateInterval = bundle.getLong( - "minUpdateInterval", - 60 * 60 * 1000L - ), - ) - } - } -} \ No newline at end of file +) \ No newline at end of file diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/base/SearchPluginProvider.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/base/SearchPluginProvider.kt index 72d8de45..e91fe322 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/base/SearchPluginProvider.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/base/SearchPluginProvider.kt @@ -8,6 +8,7 @@ import android.os.Bundle import android.os.CancellationSignal import de.mm20.launcher2.plugin.config.SearchPluginConfig import de.mm20.launcher2.plugin.contracts.SearchPluginContract +import de.mm20.launcher2.sdk.config.toBundle import de.mm20.launcher2.sdk.utils.launchWithCancellationSignal import kotlinx.coroutines.runBlocking diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/SearchPluginConfig.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/SearchPluginConfig.kt new file mode 100644 index 00000000..20bd0ac7 --- /dev/null +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/SearchPluginConfig.kt @@ -0,0 +1,10 @@ +package de.mm20.launcher2.sdk.config + +import android.os.Bundle +import de.mm20.launcher2.plugin.config.SearchPluginConfig + +internal fun SearchPluginConfig.toBundle(): Bundle { + return Bundle().apply { + putString("storageStrategy", storageStrategy.name) + } +} \ No newline at end of file diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/WeatherPluginConfig.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/WeatherPluginConfig.kt new file mode 100644 index 00000000..f2c24621 --- /dev/null +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/config/WeatherPluginConfig.kt @@ -0,0 +1,10 @@ +package de.mm20.launcher2.sdk.config + +import android.os.Bundle +import de.mm20.launcher2.plugin.config.WeatherPluginConfig + +internal fun WeatherPluginConfig.toBundle(): Bundle { + return Bundle().apply { + putLong("minUpdateInterval", minUpdateInterval) + } +} \ No newline at end of file diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/PermissionData.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/PermissionData.kt index f566859f..1fad2fd3 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/PermissionData.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/PermissionData.kt @@ -3,6 +3,6 @@ package de.mm20.launcher2.sdk.permissions import kotlinx.serialization.Serializable @Serializable -data class PermissionData( +internal data class PermissionData( val granted: Set = emptySet(), ) \ No newline at end of file diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/RequestPermissionActivity.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/RequestPermissionActivity.kt index 9a1578e5..d616a763 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/RequestPermissionActivity.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/permissions/RequestPermissionActivity.kt @@ -10,7 +10,7 @@ import de.mm20.launcher2.sdk.databinding.ActivityRequestPermissionBinding import kotlinx.coroutines.flow.first import kotlinx.coroutines.runBlocking -class RequestPermissionActivity: Activity() { +internal class RequestPermissionActivity: Activity() { private lateinit var binding: ActivityRequestPermissionBinding diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/utils/Coroutines.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/utils/Coroutines.kt index 89e512fa..e70822c2 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/utils/Coroutines.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/utils/Coroutines.kt @@ -5,7 +5,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking -fun launchWithCancellationSignal( +internal fun launchWithCancellationSignal( cancellationSignal: CancellationSignal?, block: suspend CoroutineScope.() -> T ): T { diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/weather/WeatherProvider.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/weather/WeatherProvider.kt index d6f5496f..908ce63a 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/weather/WeatherProvider.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/weather/WeatherProvider.kt @@ -12,6 +12,7 @@ import de.mm20.launcher2.plugin.PluginType import de.mm20.launcher2.plugin.config.WeatherPluginConfig import de.mm20.launcher2.plugin.contracts.WeatherPluginContract import de.mm20.launcher2.sdk.base.BasePluginProvider +import de.mm20.launcher2.sdk.config.toBundle import de.mm20.launcher2.sdk.ktx.formatToString import de.mm20.launcher2.sdk.utils.launchWithCancellationSignal import kotlinx.coroutines.Dispatchers @@ -22,7 +23,7 @@ import kotlin.math.absoluteValue import kotlin.math.roundToInt abstract class WeatherProvider( - val config: WeatherPluginConfig, + private val config: WeatherPluginConfig, ) : BasePluginProvider() { override fun getPluginType(): PluginType { return PluginType.Weather @@ -32,6 +33,10 @@ abstract class WeatherProvider( return true } + override fun getPluginConfig(): Bundle { + return config.toBundle() + } + override fun query( uri: Uri, projection: Array?,