Add API to control online search
This commit is contained in:
@@ -19,7 +19,7 @@ abstract class SearchPluginProvider<T>(
|
||||
* Search for items matching the given query
|
||||
* @param query The query to search for
|
||||
*/
|
||||
abstract suspend fun search(query: String): List<T>
|
||||
abstract suspend fun search(query: String, allowNetwork: Boolean): List<T>
|
||||
abstract suspend fun get(id: String): T?
|
||||
|
||||
override fun onCreate(): Boolean {
|
||||
@@ -48,7 +48,10 @@ abstract class SearchPluginProvider<T>(
|
||||
uri.pathSegments.size == 1 && uri.pathSegments.first() == SearchPluginContract.Paths.Search -> {
|
||||
val query =
|
||||
uri.getQueryParameter(SearchPluginContract.Paths.QueryParam) ?: return null
|
||||
val results = search(query, cancellationSignal)
|
||||
val allowNetwork =
|
||||
uri.getQueryParameter(SearchPluginContract.Paths.AllowNetworkParam)?.toBoolean()
|
||||
?: false
|
||||
val results = search(query, allowNetwork, cancellationSignal)
|
||||
val cursor = createCursor(results.size)
|
||||
for (result in results) {
|
||||
writeToCursor(cursor, result)
|
||||
@@ -95,10 +98,11 @@ abstract class SearchPluginProvider<T>(
|
||||
|
||||
private fun search(
|
||||
query: String,
|
||||
allowNetwork: Boolean,
|
||||
cancellationSignal: CancellationSignal?
|
||||
): List<T> {
|
||||
return launchWithCancellationSignal(cancellationSignal) {
|
||||
search(query)
|
||||
search(query, allowNetwork)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user