diff --git a/.gitignore b/.gitignore index 2b5427bcc..790ac9185 100644 --- a/.gitignore +++ b/.gitignore @@ -7,13 +7,5 @@ local.properties *.hprof .bundle/ local.settings.gradle.kts - -# fastlane -**/fastlane/report.xml -**/fastlane/Preview.html -**/fastlane/screenshots -**/fastlane/test_output - -# bitrise -.bitrise.yml -bitrise.yml +*/release +*/google-services.json diff --git a/build.gradle.kts b/build.gradle.kts index 6f97e44ce..e9970d653 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,11 +1,15 @@ import com.diffplug.gradle.spotless.SpotlessExtension +@Suppress("DSL_SCOPE_VIOLATION") plugins { alias(libs.plugins.kotlin.multiplaform) apply false alias(libs.plugins.kotlinx.serialization) apply false - alias(libs.plugins.android) apply false + alias(libs.plugins.android.library) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.spotless) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.firebase.crashlytics) apply false + alias(libs.plugins.firebase.perf) apply false } subprojects { diff --git a/examples/build.gradle b/examples/build.gradle index a0984865e..828bb1931 100644 --- a/examples/build.gradle +++ b/examples/build.gradle @@ -1,6 +1,9 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlinx-serialization' +apply plugin: 'com.google.gms.google-services' +apply plugin: 'com.google.firebase.crashlytics' +apply plugin: 'com.google.firebase.firebase-perf' android { compileSdkVersion 31 @@ -10,15 +13,13 @@ android { minSdkVersion 23 targetSdkVersion 31 versionCode 1 - versionName "1.0" + versionName "1.0+3.0.0-beta01" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { - debug { - matchingFallbacks = ['release'] - } release { - minifyEnabled false + minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -31,6 +32,7 @@ android { } packagingOptions { exclude("META-INF/*.kotlin_module") + resources.excludes += "DebugProbesKt.bin" } buildFeatures { viewBinding true @@ -78,6 +80,11 @@ dependencies { testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + + implementation platform('com.google.firebase:firebase-bom:29.2.1') + implementation 'com.google.firebase:firebase-crashlytics-ktx' + implementation 'com.google.firebase:firebase-analytics-ktx' + implementation 'com.google.firebase:firebase-perf-ktx' } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { diff --git a/examples/proguard-rules.pro b/examples/proguard-rules.pro index 238bcee19..dcfd2849f 100644 --- a/examples/proguard-rules.pro +++ b/examples/proguard-rules.pro @@ -19,4 +19,41 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile --keep class com.algolia.search.model.** { *; } \ No newline at end of file + +# Should be fixed with OkHttp 5: https://github.com/square/okhttp/issues/6258 +-dontwarn org.bouncycastle.jsse.BCSSLSocket +-dontwarn org.bouncycastle.jsse.BCSSLParameters +-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider +-dontwarn org.conscrypt.* +-dontwarn org.openjsse.javax.net.ssl.SSLParameters +-dontwarn org.openjsse.javax.net.ssl.SSLSocket +-dontwarn org.openjsse.net.ssl.OpenJSSE + +# Serialization + +# Keep `Companion` object fields of serializable classes. +# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. +-if @kotlinx.serialization.Serializable class ** +-keepclassmembers class <1> { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/customdata/QueryRuleCustomDataShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/customdata/QueryRuleCustomDataShowcase.kt index dcc27fa7f..642ad273d 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/customdata/QueryRuleCustomDataShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/customdata/QueryRuleCustomDataShowcase.kt @@ -36,8 +36,8 @@ import com.algolia.instantsearch.customdata.QueryRuleCustomDataConnector import com.algolia.instantsearch.examples.R import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Banner -import com.algolia.instantsearch.examples.showcase.compose.model.Product +import com.algolia.instantsearch.examples.showcase.shared.model.Banner +import com.algolia.instantsearch.examples.showcase.shared.model.Product import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.BlueDark import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme @@ -74,8 +74,8 @@ class QueryRuleCustomDataShowcase : AppCompatActivity() { searchBox.viewModel.eventSubmit.subscribe { val model = queryRuleCustomData.viewModel.item.value ?: return@subscribe - if (model.banner == null && model.title == null) { - redirect(model.link, resources.getString(R.string.redirect_via_submit)) + if (model.banner == null && model.title == null && model.redirect != null) { + redirect(model.redirect, resources.getString(R.string.redirect_via_submit)) } } } diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/ComposeDirectoryShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/ComposeDirectoryShowcase.kt index da225c86e..5751b8754 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/ComposeDirectoryShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/ComposeDirectoryShowcase.kt @@ -12,6 +12,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearchBox import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme +import com.algolia.instantsearch.examples.showcase.shared.model.DirectoryHit import com.algolia.search.helper.deserialize import com.algolia.search.model.IndexName import com.algolia.search.model.search.Query diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryItem.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryItem.kt index 9a5919863..aaeeb132c 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryItem.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryItem.kt @@ -1,5 +1,7 @@ package com.algolia.instantsearch.examples.showcase.compose.directory +import com.algolia.instantsearch.examples.showcase.shared.model.DirectoryHit + sealed class DirectoryItem { data class Header(val name: String) : DirectoryItem() data class Item(val hit: DirectoryHit) : DirectoryItem() diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/highlighting/HighlightingShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/highlighting/HighlightingShowcase.kt index 8997a19b7..c20610948 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/highlighting/HighlightingShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/highlighting/HighlightingShowcase.kt @@ -16,7 +16,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.White diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/merged/MergedListShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/merged/MergedListShowcase.kt index 94b71e42a..3f652925c 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/merged/MergedListShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/merged/MergedListShowcase.kt @@ -21,8 +21,8 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.addHitsSearcher import com.algolia.instantsearch.searcher.multi.MultiSearcher import com.algolia.instantsearch.examples.showcase.compose.client -import com.algolia.instantsearch.examples.showcase.compose.model.Actor -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.ui.GreyLight import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.component.ActorsList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingMultipleIndexShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingMultipleIndexShowcase.kt index 0e0f9aace..ecadbf519 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingMultipleIndexShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingMultipleIndexShowcase.kt @@ -25,8 +25,8 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.addHitsSearcher import com.algolia.instantsearch.searcher.multi.MultiSearcher import com.algolia.instantsearch.examples.showcase.compose.client -import com.algolia.instantsearch.examples.showcase.compose.model.Actor -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.ui.GreyLight import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.component.ActorsHorizontalList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingSingleIndexShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingSingleIndexShowcase.kt index 42d1e9a83..30e8d988a 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingSingleIndexShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/list/paging/PagingSingleIndexShowcase.kt @@ -27,7 +27,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.GreyLight import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/loading/LoadingShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/loading/LoadingShowcase.kt index e565f3d9b..f7f3c6555 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/loading/LoadingShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/loading/LoadingShowcase.kt @@ -21,7 +21,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.component.MoviesList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Banner.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Banner.kt deleted file mode 100644 index e61f9adbb..000000000 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Banner.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.algolia.instantsearch.examples.showcase.compose.model - -import kotlinx.serialization.Serializable - -@Serializable -data class Banner( - val title: String?, - val banner: String?, - val link: String -) diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/relateditems/RelatedItemsShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/relateditems/RelatedItemsShowcase.kt index 6a730e5e8..7c66943d9 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/relateditems/RelatedItemsShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/relateditems/RelatedItemsShowcase.kt @@ -20,7 +20,7 @@ import com.algolia.instantsearch.relateditems.connectRelatedHitsView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Product +import com.algolia.instantsearch.examples.showcase.shared.model.Product import com.algolia.instantsearch.examples.showcase.compose.showcaseTitle import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.GreyLight diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAsYouTypeShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAsYouTypeShowcase.kt index 023c71d1f..8baa033f1 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAsYouTypeShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAsYouTypeShowcase.kt @@ -18,7 +18,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.component.MoviesList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAutoCompleteShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAutoCompleteShowcase.kt index 2ad02101c..ac8fb52f1 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAutoCompleteShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchAutoCompleteShowcase.kt @@ -19,7 +19,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.component.AutoCompleteTextField import com.algolia.instantsearch.examples.showcase.compose.ui.component.TitleTopBar diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchOnSubmitShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchOnSubmitShowcase.kt index 1df7c8855..04ad6bb03 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchOnSubmitShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/search/SearchOnSubmitShowcase.kt @@ -18,7 +18,7 @@ import com.algolia.instantsearch.searchbox.connectView import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.compose.client import com.algolia.instantsearch.examples.showcase.compose.configureSearcher -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.stubIndexName import com.algolia.instantsearch.examples.showcase.compose.ui.ShowcaseTheme import com.algolia.instantsearch.examples.showcase.compose.ui.component.MoviesList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/sortby/SortByShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/sortby/SortByShowcase.kt index 52d803534..8e03d75db 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/sortby/SortByShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/sortby/SortByShowcase.kt @@ -19,7 +19,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.sortby.SortByConnector import com.algolia.instantsearch.sortby.connectView import com.algolia.instantsearch.examples.showcase.compose.client -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.showcaseTitle import com.algolia.instantsearch.examples.showcase.compose.ui.component.DropdownTextField import com.algolia.instantsearch.examples.showcase.compose.ui.component.MoviesList diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ActorsList.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ActorsList.kt index 4a2a50173..832e687db 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ActorsList.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ActorsList.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.items -import com.algolia.instantsearch.examples.showcase.compose.model.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Actor @Composable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/MoviesList.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/MoviesList.kt index 74271e4f3..a4eefd4a3 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/MoviesList.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/MoviesList.kt @@ -21,7 +21,7 @@ import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.items import coil.compose.rememberImagePainter import com.algolia.instantsearch.compose.highlighting.toAnnotatedString -import com.algolia.instantsearch.examples.showcase.compose.model.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.compose.ui.GreyDark import java.util.* diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ProductList.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ProductList.kt index a7cf0f030..2b18e7789 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ProductList.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/ui/component/ProductList.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil.compose.rememberImagePainter -import com.algolia.instantsearch.examples.showcase.compose.model.Product +import com.algolia.instantsearch.examples.showcase.shared.model.Product @Composable fun ProductList( diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Actor.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Actor.kt similarity index 78% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Actor.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Actor.kt index 466e0fba8..e081eae07 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Actor.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Actor.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.compose.model +package com.algolia.instantsearch.examples.showcase.shared.model import com.algolia.search.model.ObjectID import com.algolia.search.model.indexing.Indexable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/Banner.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Banner.kt similarity index 72% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/Banner.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Banner.kt index 58cab97b4..d55ce9cdf 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/Banner.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Banner.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.view.customdata +package com.algolia.instantsearch.examples.showcase.shared.model import kotlinx.serialization.Serializable @@ -9,3 +9,4 @@ data class Banner( val link: String, val redirect: String? ) + diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryHit.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/DirectoryHit.kt similarity index 85% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryHit.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/DirectoryHit.kt index 1574d09a2..797c2ea87 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/directory/DirectoryHit.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/DirectoryHit.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.compose.directory +package com.algolia.instantsearch.examples.showcase.shared.model import com.algolia.instantsearch.highlighting.Highlightable import com.algolia.search.model.Attribute @@ -14,7 +14,7 @@ data class DirectoryHit( val type: String, val index: String, override val _highlightResult: JsonObject? = null -) : Indexable, Highlightable { +): Indexable, Highlightable { public val highlightedName get() = getHighlight(Attribute("name"), preTag = "", postTag = "") diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Movie.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Movie.kt similarity index 92% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Movie.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Movie.kt index e8dab1798..df2f1f06b 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Movie.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Movie.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.compose.model +package com.algolia.instantsearch.examples.showcase.shared.model import com.algolia.instantsearch.highlighting.Highlightable import com.algolia.search.model.Attribute diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Product.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Product.kt similarity index 90% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Product.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Product.kt index 5efd76a9c..373261e42 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/compose/model/Product.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Product.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.compose.model +package com.algolia.instantsearch.examples.showcase.shared.model import com.algolia.search.model.ObjectID import com.algolia.search.model.indexing.Indexable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/suggestion/Suggestion.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Suggestion.kt similarity index 89% rename from examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/suggestion/Suggestion.kt rename to examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Suggestion.kt index b718b2017..c651ceec0 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/suggestion/Suggestion.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/shared/model/Suggestion.kt @@ -1,4 +1,4 @@ -package com.algolia.instantsearch.examples.showcase.view.list.suggestion +package com.algolia.instantsearch.examples.showcase.shared.model import com.algolia.instantsearch.core.highlighting.HighlightedString import com.algolia.instantsearch.highlighting.Highlightable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/QueryRuleCustomDataShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/QueryRuleCustomDataShowcase.kt index 6ea82058f..ee5119221 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/QueryRuleCustomDataShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/customdata/QueryRuleCustomDataShowcase.kt @@ -12,13 +12,14 @@ import com.algolia.instantsearch.customdata.QueryRuleCustomDataConnector import com.algolia.instantsearch.examples.R import com.algolia.instantsearch.examples.databinding.IncludeSearchInfoBinding import com.algolia.instantsearch.examples.databinding.ShowcaseQueryRuleCustomDataBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Banner import com.algolia.instantsearch.examples.showcase.shared.customdata.TemplateActivity.Companion.EXTRA_CONTENT +import com.algolia.instantsearch.examples.showcase.shared.model.Product import com.algolia.instantsearch.examples.showcase.view.client import com.algolia.instantsearch.examples.showcase.view.configureRecyclerView import com.algolia.instantsearch.examples.showcase.view.configureSearchView import com.algolia.instantsearch.examples.showcase.view.configureSearcher import com.algolia.instantsearch.examples.showcase.view.configureToolbar -import com.algolia.instantsearch.examples.showcase.view.list.product.Product import com.algolia.instantsearch.examples.showcase.view.list.product.ProductAdapter import com.algolia.instantsearch.examples.showcase.view.stubIndexName import com.algolia.instantsearch.searchbox.SearchBoxConnector diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/AndroidViewDirectoryShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/AndroidViewDirectoryShowcase.kt index 9821de106..f9a44705c 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/AndroidViewDirectoryShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/AndroidViewDirectoryShowcase.kt @@ -9,6 +9,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseDirectoryBinding +import com.algolia.instantsearch.examples.showcase.shared.model.DirectoryHit import com.algolia.search.helper.deserialize import com.algolia.search.model.IndexName import com.algolia.search.model.search.Query diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryHit.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryHit.kt index 339364db9..ebea3ac57 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryHit.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryHit.kt @@ -1,22 +1,3 @@ package com.algolia.instantsearch.examples.showcase.view.directory -import com.algolia.instantsearch.highlighting.Highlightable -import com.algolia.search.model.Attribute -import com.algolia.search.model.ObjectID -import com.algolia.search.model.indexing.Indexable -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonObject - -@Serializable -data class DirectoryHit( - override val objectID: ObjectID, - val name: String, - val type: String, - val index: String, - override val _highlightResult: JsonObject? = null -): Indexable, Highlightable { - - public val highlightedName - get() = getHighlight(Attribute("name"), preTag = "", postTag = "") -} diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryItem.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryItem.kt index 001346cf8..54be4ffac 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryItem.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/directory/DirectoryItem.kt @@ -1,5 +1,7 @@ package com.algolia.instantsearch.examples.showcase.view.directory +import com.algolia.instantsearch.examples.showcase.shared.model.DirectoryHit + sealed class DirectoryItem { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingAdapter.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingAdapter.kt index 58a45b62e..658fa5458 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingAdapter.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingAdapter.kt @@ -5,7 +5,7 @@ import androidx.recyclerview.widget.ListAdapter import com.algolia.instantsearch.core.hits.HitsView import com.algolia.instantsearch.examples.databinding.ListItemHighlightingBinding import com.algolia.instantsearch.examples.showcase.view.layoutInflater -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieDiffUtil class HighlightingAdapter : ListAdapter(MovieDiffUtil), diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingShowcase.kt index dfef8a483..9fea5c67d 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingShowcase.kt @@ -9,7 +9,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseHighlightingBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.search.helper.deserialize class HighlightingShowcase : AppCompatActivity() { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingViewHolder.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingViewHolder.kt index 016898228..e1f9db916 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingViewHolder.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/highlighting/HighlightingViewHolder.kt @@ -10,7 +10,7 @@ import androidx.core.text.italic import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.android.highlighting.toSpannedString import com.algolia.instantsearch.examples.databinding.ListItemHighlightingBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.bumptech.glide.Glide class HighlightingViewHolder(private val binding: ListItemHighlightingBinding) : diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/Actor.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/Actor.kt deleted file mode 100644 index 76f3b91b5..000000000 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/Actor.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.algolia.instantsearch.examples.showcase.view.list.actor - -import com.algolia.search.model.ObjectID -import com.algolia.search.model.indexing.Indexable -import kotlinx.serialization.Serializable - -@Serializable -data class Actor( - val name: String, - override val objectID: ObjectID -) : Indexable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorAdapterNested.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorAdapterNested.kt index d3cff421a..c6984b8f0 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorAdapterNested.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorAdapterNested.kt @@ -4,6 +4,7 @@ import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import com.algolia.instantsearch.examples.databinding.ListItemActorBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Actor import com.algolia.instantsearch.examples.showcase.view.layoutInflater class ActorAdapterNested : PagingDataAdapter(this) { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolder.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolder.kt index 76c09ba92..e9f9e7fee 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolder.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolder.kt @@ -2,6 +2,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.actor import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.examples.databinding.ListItemActorBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Actor class ActorViewHolder(private val binding: ListItemActorBinding) : RecyclerView.ViewHolder(binding.root) { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolderSmall.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolderSmall.kt index 01f77a818..923d259d9 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolderSmall.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/actor/ActorViewHolderSmall.kt @@ -2,6 +2,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.actor import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.examples.databinding.ListItemSmallBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Actor class ActorViewHolderSmall(val binding: ListItemSmallBinding) : RecyclerView.ViewHolder(binding.root) { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/ActorsAdapter.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/ActorsAdapter.kt index 83655cfe3..a192383cf 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/ActorsAdapter.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/ActorsAdapter.kt @@ -5,8 +5,8 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import com.algolia.instantsearch.core.hits.HitsView import com.algolia.instantsearch.examples.databinding.ListItemSmallBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Actor import com.algolia.instantsearch.examples.showcase.view.layoutInflater -import com.algolia.instantsearch.examples.showcase.view.list.actor.Actor import com.algolia.instantsearch.examples.showcase.view.list.actor.ActorViewHolderSmall class ActorsAdapter : ListAdapter(ActorsAdapter), HitsView { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/MergedListShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/MergedListShowcase.kt index d464fae80..1a8cb49b5 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/MergedListShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/merged/MergedListShowcase.kt @@ -13,8 +13,8 @@ import com.algolia.instantsearch.searcher.multi.MultiSearcher import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseMultisearchBinding -import com.algolia.instantsearch.examples.showcase.view.list.actor.Actor -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapter import com.algolia.search.helper.deserialize import com.algolia.search.model.IndexName diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/Movie.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/Movie.kt deleted file mode 100644 index 1a6ac6263..000000000 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/Movie.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.algolia.instantsearch.examples.showcase.view.list.movie - -import com.algolia.instantsearch.highlighting.Highlightable -import com.algolia.search.model.Attribute -import com.algolia.search.model.ObjectID -import com.algolia.search.model.indexing.Indexable -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonObject - - -@Serializable -data class Movie( - val title: String, - val year: String, - val genre: List, - val image: String, - override val objectID: ObjectID, - override val _highlightResult: JsonObject? -) : Indexable, Highlightable { - - public val highlightedTitle - get() = getHighlight(Attribute("title")) - - public val highlightedGenres - get() = getHighlights(Attribute("genre")) - - public val highlightedActors - get() = getHighlights(Attribute("actors")) -} diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapter.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapter.kt index eb3e90d77..9f16b7d0e 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapter.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapter.kt @@ -4,6 +4,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.ListAdapter import com.algolia.instantsearch.core.hits.HitsView import com.algolia.instantsearch.examples.databinding.ListItemLargeBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.layoutInflater class MovieAdapter : ListAdapter(MovieDiffUtil), HitsView { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterNested.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterNested.kt index 58efb0d80..577955c23 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterNested.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterNested.kt @@ -3,6 +3,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.movie import android.view.ViewGroup import androidx.paging.PagingDataAdapter import com.algolia.instantsearch.examples.databinding.ListItemMovieBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.dip import com.algolia.instantsearch.examples.showcase.view.layoutInflater diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterPaged.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterPaged.kt index 472956136..748466d99 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterPaged.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieAdapterPaged.kt @@ -3,6 +3,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.movie import android.view.ViewGroup import androidx.paging.PagingDataAdapter import com.algolia.instantsearch.examples.databinding.ListItemLargeBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.layoutInflater class MovieAdapterPaged : PagingDataAdapter(MovieDiffUtil) { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieDiffUtil.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieDiffUtil.kt index ccae515c6..d5d48cb5f 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieDiffUtil.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieDiffUtil.kt @@ -1,6 +1,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.movie import androidx.recyclerview.widget.DiffUtil +import com.algolia.instantsearch.examples.showcase.shared.model.Movie object MovieDiffUtil : DiffUtil.ItemCallback() { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolder.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolder.kt index a6b3e8e21..5d2bf188d 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolder.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolder.kt @@ -6,6 +6,7 @@ import androidx.core.text.italic import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.android.highlighting.toSpannedString import com.algolia.instantsearch.examples.databinding.ListItemLargeBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.bumptech.glide.Glide class MovieViewHolder(private val binding: ListItemLargeBinding) : RecyclerView.ViewHolder(binding.root) { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolderNested.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolderNested.kt index 8080026a4..c758b3c1d 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolderNested.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/movie/MovieViewHolderNested.kt @@ -2,6 +2,7 @@ package com.algolia.instantsearch.examples.showcase.view.list.movie import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.examples.databinding.ListItemMovieBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.bumptech.glide.Glide class MovieViewHolderNested(private val binding: ListItemMovieBinding) : diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingMultipleIndexShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingMultipleIndexShowcase.kt index 6ec2c6949..7ce1016f4 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingMultipleIndexShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingMultipleIndexShowcase.kt @@ -9,17 +9,20 @@ import com.algolia.instantsearch.android.paging3.searchbox.connectPaginator import com.algolia.instantsearch.android.searchbox.SearchBoxViewAppCompat import com.algolia.instantsearch.core.connection.ConnectionHandler import com.algolia.instantsearch.examples.R -import com.algolia.instantsearch.searchbox.SearchBoxConnector -import com.algolia.instantsearch.searchbox.connectView -import com.algolia.instantsearch.searcher.hits.addHitsSearcher -import com.algolia.instantsearch.searcher.multi.MultiSearcher -import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseSearchBinding -import com.algolia.instantsearch.examples.showcase.view.list.actor.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Actor +import com.algolia.instantsearch.examples.showcase.shared.model.Movie +import com.algolia.instantsearch.examples.showcase.view.client +import com.algolia.instantsearch.examples.showcase.view.configureRecyclerView +import com.algolia.instantsearch.examples.showcase.view.configureSearchView +import com.algolia.instantsearch.examples.showcase.view.configureToolbar import com.algolia.instantsearch.examples.showcase.view.list.actor.ActorAdapterNested -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapterNested +import com.algolia.instantsearch.searchbox.SearchBoxConnector +import com.algolia.instantsearch.searchbox.connectView +import com.algolia.instantsearch.searcher.hits.addHitsSearcher +import com.algolia.instantsearch.searcher.multi.MultiSearcher import com.algolia.search.model.IndexName class PagingMultipleIndexShowcase : AppCompatActivity() { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingSingleIndexShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingSingleIndexShowcase.kt index bc1daade7..bcbc5fe6c 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingSingleIndexShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/paging/PagingSingleIndexShowcase.kt @@ -9,14 +9,20 @@ import com.algolia.instantsearch.android.paging3.searchbox.connectPaginator import com.algolia.instantsearch.android.searchbox.SearchBoxViewAppCompat import com.algolia.instantsearch.core.connection.ConnectionHandler import com.algolia.instantsearch.examples.R -import com.algolia.instantsearch.searchbox.SearchBoxConnector -import com.algolia.instantsearch.searchbox.connectView -import com.algolia.instantsearch.searcher.hits.HitsSearcher -import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcasePagingBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie +import com.algolia.instantsearch.examples.showcase.view.client +import com.algolia.instantsearch.examples.showcase.view.configureRecyclerView +import com.algolia.instantsearch.examples.showcase.view.configureSearchView +import com.algolia.instantsearch.examples.showcase.view.configureSearcher +import com.algolia.instantsearch.examples.showcase.view.configureToolbar import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapterPaged +import com.algolia.instantsearch.examples.showcase.view.onResponseChangedThenUpdateNbHits +import com.algolia.instantsearch.examples.showcase.view.stubIndexName +import com.algolia.instantsearch.searchbox.SearchBoxConnector +import com.algolia.instantsearch.searchbox.connectView +import com.algolia.instantsearch.searcher.hits.HitsSearcher class PagingSingleIndexShowcase : AppCompatActivity() { diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/Product.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/Product.kt deleted file mode 100644 index 8e801014b..000000000 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/Product.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.algolia.instantsearch.examples.showcase.view.list.product - -import com.algolia.search.model.ObjectID -import com.algolia.search.model.indexing.Indexable -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class Product( - val name: String, - val description: String, - val brand: String? = null, - val categories: List, - val type: String, - val price: Double, - @SerialName("price_range") val priceRange: String, - val image: String, - val url: String, - @SerialName("free_shipping") val freeShipping: Boolean, - val rating: Int = 0, - val popularity: Long, - override val objectID: ObjectID -) : Indexable diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/ProductAdapter.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/ProductAdapter.kt index 50a82d457..ce588f011 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/ProductAdapter.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/list/product/ProductAdapter.kt @@ -6,6 +6,7 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.algolia.instantsearch.core.hits.HitsView import com.algolia.instantsearch.examples.databinding.ListItemProductBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Product import com.algolia.instantsearch.examples.showcase.view.layoutInflater import com.bumptech.glide.Glide diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/loading/LoadingShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/loading/LoadingShowcase.kt index 0ac92e470..280aae239 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/loading/LoadingShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/loading/LoadingShowcase.kt @@ -15,7 +15,7 @@ import com.algolia.instantsearch.examples.R import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseLoadingBinding import com.algolia.instantsearch.examples.showcase.view.* -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapterPaged import com.algolia.instantsearch.searchbox.SearchBoxConnector import com.algolia.instantsearch.searchbox.connectView diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/relateditems/RelatedItemsShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/relateditems/RelatedItemsShowcase.kt index 176d3ac45..7a06e4c77 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/relateditems/RelatedItemsShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/relateditems/RelatedItemsShowcase.kt @@ -4,13 +4,17 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.algolia.instantsearch.core.connection.ConnectionHandler import com.algolia.instantsearch.core.hits.connectHitsView +import com.algolia.instantsearch.examples.databinding.ShowcaseRelateditemsBinding +import com.algolia.instantsearch.examples.showcase.shared.model.Product +import com.algolia.instantsearch.examples.showcase.view.client +import com.algolia.instantsearch.examples.showcase.view.configureRecyclerView +import com.algolia.instantsearch.examples.showcase.view.configureSearcher +import com.algolia.instantsearch.examples.showcase.view.configureToolbar +import com.algolia.instantsearch.examples.showcase.view.list.product.ProductAdapter +import com.algolia.instantsearch.examples.showcase.view.stubIndexName import com.algolia.instantsearch.relateditems.MatchingPattern import com.algolia.instantsearch.relateditems.connectRelatedHitsView import com.algolia.instantsearch.searcher.hits.HitsSearcher -import com.algolia.instantsearch.examples.showcase.view.* -import com.algolia.instantsearch.examples.databinding.ShowcaseRelateditemsBinding -import com.algolia.instantsearch.examples.showcase.view.list.product.Product -import com.algolia.instantsearch.examples.showcase.view.list.product.ProductAdapter import com.algolia.search.helper.deserialize import com.algolia.search.model.Attribute @@ -43,7 +47,11 @@ class RelatedItemsShowcase : AppCompatActivity() { MatchingPattern(Attribute("categories"), 2, Product::categories) ) hitsAdapter.callback = { product -> - connection += relatedItemsSearcher.connectRelatedHitsView(relatedItemsAdapter, product, matchingPatterns) { response -> + connection += relatedItemsSearcher.connectRelatedHitsView( + relatedItemsAdapter, + product, + matchingPatterns + ) { response -> response.hits.deserialize(Product.serializer()) } relatedItemsSearcher.searchAsync() diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAsYouTypeShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAsYouTypeShowcase.kt index 20a2ed1c6..f6e81fd06 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAsYouTypeShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAsYouTypeShowcase.kt @@ -13,7 +13,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseSearchBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapter import com.algolia.search.helper.deserialize diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAutoCompleteTextView.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAutoCompleteTextView.kt index 2b12cfbd8..add3e4246 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAutoCompleteTextView.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchAutoCompleteTextView.kt @@ -16,7 +16,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.view.client import com.algolia.instantsearch.examples.showcase.view.configureSearcher import com.algolia.instantsearch.examples.databinding.ShowcaseSearchAutocompleteBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.stubIndexName import com.algolia.search.helper.deserialize diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchOnSubmitShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchOnSubmitShowcase.kt index 82e8a8212..84a02aeca 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchOnSubmitShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/search/SearchOnSubmitShowcase.kt @@ -13,7 +13,7 @@ import com.algolia.instantsearch.searcher.hits.HitsSearcher import com.algolia.instantsearch.examples.showcase.view.* import com.algolia.instantsearch.examples.databinding.IncludeSearchBinding import com.algolia.instantsearch.examples.databinding.ShowcaseSearchBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapter import com.algolia.search.helper.deserialize diff --git a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/sortby/SortByShowcase.kt b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/sortby/SortByShowcase.kt index aa2d72b4a..0b60d1082 100644 --- a/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/sortby/SortByShowcase.kt +++ b/examples/src/main/kotlin/com/algolia/instantsearch/examples/showcase/view/sortby/SortByShowcase.kt @@ -14,7 +14,7 @@ import com.algolia.instantsearch.examples.showcase.view.client import com.algolia.instantsearch.examples.showcase.view.configureRecyclerView import com.algolia.instantsearch.examples.showcase.view.configureToolbar import com.algolia.instantsearch.examples.databinding.ShowcaseSortByBinding -import com.algolia.instantsearch.examples.showcase.view.list.movie.Movie +import com.algolia.instantsearch.examples.showcase.shared.model.Movie import com.algolia.instantsearch.examples.showcase.view.list.movie.MovieAdapter import com.algolia.search.helper.deserialize import com.algolia.search.model.IndexName diff --git a/gradle.properties b/gradle.properties index 049f65f4e..5a9de87a1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,7 @@ kotlin.mpp.enableGranularSourceSetsMetadata=true kotlin.native.enableDependencyPropagation=false android.useAndroidX=true android.disableAutomaticComponentCreation=true +android.enableR8.fullMode=true # Lib GROUP=com.algolia diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 90ae50297..931d6638a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -54,6 +54,10 @@ logback-classic = { group = "ch.qos.logback", name = "logback-classic", version [plugins] kotlin-multiplaform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -android = { id = "com.android.library", version = "7.1.2" } +android-library = { id = "com.android.library", version = "7.1.2" } +android-application = { id = "com.android.library", version = "7.1.2" } maven-publish = { id = "com.vanniktech.maven.publish", version = "0.18.0" } spotless = { id = "com.diffplug.gradle.spotless", version = "6.4.1" } +google-services = { id = "com.google.gms.google-services", version = "4.3.10"} +firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "2.8.1"} +firebase-perf = { id = "com.google.firebase.firebase-perf", version = "1.4.1"}