From 9e17590e4d9932729a85d9715e918832ddc8954e Mon Sep 17 00:00:00 2001 From: Rikin Marfatia Date: Mon, 8 Jul 2024 15:09:34 -0700 Subject: [PATCH 1/3] Replaced android directory with new android app --- android/.editorconfig | 9 - android/.gitignore | 17 +- android/app/.gitignore | 1 + android/app/build.gradle.kts | 110 +++--- android/app/proguard-rules.pro | 102 +---- .../hackernews/MainActivitySnapshotTest.kt | 26 -- .../hackernews/StoryComposableSnapshotTest.kt | 31 -- android/app/src/main/AndroidManifest.xml | 71 ++-- .../dev/supergooey/HackerNewsApplication.kt | 22 ++ .../dev/supergooey/hackernews/MainActivity.kt | 57 +++ .../hackernews/data/HackerNewsBaseClient.kt | 44 +++ .../hackernews/data/HackerNewsSearchClient.kt | 36 ++ .../features/comments/CommentsDomain.kt | 98 +++++ .../features/comments/CommentsRouting.kt | 35 ++ .../features/comments/CommentsScreen.kt | 257 +++++++++++++ .../comments/HtmlToAnnotatedString.kt | 154 ++++++++ .../features/stories/StoriesDomain.kt | 130 +++++++ .../features/stories/StoriesRouting.kt | 69 ++++ .../features/stories/StoriesScreen.kt | 348 ++++++++++++++++++ .../features/stories/StoryScreen.kt | 40 ++ .../supergooey/hackernews/ui/theme/Color.kt | 14 + .../supergooey/hackernews/ui/theme/Theme.kt | 48 +++ .../supergooey/hackernews/ui/theme/Type.kt | 50 +++ .../emergetools/hackernews/HNApplication.kt | 12 - .../emergetools/hackernews/MainActivity.kt | 26 -- .../emergetools/hackernews/network/HNApi.kt | 31 -- .../hackernews/network/models/Item.kt | 96 ----- .../emergetools/hackernews/ui/HNNavHost.kt | 142 ------- .../com/emergetools/hackernews/ui/HNTheme.kt | 67 ---- .../emergetools/hackernews/ui/ItemBuilder.kt | 31 -- .../ui/annotations/FontScalePreviews.kt | 13 - .../ui/annotations/LightDarkPreviews.kt | 14 - .../ui/annotations/SnapshotTestingPreviews.kt | 5 - .../hackernews/ui/comments/CommentsScreen.kt | 117 ------ .../hackernews/ui/items/Comment.kt | 56 --- .../emergetools/hackernews/ui/items/Story.kt | 154 -------- .../hackernews/ui/shared/LoadingIndicator.kt | 45 --- .../hackernews/ui/stories/StoriesScreen.kt | 230 ------------ .../hackernews/ui/story/StoryScreen.kt | 89 ----- .../hackernews/utils/CoroutineUtils.kt | 37 -- .../emergetools/hackernews/utils/TimeUtils.kt | 80 ---- android/app/src/main/res/drawable/ic_chat.xml | 10 + .../res/drawable/ic_launcher_background.xml | 170 +++++++++ .../res/drawable/ic_launcher_foreground.xml | 30 ++ .../app/src/main/res/drawable/sample.9.png | Bin 1249 -> 0 bytes .../src/main/res/font/ibm_plex_sans_bold.ttf | Bin 0 -> 135932 bytes .../main/res/font/ibm_plex_sans_medium.ttf | Bin 0 -> 177104 bytes .../main/res/font/ibm_plex_sans_regular.ttf | Bin 0 -> 133720 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 - .../main/res/mipmap-anydpi/ic_launcher.xml | 6 + .../res/mipmap-anydpi/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1324 -> 0 bytes .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 1455 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 3287 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 905 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 959 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2066 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 1823 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 1965 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 4863 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 2887 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 3255 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 7601 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 4013 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 4538 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 11242 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes android/app/src/main/res/values/colors.xml | 13 +- .../res/values/ic_launcher_background.xml | 4 - android/app/src/main/res/values/strings.xml | 62 +--- android/app/src/main/res/values/themes.xml | 10 +- android/app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + android/build.gradle.kts | 8 +- android/gradle.properties | 14 +- android/gradle/libs.versions.toml | 105 +++--- android/gradle/wrapper/gradle-wrapper.jar | Bin 60756 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/gradlew | 263 ++++++------- android/gradlew.bat | 14 +- android/performance/build.gradle.kts | 7 - .../performance/src/main/AndroidManifest.xml | 2 - .../hackernews/performance/CustomSpanTest.kt | 42 --- android/settings.gradle.kts | 21 +- 94 files changed, 1948 insertions(+), 1898 deletions(-) delete mode 100644 android/.editorconfig create mode 100644 android/app/.gitignore delete mode 100644 android/app/src/androidTest/kotlin/com/emergetools/hackernews/MainActivitySnapshotTest.kt delete mode 100644 android/app/src/androidTest/kotlin/com/emergetools/hackernews/StoryComposableSnapshotTest.kt create mode 100644 android/app/src/main/java/dev/supergooey/HackerNewsApplication.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/MainActivity.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsBaseClient.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsSearchClient.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsDomain.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsRouting.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsScreen.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/comments/HtmlToAnnotatedString.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesDomain.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesRouting.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesScreen.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoryScreen.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Color.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Theme.kt create mode 100644 android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Type.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/HNApplication.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/MainActivity.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/network/HNApi.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/network/models/Item.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNNavHost.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNTheme.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/ItemBuilder.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/FontScalePreviews.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/LightDarkPreviews.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/SnapshotTestingPreviews.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/comments/CommentsScreen.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Comment.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Story.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/shared/LoadingIndicator.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/stories/StoriesScreen.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/ui/story/StoryScreen.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/utils/CoroutineUtils.kt delete mode 100644 android/app/src/main/kotlin/com/emergetools/hackernews/utils/TimeUtils.kt create mode 100644 android/app/src/main/res/drawable/ic_chat.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 android/app/src/main/res/drawable/sample.9.png create mode 100644 android/app/src/main/res/font/ibm_plex_sans_bold.ttf create mode 100644 android/app/src/main/res/font/ibm_plex_sans_medium.ttf create mode 100644 android/app/src/main/res/font/ibm_plex_sans_regular.ttf delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-anydpi/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android/app/src/main/res/xml/backup_rules.xml create mode 100644 android/app/src/main/res/xml/data_extraction_rules.xml delete mode 100644 android/performance/build.gradle.kts delete mode 100644 android/performance/src/main/AndroidManifest.xml delete mode 100644 android/performance/src/main/java/com/emergetools/hackernews/performance/CustomSpanTest.kt diff --git a/android/.editorconfig b/android/.editorconfig deleted file mode 100644 index c6c8b362..00000000 --- a/android/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/android/.gitignore b/android/.gitignore index 8df34213..aa724b77 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -1,12 +1,15 @@ -build/ +*.iml .gradle - +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build /captures .externalNativeBuild .cxx - -/local.properties local.properties - -.idea/ -*.iml \ No newline at end of file diff --git a/android/app/.gitignore b/android/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/android/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 4afebae2..5f89554e 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,103 +1,85 @@ plugins { alias(libs.plugins.android.application) - alias(libs.plugins.emerge) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.emerge) } android { + namespace = "dev.supergooey.hackernews" compileSdk = 34 - namespace = "com.emergetools.hackernews" defaultConfig { - applicationId = "com.emergetools.hackernews" - minSdk = 24 + applicationId = "dev.supergooey.hackernews" + minSdk = 33 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } } buildTypes { - release { - isMinifyEnabled = true - isShrinkResources = true - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - ) - signingConfig = signingConfigs.getByName("debug") - } debug { - applicationIdSuffix = ".debug" + isDebuggable = false + } + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } - } - buildFeatures { - compose = true } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = JavaVersion.VERSION_17.toString() + jvmTarget = "1.8" } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.extension.get() - } -} - -emerge { - // apiToken is implicitly set from the EMERGE_API_TOKEN environment variable - - performance { - projectPath.set(":performance") + buildFeatures { + compose = true } - - snapshots { - tag.set("snapshot") + composeOptions { + kotlinCompilerExtensionVersion = "1.5.1" } - - vcs { - gitHub { - repoName.set("hackernews") - repoOwner.set("EmergeTools") + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { - implementation(libs.accompanist.navigationanim) - implementation(libs.accompanist.webview) - implementation(libs.androidx.appcompat) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.viewmodel) + implementation(libs.androidx.navigation) implementation(libs.androidx.activity.compose) - implementation(libs.emerge.snapshots.annotations) - implementation(libs.androidx.datastore.preferences) - implementation(libs.kotlinx.serialization) - implementation(libs.material.core) - implementation(libs.material.compose.core) - implementation(libs.material.compose.icons) - implementation(libs.mavericks.compose) - implementation(libs.navigation.compose.core) - implementation(libs.navigation.compose.ktx) - implementation(libs.okhttp) - implementation(libs.retrofit.core) - implementation(libs.retrofit.serialization) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + implementation(libs.androidx.browser) - implementation(platform(libs.compose.bom)) - implementation(libs.compose.ui.tooling) - implementation(libs.compose.ui.tooling.preview) + implementation(libs.okhttp) + implementation(libs.retrofit) + implementation(libs.retrofit.kotlinx.serialization) + implementation(libs.kotlinx.serialization.json) - debugImplementation(libs.compose.ui.test.manifest) + implementation(libs.accompanist.webview) testImplementation(libs.junit) - + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) androidTestImplementation(libs.emerge.snapshots) - androidTestImplementation(libs.junit) - androidTestImplementation(libs.androidx.core) - androidTestImplementation(libs.androidx.fragment) - androidTestImplementation(libs.androidx.test.core) - androidTestImplementation(libs.androidx.test.ext.junit) - androidTestImplementation(libs.androidx.test.rules) -} + + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) +} \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index e0fde437..481bb434 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle.kts. +# proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html @@ -12,98 +12,10 @@ # public *; #} -# Preserve the line number information for debugging stack traces. --keepattributes SourceFile,LineNumberTable -# Hide the original source file name. --renamesourcefileattribute SourceFile +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable --keepattributes *Annotation*, InnerClasses --dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations - -# TODO: Check if we need to keep these serializer specific rules with a release build -# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer --keepclassmembers class kotlinx.serialization.json.** { - *** Companion; -} --keepclasseswithmembers class kotlinx.serialization.json.** { - kotlinx.serialization.KSerializer serializer(...); -} - --keep,includedescriptorclasses class com.emergetools.hackernews.**$$serializer { *; } --keepclassmembers class com.emergetools.hackernews.** { - *** Companion; -} --keepclasseswithmembers class com.emergetools.hackernews.** { - kotlinx.serialization.KSerializer serializer(...); -} - -# https://github.com/square/retrofit/blob/trunk/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro -# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and -# EnclosingMethod is required to use InnerClasses. --keepattributes Signature, InnerClasses, EnclosingMethod - -# Retrofit does reflection on method and parameter annotations. --keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations - -# Keep annotation default values (e.g., retrofit2.http.Field.encoded). --keepattributes AnnotationDefault - -# Retain service method parameters when optimizing. --keepclassmembers,allowshrinking,allowobfuscation interface * { - @retrofit2.http.* ; -} - -# Ignore annotation used for build tooling. --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement - -# Ignore JSR 305 annotations for embedding nullability information. --dontwarn javax.annotation.** - -# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. --dontwarn kotlin.Unit - -# Top-level functions that can only be used by Kotlin. --dontwarn retrofit2.KotlinExtensions --dontwarn retrofit2.KotlinExtensions$* - -# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy -# and replaces all potential values with null. Explicitly keeping the interfaces prevents this. --if interface * { @retrofit2.http.* ; } --keep,allowobfuscation interface <1> - -# Keep inherited services. --if interface * { @retrofit2.http.* ; } --keep,allowobfuscation interface * extends <1> - -# With R8 full mode generic signatures are stripped for classes that are not -# kept. Suspend functions are wrapped in continuations where the type argument -# is used. --keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation - -# R8 full mode strips generic signatures from return types if not kept. --if interface * { @retrofit2.http.* public *** *(...); } --keep,allowoptimization,allowshrinking,allowobfuscation class <3> - -# With R8 full mode generic signatures are stripped for classes that are not kept. --keep,allowobfuscation,allowshrinking class retrofit2.Response - -# JSR 305 annotations are for embedding nullability information. --dontwarn javax.annotation.** - -# https://raw.githubusercontent.com/square/okhttp/master/okhttp/src/main/resources/META-INF/proguard/okhttp3.pro -# A resource is loaded with a relative path so the package of this class must be preserved. --keeppackagenames okhttp3.internal.publicsuffix.* --adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz - -# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. --dontwarn org.codehaus.mojo.animal_sniffer.* - -# OkHttp platform used only on JVM and when Conscrypt and other security providers are available. --dontwarn okhttp3.internal.platform.** --dontwarn org.conscrypt.** --dontwarn org.bouncycastle.** --dontwarn org.openjsse.** - --keep class okio.** { *; } - --dontobfuscate +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/android/app/src/androidTest/kotlin/com/emergetools/hackernews/MainActivitySnapshotTest.kt b/android/app/src/androidTest/kotlin/com/emergetools/hackernews/MainActivitySnapshotTest.kt deleted file mode 100644 index 725fd056..00000000 --- a/android/app/src/androidTest/kotlin/com/emergetools/hackernews/MainActivitySnapshotTest.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.emergetools.hackernews - -import androidx.test.ext.junit.rules.ActivityScenarioRule -import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner -import com.emergetools.snapshots.EmergeSnapshots -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith - -@RunWith(AndroidJUnit4ClassRunner::class) -class MainActivitySnapshotTest { - - @get:Rule - val activityScenarioRule = ActivityScenarioRule(MainActivity::class.java) - - @get:Rule - val snapshots = EmergeSnapshots() - - @Test - fun mainActivity() { - val scenario = activityScenarioRule.scenario - scenario.onActivity { - snapshots.take("Main Activity", it) - } - } -} diff --git a/android/app/src/androidTest/kotlin/com/emergetools/hackernews/StoryComposableSnapshotTest.kt b/android/app/src/androidTest/kotlin/com/emergetools/hackernews/StoryComposableSnapshotTest.kt deleted file mode 100644 index 979fe160..00000000 --- a/android/app/src/androidTest/kotlin/com/emergetools/hackernews/StoryComposableSnapshotTest.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.emergetools.hackernews - -import androidx.compose.runtime.Composable -import androidx.compose.ui.tooling.preview.Preview -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.items.BuildStory - -/** - * Example generated snapshot test from androidTest source set. - * To generate a snapshot test for this preview, add the androidTest source set to the debug variant. - */ -@Preview -@Composable -fun StoryRow() { - val mockStory = Story( - id = 1, - by = "Ryan B", - time = 0, - title = "Mock Story title for snapshot", - text = "This is a mock story I wrote for the test", - url = "https://www.example.com", - score = 100, - descendants = 10, - comments = emptyList() - ) - BuildStory( - story = mockStory, - onItemClick = {}, - onItemButtonClick = {} - ) -} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e42bc1b4..2250cda0 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,42 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/HackerNewsApplication.kt b/android/app/src/main/java/dev/supergooey/HackerNewsApplication.kt new file mode 100644 index 00000000..aa97f358 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/HackerNewsApplication.kt @@ -0,0 +1,22 @@ +package dev.supergooey + +import android.app.Application +import android.content.Context +import dev.supergooey.hackernews.data.HackerNewsBaseClient +import dev.supergooey.hackernews.data.HackerNewsSearchClient +import kotlinx.serialization.json.Json + +class HackerNewsApplication: Application() { + private val json = Json { ignoreUnknownKeys = true } + + val baseClient = HackerNewsBaseClient(json) + val searchClient = HackerNewsSearchClient(json) +} + +fun Context.baseClient(): HackerNewsBaseClient { + return (this.applicationContext as HackerNewsApplication).baseClient +} + +fun Context.searchClient(): HackerNewsSearchClient { + return (this.applicationContext as HackerNewsApplication).searchClient +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/MainActivity.kt b/android/app/src/main/java/dev/supergooey/hackernews/MainActivity.kt new file mode 100644 index 00000000..586a9a13 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/MainActivity.kt @@ -0,0 +1,57 @@ +package dev.supergooey.hackernews + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideIn +import androidx.compose.animation.slideOut +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.IntOffset +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.rememberNavController +import dev.supergooey.hackernews.features.comments.CommentsDestinations +import dev.supergooey.hackernews.features.comments.commentsRoutes +import dev.supergooey.hackernews.features.stories.Stories +import dev.supergooey.hackernews.features.stories.storiesGraph +import dev.supergooey.hackernews.ui.theme.HackerNewsTheme + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + HackerNewsTheme { + App() + } + } + } +} + +@Composable +fun App() { + val navController = rememberNavController() + + Scaffold() { innerPadding -> + NavHost( + modifier = Modifier + .fillMaxSize() + .padding(innerPadding), + navController = navController, + enterTransition = { slideIn { IntOffset(x = it.width, y = 0) } }, + exitTransition = { slideOut { IntOffset(x = -it.width / 3, y = 0) } + fadeOut() }, + popEnterTransition = { slideIn { IntOffset(x = -it.width, y = 0) } }, + popExitTransition = { slideOut { IntOffset(x = it.width, y = 0) } }, + startDestination = Stories + ) { + storiesGraph(navController) + + commentsRoutes() + } + } +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsBaseClient.kt b/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsBaseClient.kt new file mode 100644 index 00000000..fd1a2147 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsBaseClient.kt @@ -0,0 +1,44 @@ +package dev.supergooey.hackernews.data + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import okhttp3.MediaType.Companion.toMediaType +import retrofit2.Retrofit +import retrofit2.converter.kotlinx.serialization.asConverterFactory +import retrofit2.http.GET +import retrofit2.http.Path + +const val BASE_FIREBASE_URL = "https://hacker-news.firebaseio.com/v0/" + +@Serializable +data class Item( + val id: Long, + val type: String, + val by: String? = null, + val title: String? = null, + val score: Int? = null, + val url: String? = null, + val descendants: Int? = null, + val kids: List? = null, + val text: String? = null +) + +interface HackerNewsBaseApi { + @GET("topstories.json") + suspend fun getTopStoryIds(): List + + @GET("newstories.json") + suspend fun getNewStoryIds(): List + + @GET("item/{id}.json") + suspend fun getItem(@Path("id") itemId: Long): Item +} + +class HackerNewsBaseClient(json: Json) { + private val retrofit = Retrofit.Builder() + .baseUrl(BASE_FIREBASE_URL) + .addConverterFactory(json.asConverterFactory("application/json; charset=UTF8".toMediaType())) + .build() + + val api = retrofit.create(HackerNewsBaseApi::class.java) +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsSearchClient.kt b/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsSearchClient.kt new file mode 100644 index 00000000..bbe9abc9 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/data/HackerNewsSearchClient.kt @@ -0,0 +1,36 @@ +package dev.supergooey.hackernews.data + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import okhttp3.MediaType.Companion.toMediaType +import retrofit2.Retrofit +import retrofit2.converter.kotlinx.serialization.asConverterFactory +import retrofit2.http.GET +import retrofit2.http.Path + +private const val BASE_SEARCH_URL = "https://hn.algolia.com/api/v1/" + +@Serializable +data class ItemResponse( + val id: Long, + val children: List, + val title: String? = null, + val author: String? = null, + val text: String? = null, + val points: Int? = null, +) + +interface HackerNewsAlgoliaApi { + + @GET("items/{id}") + suspend fun getItem(@Path("id") itemId: Long): ItemResponse +} + +class HackerNewsSearchClient(json: Json) { + private val retrofit = Retrofit.Builder() + .baseUrl(BASE_SEARCH_URL) + .addConverterFactory(json.asConverterFactory("application/json; charset=UTF8".toMediaType())) + .build() + + val api: HackerNewsAlgoliaApi = retrofit.create(HackerNewsAlgoliaApi::class.java) +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsDomain.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsDomain.kt new file mode 100644 index 00000000..ac1f075d --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsDomain.kt @@ -0,0 +1,98 @@ +package dev.supergooey.hackernews.features.comments + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope +import dev.supergooey.hackernews.data.HackerNewsSearchClient +import dev.supergooey.hackernews.data.ItemResponse +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +data class CommentsState( + val title: String, + val author: String, + val points: Int, + val comments: List +) { + companion object { + val empty = CommentsState( + title = "", + author = "", + points = 0, + comments = emptyList() + ) + } + + val headerState = HeaderState(title, author, points) +} + +data class CommentState( + val id: Long, + val author: String, + val content: String, + val children: List, + val level: Int = 0, +) + +data class HeaderState( + val title: String, + val author: String, + val points: Int +) + +class CommentsViewModel( + private val itemId: Long, + private val searchClient: HackerNewsSearchClient +) : ViewModel() { + private val internalState = MutableStateFlow(CommentsState.empty) + val state = internalState.asStateFlow() + + init { + viewModelScope.launch { + withContext(Dispatchers.IO) { + val response = searchClient.api.getItem(itemId) + val comments = response.children.map { rootComment -> + rootComment.createCommentState(0) + } + internalState.update { + CommentsState( + title = response.title ?: "", + author = response.author ?: "", + points = response.points ?: 0, + comments = comments + ) + } + } + } + } + + private fun ItemResponse.createCommentState(level: Int): CommentState { + Log.d("Creating CommentState()", "Level: $level, Id: $id") + + return CommentState( + id = id, + author = author ?: "", + content = text ?: "", + children = children.map { child -> + child.createCommentState(level + 1) + }, + level = level + ) + } + + + @Suppress("UNCHECKED_CAST") + class Factory( + private val itemId: Long, + private val searchClient: HackerNewsSearchClient + ) : ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + return CommentsViewModel(itemId, searchClient) as T + } + } +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsRouting.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsRouting.kt new file mode 100644 index 00000000..955cd048 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsRouting.kt @@ -0,0 +1,35 @@ +package dev.supergooey.hackernews.features.comments + +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.platform.LocalContext +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable +import androidx.navigation.toRoute +import dev.supergooey.searchClient +import kotlinx.serialization.Serializable + +sealed interface CommentsDestinations { + @Serializable + data class Comments(val storyId: Long) : CommentsDestinations +} + +fun NavGraphBuilder.commentsRoutes() { + composable { entry -> + val context = LocalContext.current + val comments: CommentsDestinations.Comments = entry.toRoute() + val model = viewModel( + factory = CommentsViewModel.Factory( + itemId = comments.storyId, + searchClient = context.searchClient() + ) + ) + val state by model.state.collectAsState() + CommentsScreen(state) + } +} + + + + diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsScreen.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsScreen.kt new file mode 100644 index 00000000..421f4792 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/CommentsScreen.kt @@ -0,0 +1,257 @@ +package dev.supergooey.hackernews.features.comments + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.Send +import androidx.compose.material.icons.filled.KeyboardArrowUp +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.ThumbUp +import androidx.compose.material.icons.rounded.Home +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathEffect +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import dev.supergooey.hackernews.ui.theme.HNOrange +import dev.supergooey.hackernews.ui.theme.HNOrangeLight +import dev.supergooey.hackernews.ui.theme.HackerNewsTheme + +@Composable +fun CommentsScreen(state: CommentsState) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .background(color = MaterialTheme.colorScheme.background), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + item { + ItemHeader( + state = state.headerState, + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() + ) + } + item { + Box(modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + .height(16.dp) + .drawBehind { + val lineStart = Offset(0f, size.center.y) + val lineEnd = Offset(size.width, size.center.y) + drawLine( + start = lineStart, + end = lineEnd, + color = HNOrange, + strokeWidth = 4f, + cap = StrokeCap.Round, + pathEffect = PathEffect.dashPathEffect( + intervals = floatArrayOf(20f, 20f) + ) + ) + } + ) + } + items(items = state.comments) { comment -> + CommentRow(comment) + } + } +} + +@Preview +@Composable +private fun CommentsScreenPreview() { + HackerNewsTheme { + CommentsScreen( + state = CommentsState( + title = "Show HN: A new HN client for Android", + author = "rikinm", + points = 69, + comments = listOf( + CommentState( + id = 1, + level = 0, + author = "rikinm", + content = "Hello Child", + children = listOf( + CommentState( + id = 2, + level = 1, + author = "vasantm", + content = "Hello Parent", + children = listOf() + ) + ) + ) + ) + ) + ) + } +} + +@Preview +@Composable +private fun CommentRowPreview() { + HackerNewsTheme { + Column { + CommentRow( + state = CommentState( + id = 1, + level = 0, + author = "rikinm", + content = "Hello Parent", + children = listOf( + CommentState( + id = 2, + level = 1, + author = "vasantm", + content = "Hello Child", + children = listOf() + ) + ) + ) + ) + } + } +} + +@Composable +fun CommentRow(state: CommentState) { + val startPadding = (state.level * 16).dp + Column( + modifier = Modifier + .padding(start = startPadding) + .fillMaxWidth() + .heightIn(min = 80.dp) + .clip(RoundedCornerShape(topStart = 8.dp, bottomStart = 8.dp)) + .background(color = MaterialTheme.colorScheme.surfaceContainer) + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = state.author, + style = MaterialTheme.typography.labelSmall, + color = HNOrange, + fontWeight = FontWeight.Medium + ) + Text( + "•", + style = MaterialTheme.typography.labelSmall + ) + Text( + "1h ago", + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Medium, + color = Color.Gray + ) + Spacer(modifier = Modifier.weight(1f)) + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.Default.ThumbUp, + contentDescription = "upvote" + ) + Icon( + modifier = Modifier.size(16.dp), + imageVector = Icons.Default.MoreVert, + contentDescription = "options" + ) + } + Row { + Text( + text = state.content.parseAsHtml(), + style = MaterialTheme.typography.labelSmall + ) + } + } + state.children.forEach { child -> + CommentRow(child) + } +} + +@Preview +@Composable +private fun ItemHeaderPreview() { + HackerNewsTheme { + ItemHeader( + state = HeaderState( + title = "Show HN: A super neat HN client for Android", + author = "rikinm", + points = 69 + ), + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() + ) + } +} + +@Composable +fun ItemHeader( + state: HeaderState, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier + .background(color = MaterialTheme.colorScheme.background) + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Text( + text = state.title, + style = MaterialTheme.typography.titleSmall + ) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "${state.points}", + style = MaterialTheme.typography.labelSmall + ) + Text( + text = "•", + style = MaterialTheme.typography.labelSmall + ) + Text( + text = state.author, + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Medium + ) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/comments/HtmlToAnnotatedString.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/HtmlToAnnotatedString.kt new file mode 100644 index 00000000..575f2917 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/comments/HtmlToAnnotatedString.kt @@ -0,0 +1,154 @@ +package dev.supergooey.hackernews.features.comments + +import android.graphics.Typeface +import android.text.Layout +import android.text.Spanned +import android.text.style.AbsoluteSizeSpan +import android.text.style.AlignmentSpan +import android.text.style.BackgroundColorSpan +import android.text.style.ForegroundColorSpan +import android.text.style.RelativeSizeSpan +import android.text.style.StrikethroughSpan +import android.text.style.StyleSpan +import android.text.style.SubscriptSpan +import android.text.style.SuperscriptSpan +import android.text.style.TypefaceSpan +import android.text.style.URLSpan +import android.text.style.UnderlineSpan +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.LinkAnnotation +import androidx.compose.ui.text.ParagraphStyle +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles +import androidx.compose.ui.text.TextRange +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.BaselineShift +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.unit.em +import androidx.core.text.HtmlCompat +import dev.supergooey.hackernews.ui.theme.HNOrange + +/** + * This code will be added to Compose 1.7, just some utilities to convert HTML Spanned to Annotated String + * + * https://android-review.googlesource.com/c/platform/frameworks/support/+/3003973/3/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/Html.android.kt#139 + */ + +fun String.parseAsHtml(): AnnotatedString { + val spanned = HtmlCompat.fromHtml(this, HtmlCompat.FROM_HTML_MODE_COMPACT) + return spanned.toAnnotatedString() +} + +private fun Spanned.toAnnotatedString(): AnnotatedString { + return AnnotatedString.Builder(capacity = length) + .append(this) + .also { it.addSpans(this) } + .toAnnotatedString() +} + +private fun AnnotatedString.Builder.addSpans(spanned: Spanned) { + spanned.getSpans(0, length, Any::class.java).forEach { span -> + val range = TextRange(spanned.getSpanStart(span), spanned.getSpanEnd(span)) + addSpan(span, range.start, range.end) + } +} + +private fun AnnotatedString.Builder.addSpan(span: Any, start: Int, end: Int) { + when (span) { + is AbsoluteSizeSpan -> {} + is AlignmentSpan -> { + addStyle(span.toParagraphStyle(), start, end) + } + + is Annotation -> {} + is BackgroundColorSpan -> { + addStyle(SpanStyle(background = Color(span.backgroundColor)), start, end) + } + + is ForegroundColorSpan -> { + addStyle(SpanStyle(color = Color(span.foregroundColor)), start, end) + } + + is RelativeSizeSpan -> { + addStyle(SpanStyle(fontSize = span.sizeChange.em), start, end) + } + + is StrikethroughSpan -> { + addStyle(SpanStyle(textDecoration = TextDecoration.LineThrough), start, end) + } + + is StyleSpan -> { + span.toSpanStyle()?.let { addStyle(it, start, end) } + } + + is SubscriptSpan -> { + addStyle(SpanStyle(baselineShift = BaselineShift.Subscript), start, end) + } + + is SuperscriptSpan -> { + addStyle(SpanStyle(baselineShift = BaselineShift.Superscript), start, end) + } + + is TypefaceSpan -> { + addStyle(span.toSpanStyle(), start, end) + } + + is UnderlineSpan -> { + addStyle(SpanStyle(textDecoration = TextDecoration.Underline), start, end) + } + + is URLSpan -> { + span.url?.let { url -> + addLink( + LinkAnnotation.Url( + url, + styles = TextLinkStyles( + style = SpanStyle( + color = HNOrange + ) + ) + ), + start, + end + ) + } + } + } +} + +private fun AlignmentSpan.toParagraphStyle(): ParagraphStyle { + val alignment = when (this.alignment) { + Layout.Alignment.ALIGN_NORMAL -> TextAlign.Start + Layout.Alignment.ALIGN_CENTER -> TextAlign.Center + Layout.Alignment.ALIGN_OPPOSITE -> TextAlign.End + else -> TextAlign.Unspecified + } + return ParagraphStyle(textAlign = alignment) +} + +private fun StyleSpan.toSpanStyle(): SpanStyle? { + return when (style) { + Typeface.BOLD -> { + SpanStyle(fontWeight = FontWeight.Bold) + } + + Typeface.ITALIC -> { + SpanStyle(fontStyle = FontStyle.Italic) + } + + Typeface.BOLD_ITALIC -> { + SpanStyle(fontWeight = FontWeight.Bold, fontStyle = FontStyle.Italic) + } + + else -> null + } +} + +private fun TypefaceSpan.toSpanStyle(): SpanStyle { + val fontFamily = this.typeface?.let { FontFamily(it) } + return SpanStyle(fontFamily = fontFamily) +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesDomain.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesDomain.kt new file mode 100644 index 00000000..f37682fc --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesDomain.kt @@ -0,0 +1,130 @@ +package dev.supergooey.hackernews.features.stories + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope +import dev.supergooey.hackernews.data.HackerNewsBaseClient +import dev.supergooey.hackernews.features.comments.CommentsDestinations +import dev.supergooey.hackernews.features.stories.StoriesAction.LoadStories +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +enum class FeedType(val label: String) { + Top("Top"), + New("New") +} +data class StoriesState( + val stories: List, + val feed: FeedType = FeedType.Top + +) + +sealed class StoryItem(open val id: Long) { + data class Loading(override val id: Long) : StoryItem(id) + data class Content( + override val id: Long, + val title: String, + val author: String, + val score: Int, + val commentCount: Int, + val url: String? + ) : StoryItem(id) +} + +sealed class StoriesAction { + data object LoadStories : StoriesAction() + data class SelectStory(val id: Long) : StoriesAction() + data class SelectComments(val id: Long) : StoriesAction() + data class SelectFeed(val feed: FeedType) : StoriesAction() +} + +// TODO(rikin): Second pass at Navigation Setup +sealed interface StoriesNavigation { + data class GoToStory(val closeup: StoriesDestinations.Closeup) : StoriesNavigation + data class GoToComments(val comments: CommentsDestinations.Comments) : StoriesNavigation +} + +class StoriesViewModel(private val baseClient: HackerNewsBaseClient) : ViewModel() { + private val internalState = MutableStateFlow(StoriesState(stories = emptyList())) + val state = internalState.asStateFlow() + + init { + actions(LoadStories) + } + + fun actions(action: StoriesAction) { + when (action) { + LoadStories -> { + viewModelScope.launch { + withContext(Dispatchers.IO) { + val ids = when(internalState.value.feed) { + FeedType.Top -> { + baseClient.api.getTopStoryIds() + } + FeedType.New -> { + baseClient.api.getNewStoryIds() + } + } + + // now for each ID I need to load the item. + internalState.update { current -> + current.copy( + stories = ids.map { StoryItem.Loading(it) } + ) + } + ids.forEach { id -> + val item = baseClient.api.getItem(id) + internalState.update { current -> + current.copy( + stories = current.stories.map { + if (it.id == item.id) { + StoryItem.Content( + id = item.id, + title = item.title!!, + author = item.by!!, + score = item.score ?: 0, + commentCount = item.descendants ?: 0, + url = item.url + ) + } else { + it + } + } + ) + } + } + } + } + } + + is StoriesAction.SelectStory -> { + // TODO + } + + is StoriesAction.SelectComments -> { + // TODO + } + + is StoriesAction.SelectFeed -> { + internalState.update { current -> + current.copy( + feed = action.feed, + stories = emptyList() + ) + } + actions(LoadStories) + } + } + } + + @Suppress("UNCHECKED_CAST") + class Factory(private val baseClient: HackerNewsBaseClient) : ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + return StoriesViewModel(baseClient) as T + } + } +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesRouting.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesRouting.kt new file mode 100644 index 00000000..10500d4f --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesRouting.kt @@ -0,0 +1,69 @@ +package dev.supergooey.hackernews.features.stories + +import android.net.Uri +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.browser.customtabs.CustomTabsIntent +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable +import androidx.navigation.navigation +import androidx.navigation.toRoute +import dev.supergooey.baseClient +import dev.supergooey.hackernews.features.stories.StoriesDestinations.Closeup +import dev.supergooey.hackernews.features.stories.StoriesDestinations.Feed +import kotlinx.serialization.Serializable + +@Serializable +data object Stories + +sealed interface StoriesDestinations { + @Serializable + data object Feed : StoriesDestinations + + @Serializable + data class Closeup(val url: String) : StoriesDestinations +} + +fun NavGraphBuilder.storiesGraph(navController: NavController) { + navigation(startDestination = Feed) { + composable { + val context = LocalContext.current + val customTabsIntent = remember { + CustomTabsIntent.Builder().build() + } + + val model = viewModel( + factory = StoriesViewModel.Factory( + baseClient = context.baseClient() + ) + ) + val state by model.state.collectAsState() + + StoriesScreen( + state = state, + actions = model::actions, + navigation = { place -> + when (place) { + is StoriesNavigation.GoToComments -> { + navController.navigate(place.comments) + } + is StoriesNavigation.GoToStory -> { +// navController.navigate(place.closeup) + customTabsIntent.launchUrl(context, Uri.parse(place.closeup.url)) + } + } + } + ) + } + composable { entry -> + val closeup: Closeup = entry.toRoute() + StoryScreen(closeup.url) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesScreen.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesScreen.kt new file mode 100644 index 00000000..55d7ec14 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoriesScreen.kt @@ -0,0 +1,348 @@ +package dev.supergooey.hackernews.features.stories + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.TabRow +import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import dev.supergooey.hackernews.R +import dev.supergooey.hackernews.features.comments.CommentsDestinations +import dev.supergooey.hackernews.ui.theme.HNOrange +import dev.supergooey.hackernews.ui.theme.HackerNewsTheme + +@Composable +fun StoriesScreen( + modifier: Modifier = Modifier, + state: StoriesState, + actions: (StoriesAction) -> Unit, + navigation: (StoriesNavigation) -> Unit +) { + Column( + modifier = modifier.background(color = MaterialTheme.colorScheme.background), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + FeedSelection( + feedType = state.feed, + onSelected = { actions(StoriesAction.SelectFeed(it)) } + ) + LazyColumn( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + ) { + items(state.stories) { item -> + StoryRow( + modifier = Modifier.animateItem(), + item = item, + onClick = { + actions(StoriesAction.SelectStory(it.id)) + navigation( + if (it.url != null) { + StoriesNavigation.GoToStory( + closeup = StoriesDestinations.Closeup(it.url) + ) + } else { + StoriesNavigation.GoToComments( + comments = CommentsDestinations.Comments(it.id) + ) + } + ) + }, + onCommentClicked = { + actions(StoriesAction.SelectComments(it.id)) + navigation( + StoriesNavigation.GoToComments( + comments = CommentsDestinations.Comments(it.id) + ) + ) + } + ) + } + } + } +} + +@Preview +@Composable +private fun FeedSelectionPreview() { + HackerNewsTheme { + FeedSelection( + feedType = FeedType.Top, + onSelected = {} + ) + } +} + +@Composable +private fun FeedSelection( + feedType: FeedType, + onSelected: (FeedType) -> Unit, +) { + val selectedTab = remember(feedType) { feedType.ordinal } + + TabRow( + selectedTabIndex = selectedTab, + modifier = Modifier.wrapContentWidth(), + containerColor = MaterialTheme.colorScheme.background, + contentColor = MaterialTheme.colorScheme.onBackground, + indicator = { tabPositions -> + if (selectedTab < tabPositions.size) { + Box( + modifier = Modifier + .tabIndicatorOffset(tabPositions[selectedTab]) + .height(2.dp) + .drawBehind { + val barWidth = size.width * 0.33f + val start = size.center.x - barWidth/2f + val end = size.center.x + barWidth/2f + val bottom = size.height - 16f + drawLine( + start = Offset(start, bottom), + end = Offset(end, bottom), + color = HNOrange, + strokeWidth = 4f, + cap = StrokeCap.Round, + ) + } + ) + } + }, + divider = {} + ) { + FeedType.entries.forEach { feedType -> + Text( + modifier = Modifier + .fillMaxWidth() + .padding(8.dp) + .clickable { + onSelected(feedType) + } + , + textAlign = TextAlign.Center, + text = feedType.label, + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Medium, + fontSize = 24.sp + ) + } + } +} + +@Preview +@Composable +private fun StoriesScreenPreview() { + HackerNewsTheme { + StoriesScreen( + modifier = Modifier.fillMaxSize(), + state = StoriesState( + stories = listOf( + StoryItem.Content( + id = 1L, + title = "Hello There", + author = "heyrikin", + score = 10, + commentCount = 0, + url = "" + ), + StoryItem.Content( + id = 1L, + title = "Hello There", + author = "heyrikin", + score = 10, + commentCount = 0, + url = "" + ), + ) + ), + actions = {}, + navigation = {} + ) + } +} + +@Preview +@Composable +private fun StoryRowPreview() { + HackerNewsTheme { + StoryRow( + item = StoryItem.Content( + id = 1L, + title = "Hello There", + author = "heyrikin", + score = 10, + commentCount = 0, + url = "" + ), + onClick = {}, + onCommentClicked = {} + ) + } +} + +@Preview +@Composable +private fun StoryRowLoadingPreview() { + HackerNewsTheme { + StoryRow( + item = StoryItem.Loading(id = 1L), + onClick = {}, + onCommentClicked = {} + ) + } +} + +@Composable +fun StoryRow( + modifier: Modifier = Modifier, + item: StoryItem, + onClick: (StoryItem.Content) -> Unit, + onCommentClicked: (StoryItem.Content) -> Unit +) { + when (item) { + is StoryItem.Content -> { + Row( + modifier = modifier + .fillMaxWidth() + .heightIn(min = 80.dp) + .background(color = MaterialTheme.colorScheme.background) + .clickable { + onClick(item) + } + .padding(8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp, alignment = Alignment.CenterHorizontally) + ) { + Column( + modifier = Modifier + .wrapContentHeight() + .weight(1f), + verticalArrangement = Arrangement.Center + ) { + Text( + text = item.title, + style = MaterialTheme.typography.titleSmall + ) + Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) { + Text(text = "${item.score}", style = MaterialTheme.typography.labelSmall) + Text(text = "•", style = MaterialTheme.typography.labelSmall) + Text( + text = item.author , + color = HNOrange, + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Medium + ) + } + } + + Column( + modifier = Modifier + .padding(horizontal = 16.dp) + .clickable { + onCommentClicked(item) + }, + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Icon( + modifier = Modifier.size(20.dp), + painter = painterResource(R.drawable.ic_chat), + tint = MaterialTheme.colorScheme.onBackground, + contentDescription = "" + ) + Text( + text = "${item.commentCount}", + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Medium + ) + } + } + } + is StoryItem.Loading -> { + Row( + modifier = modifier + .fillMaxWidth() + .heightIn(min = 80.dp) + .background(color = MaterialTheme.colorScheme.background) + .padding(8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp, alignment = Alignment.CenterHorizontally) + ) { + Column( + modifier = Modifier + .wrapContentHeight() + .weight(1f), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.8f) + .height(20.dp) + .clip(CircleShape) + .background(color = Color.LightGray) + ) + Box( + modifier = Modifier + .fillMaxWidth(0.45f) + .height(20.dp) + .clip(CircleShape) + .background(color = Color.Gray) + ) + Row( + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Box( + modifier = Modifier + .width(30.dp) + .height(14.dp) + .clip(CircleShape) + .background(Color.DarkGray) + ) + Box( + modifier = Modifier + .width(40.dp) + .height(14.dp) + .clip(CircleShape) + .background(HNOrange) + ) + } + } + } + } + } +} diff --git a/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoryScreen.kt b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoryScreen.kt new file mode 100644 index 00000000..31df75b5 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/features/stories/StoryScreen.kt @@ -0,0 +1,40 @@ +package dev.supergooey.hackernews.features.stories + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import com.google.accompanist.web.WebView +import com.google.accompanist.web.rememberWebViewState +import dev.supergooey.hackernews.ui.theme.HackerNewsTheme + +@Composable +fun StoryScreen(url: String) { + val webViewState = rememberWebViewState(url) + Column(modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally) { + Text( + text = url, + style = MaterialTheme.typography.labelSmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + WebView( + modifier = Modifier.fillMaxWidth().weight(1f), + state = webViewState + ) + } +} + +@Preview +@Composable +private fun StoryScreenPreview() { + HackerNewsTheme { + StoryScreen("www.google.com") + } +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Color.kt b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Color.kt new file mode 100644 index 00000000..15ea2440 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Color.kt @@ -0,0 +1,14 @@ +package dev.supergooey.hackernews.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) + +val HNOrange = Color(0xFFF57C00) +val HNOrangeLight = Color(0xFFFFCD93) diff --git a/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Theme.kt b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Theme.kt new file mode 100644 index 00000000..fde42cf8 --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Theme.kt @@ -0,0 +1,48 @@ +package dev.supergooey.hackernews.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 +) + +@Composable +fun HackerNewsTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Type.kt b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Type.kt new file mode 100644 index 00000000..080db1be --- /dev/null +++ b/android/app/src/main/java/dev/supergooey/hackernews/ui/theme/Type.kt @@ -0,0 +1,50 @@ +package dev.supergooey.hackernews.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp +import dev.supergooey.hackernews.R + +val plex = FontFamily( + Font(resId = R.font.ibm_plex_sans_regular, weight = FontWeight.Normal), + Font(resId = R.font.ibm_plex_sans_medium, weight = FontWeight.Medium), + Font(resId = R.font.ibm_plex_sans_bold, weight = FontWeight.Bold), +) + +val Typography = Typography( + titleSmall = TextStyle( + fontFamily = plex, + fontWeight = FontWeight.Bold, + fontSize = 18.sp + ), + labelSmall = TextStyle( + fontFamily = plex, + fontWeight = FontWeight.Normal, + fontSize = 14.sp + ), + labelMedium = TextStyle( + fontFamily = plex, + fontWeight = FontWeight.Normal, + fontSize = 16.sp + ), + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/HNApplication.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/HNApplication.kt deleted file mode 100644 index d4271e07..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/HNApplication.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.emergetools.hackernews - -import android.app.Application -import com.airbnb.mvrx.Mavericks - -class HNApplication : Application() { - - override fun onCreate() { - super.onCreate() - Mavericks.initialize(this) - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/MainActivity.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/MainActivity.kt deleted file mode 100644 index 1e4d7379..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/MainActivity.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.emergetools.hackernews - -import android.os.Bundle -import android.os.Trace -import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.animation.ExperimentalAnimationApi -import com.emergetools.hackernews.ui.HNNavHost -import com.emergetools.hackernews.ui.HNTheme - -class MainActivity : AppCompatActivity() { - - @OptIn(ExperimentalAnimationApi::class) - override fun onCreate(savedInstanceState: Bundle?) { - Trace.beginSection("MainActivity.onCreate") - super.onCreate(savedInstanceState) - - setContent { - HNTheme { - HNNavHost() - } - } - - Trace.endSection() - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/network/HNApi.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/network/HNApi.kt deleted file mode 100644 index d399a1d3..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/network/HNApi.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.emergetools.hackernews.network - -import com.emergetools.hackernews.network.models.Item -import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory -import kotlinx.serialization.json.Json -import okhttp3.MediaType.Companion.toMediaType -import retrofit2.Retrofit -import retrofit2.http.GET -import retrofit2.http.Path - -private const val HN_BASE_URL = "https://hacker-news.firebaseio.com/v0/" - -private val retrofit = Retrofit.Builder() - .baseUrl(HN_BASE_URL) - .addConverterFactory(Json.asConverterFactory("application/json".toMediaType())) - .build() - -interface HNApiService { - - @GET("topstories.json") - suspend fun getTopStories(): List - - @GET("item/{id}.json") - suspend fun getItem(@Path("id") id: Long): Item -} - -object HNApi { - val retrofitService: HNApiService by lazy { - retrofit.create(HNApiService::class.java) - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/network/models/Item.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/network/models/Item.kt deleted file mode 100644 index e64e9861..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/network/models/Item.kt +++ /dev/null @@ -1,96 +0,0 @@ -package com.emergetools.hackernews.network.models - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.net.URI -import java.net.URISyntaxException - -@Serializable -sealed class Item { - abstract val id: Long - abstract val by: String - abstract val time: Long - - val deleted: Boolean = false - val dead: Boolean = false -} - -@Serializable -@SerialName("story") -data class Story( - override val id: Long, - override val by: String, - override val time: Long, - - val title: String, - val text: String? = null, - val url: String, - val score: Int, - val descendants: Int, - @SerialName("kids") val comments: List, -) : Item() { - - val commentCount: Int - get() = comments.size - - val displayableUrl: String - get() { - return try { - val uri = URI(url) - // TODO: First path for github - uri.host.removePrefix("www.") - } catch (e: URISyntaxException) { - url - } - } -} - -@Serializable -@SerialName("comment") -data class Comment( - override val id: Long, - override val by: String, - override val time: Long, - - val text: String, - val parent: Long?, - @SerialName("kids") val replies: List, -) : Item() - -@Serializable -@SerialName("job") -data class Job( - override val id: Long, - override val by: String, - override val time: Long, - - val title: String, - val score: Int, - val text: String? = null, -) : Item() - -@Serializable -@SerialName("poll") -data class Poll( - override val id: Long, - override val by: String, - override val time: Long, - - val title: String, - val score: Int, - val descendants: Int, - @SerialName("kids") val comments: List, - @SerialName("parts") val pollopts: List = emptyList(), -) : Item() - -@Serializable -@SerialName("pollopt") -data class Pollopt( - override val id: Long, - override val by: String, - override val time: Long, - - val poll: Long, - val score: Int, - val text: String? = null, -) : Item() diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNNavHost.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNNavHost.kt deleted file mode 100644 index 0943793e..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNNavHost.kt +++ /dev/null @@ -1,142 +0,0 @@ -package com.emergetools.hackernews.ui - -import androidx.compose.animation.AnimatedContentScope -import androidx.compose.animation.AnimatedContentTransitionScope -import androidx.compose.animation.ExperimentalAnimationApi -import androidx.compose.animation.core.tween -import androidx.compose.runtime.Composable -import androidx.navigation.NavType -import androidx.navigation.navArgument -import com.emergetools.hackernews.ui.comments.CommentsScreen -import com.emergetools.hackernews.ui.stories.StoriesScreen -import com.emergetools.hackernews.ui.story.StoryScreen -import com.google.accompanist.navigation.animation.AnimatedNavHost -import com.google.accompanist.navigation.animation.composable -import com.google.accompanist.navigation.animation.rememberAnimatedNavController - -sealed class Screen(val route: String) { - object Auth : Screen("auth") - object Stories : Screen("stories") - object Story : Screen("story/{id}") { - - fun getRoute(id: Long) = "story/$id" - } - - object Comments : Screen("comments/{id}") { - fun getRoute(id: Long) = "comments/$id" - } -} - -@ExperimentalAnimationApi -@Composable -fun HNNavHost() { - val navController = rememberAnimatedNavController() - - // TODO: Deep link for handling comments - AnimatedNavHost( - navController = navController, - startDestination = Screen.Stories.route, - ) { - composable( - Screen.Stories.route, - enterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - exitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - popEnterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }, - popExitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }) { - StoriesScreen(navController = navController) - } - composable( - Screen.Story.route, - enterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - exitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - popEnterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }, - popExitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }, - arguments = listOf( - navArgument("id") { type = NavType.LongType } - ) - ) { - val id = it.arguments?.getLong("id") - requireNotNull(id) { "No argument found for id launching story screen" } - StoryScreen( - navController = navController, - id = id, - ) - } - composable( - Screen.Comments.route, - enterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - exitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(300) - ) - }, - popEnterTransition = { - slideIntoContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }, - popExitTransition = { - slideOutOfContainer( - AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(300) - ) - }, - arguments = listOf( - navArgument("id") { type = NavType.LongType } - )) { - val id = it.arguments?.getLong("id") - requireNotNull(id) { "No argument found for id launching comments screen" } - CommentsScreen( - navController = navController, - id = id, - ) - } - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNTheme.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNTheme.kt deleted file mode 100644 index 96097276..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/HNTheme.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.emergetools.hackernews.ui - -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color - -val Orange = Color(0xffff6600) -private val Purple = Color(0xff221E43) - -// TODO: Success -private val Error = Color(0xffe53935) - -const val ALPHA_SECONDARY = .56f -const val ALPHA_TERTIARY = .27f - -object Dark { - val Background = Color(0xff1D1E21) - val Card = Color(0xff2B2C2F) - val Divider = Color(0xff4c5053) - val TextPrimary = Color(0xffffffff) - val TextSecondary = Color(0xffC4C4C4) - val TextTertiary = Color(0xff878787) -} - -object Light { - val Background = Color(0xfff6f6ef) - val Card = Color(0xffffffff) - val Divider = Color(0xffdddddd) - val TextPrimary = Color(0xff222222) - val TextSecondary = Color(0xff717171) - val TextTertiary = Color(0xffb0b0b0) -} - -// TODO: Add textSecondary/tertiary -private val DarkColors = darkColors( - primary = Orange, - secondary = Purple, - background = Dark.Background, - surface = Dark.Card, - error = Error, - onPrimary = Dark.TextPrimary, - onSecondary = Dark.TextPrimary, - onBackground = Dark.TextPrimary, - onSurface = Dark.TextPrimary, -) -private val LightColors = darkColors( - primary = Orange, - secondary = Purple, - background = Light.Background, - surface = Light.Card, - error = Error, - onPrimary = Dark.TextPrimary, - onSecondary = Dark.TextPrimary, - onBackground = Light.TextPrimary, - onSurface = Light.TextPrimary, -) - -@Composable -fun HNTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - content: @Composable () -> Unit, -) = MaterialTheme( - colors = if (darkTheme) DarkColors else LightColors, - content = content -) \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/ItemBuilder.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/ItemBuilder.kt deleted file mode 100644 index 222f52a2..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/ItemBuilder.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.emergetools.hackernews.ui - -import android.util.Log -import androidx.compose.runtime.Composable -import com.emergetools.hackernews.network.models.Comment -import com.emergetools.hackernews.network.models.Item -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.items.BuildComment -import com.emergetools.hackernews.ui.items.BuildStory - -@Composable -fun BuildItem( - index: Int, - item: Item, - onItemClick: (Item) -> Unit, - onItemPrimaryButtonClick: ((Item) -> Unit)?, -) { - when (item) { - is Story -> { - if (onItemPrimaryButtonClick == null) { - throw IllegalArgumentException("Must provide a onItemPrimaryButtonClick for a Story") - } - BuildStory(item, index, onItemClick, onItemPrimaryButtonClick) - } - - is Comment -> BuildComment(item) - else -> { - Log.d("BuildItem", "No buildItem handling for ${item.javaClass.simpleName}") - } - } -} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/FontScalePreviews.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/FontScalePreviews.kt deleted file mode 100644 index 8c69955a..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/FontScalePreviews.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.emergetools.hackernews.ui.annotations - -import androidx.compose.ui.tooling.preview.Preview - -@Preview( - name = "Small font", - fontScale = 0.5f, -) -@Preview( - name = "Large font", - fontScale = 1.5f, -) -annotation class FontScalePreviews diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/LightDarkPreviews.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/LightDarkPreviews.kt deleted file mode 100644 index 48927d20..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/LightDarkPreviews.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.emergetools.hackernews.ui.annotations - -import android.content.res.Configuration -import androidx.compose.ui.tooling.preview.Preview - -@Preview( - name = "Light mode", - uiMode = Configuration.UI_MODE_NIGHT_NO, -) -@Preview( - name = "Dark mode", - uiMode = Configuration.UI_MODE_NIGHT_YES, -) -annotation class LightDarkPreviews diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/SnapshotTestingPreviews.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/SnapshotTestingPreviews.kt deleted file mode 100644 index 136b02e4..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/annotations/SnapshotTestingPreviews.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.emergetools.hackernews.ui.annotations - -@FontScalePreviews -@LightDarkPreviews -annotation class SnapshotTestingPreviews diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/comments/CommentsScreen.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/comments/CommentsScreen.kt deleted file mode 100644 index eb6ec068..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/comments/CommentsScreen.kt +++ /dev/null @@ -1,117 +0,0 @@ -package com.emergetools.hackernews.ui.comments - -import android.util.Log -import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.TextSnippet -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import com.airbnb.mvrx.compose.collectAsState -import com.airbnb.mvrx.compose.mavericksActivityViewModel -import com.emergetools.hackernews.R -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.BuildItem -import com.emergetools.hackernews.ui.Orange -import com.emergetools.hackernews.ui.Screen -import com.emergetools.hackernews.ui.stories.StoriesViewModel - -@Composable -fun CommentsScreen( - navController: NavController, - id: Long, -) { - val storiesViewModel: StoriesViewModel = mavericksActivityViewModel() - val state by storiesViewModel.collectAsState() - val story = state.stories[id]?.let { - it as? Story - ?: throw IllegalArgumentException("item $id not type Story, type: ${it.javaClass.simpleName}") - } ?: throw IllegalArgumentException("item $id not found in stories map") - - val comments = state.comments.values.toList() - val listState = rememberLazyListState() - storiesViewModel.fetchComments(id); - - Scaffold( - topBar = { - TopAppBar( - backgroundColor = Orange, - title = { - Text( - text = story.title, - color = Color.White, - style = MaterialTheme.typography.body1, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) - }, - navigationIcon = { - IconButton(onClick = navController::popBackStack) { - Icon( - imageVector = Icons.Filled.ArrowBack, - contentDescription = stringResource(R.string.content_description_back), - ) - } - }, - actions = { - IconButton(onClick = { navController.navigate(Screen.Story.getRoute(id)) }) { - Icon( - imageVector = Icons.AutoMirrored.Default.TextSnippet, - contentDescription = stringResource(R.string.content_description_story_button), - tint = Color.White - ) - } - } - ) - } - ) { - LazyColumn(state = listState) { - itemsIndexed(comments) { index, item -> - BuildItem( - index = index, - item = item, - onItemClick = { - Log.d("Comment onItemClick", "id: ${it.id}") - }, - onItemPrimaryButtonClick = { - Log.d("Comment onItemPrimaryButtonClick", "id: ${it.id}") - } - ) - } - - if (state.isLoading) { - item { - BoxWithConstraints( - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - ) { - CircularProgressIndicator( - modifier = Modifier - .align(Alignment.Center) - ) - } - } - } - } - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Comment.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Comment.kt deleted file mode 100644 index 68eeca2a..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Comment.kt +++ /dev/null @@ -1,56 +0,0 @@ -package com.emergetools.hackernews.ui.items - -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Divider -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.emergetools.hackernews.network.models.Comment -import com.emergetools.hackernews.ui.BuildItem -import com.emergetools.hackernews.ui.annotations.SnapshotTestingPreviews - -@Composable -fun BuildComment( - comment: Comment, -) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(8.dp), - ) { - Text( - text = comment.text, - style = MaterialTheme.typography.body1, - color = MaterialTheme.colors.onBackground, - ) - } - Divider() -} - -/** - * Example generated snapshot test from main source set. - */ -@SnapshotTestingPreviews -@Preview -@Composable -fun CommentRow() { - val mockComment = Comment( - id = 1, - text = "This is a mock comment I wrote for the test", - time = 0, - by = "Ryan B", - parent = null, - replies = emptyList(), - ) - BuildItem( - item = mockComment, - onItemClick = {}, - onItemPrimaryButtonClick = null, - index = 0, - ) -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Story.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Story.kt deleted file mode 100644 index dc1ce5c6..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/items/Story.kt +++ /dev/null @@ -1,154 +0,0 @@ -package com.emergetools.hackernews.ui.items - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Divider -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.material.TextButton -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.KeyboardArrowUp -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.style.TextDecoration -import androidx.compose.ui.unit.dp -import com.emergetools.hackernews.R -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.ALPHA_SECONDARY -import com.emergetools.hackernews.utils.msToTimeAgo - -@Composable -fun BuildStory( - story: Story, - index: Int = 0, - onItemClick: (Story) -> Unit, - onItemButtonClick: (Story) -> Unit, -) { - Row( - modifier = Modifier - .clickable { - onItemClick(story) - }, - ) { - val storyItemModifier = Modifier.padding(top = 4.dp) - - IconButton( - modifier = storyItemModifier - .align(Alignment.Top), - onClick = { /* TODO: Upvote */ }, - ) { - Column { - Icon( - imageVector = Icons.Default.KeyboardArrowUp, - contentDescription = stringResource(R.string.content_description_upvote), - tint = MaterialTheme.colors.onBackground - ) - Text( - text = story.score.toString(), - modifier = Modifier - .align(Alignment.CenterHorizontally) - .padding(top = 2.dp), - style = MaterialTheme.typography.caption, - color = MaterialTheme.colors.onBackground, - textAlign = TextAlign.Center - ) - } - } - - - Row( - modifier = storyItemModifier - .padding(horizontal = 2.dp) - .weight(1f), - ) { - - Column( - modifier = Modifier - .padding(top = 2.dp) - ) { - val titleText = buildAnnotatedString { - val indexString = "${index.inc()}." - append("${index.inc()}.") - addStyle( - style = SpanStyle( - color = MaterialTheme.colors.onBackground.copy(alpha = ALPHA_SECONDARY) - ), - start = 0, - end = indexString.length - ) - append(" ") - append(story.title) - } - Text( - text = titleText, - fontWeight = FontWeight.Medium, - style = MaterialTheme.typography.subtitle1, - color = MaterialTheme.colors.onBackground, - ) - - Text( - text = "(${story.displayableUrl})", - modifier = Modifier - .alpha(ALPHA_SECONDARY) - .padding(top = 2.dp), - style = MaterialTheme.typography.caption, - color = MaterialTheme.colors.onBackground, - ) - - Row( - modifier = Modifier - .fillMaxWidth() - .padding(end = 4.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.SpaceBetween, - ) { - Text( - text = stringResource( - R.string.story_item_date_author, - story.time.msToTimeAgo(), - story.by - ), - modifier = Modifier.alpha(ALPHA_SECONDARY), - style = MaterialTheme.typography.caption, - color = MaterialTheme.colors.onBackground, - ) - - TextButton( - onClick = { - if (story.commentCount > 0) { - onItemButtonClick(story) - } - }, - ) { - Text( - text = LocalContext.current.resources.getQuantityString( - R.plurals.comment_count, - story.commentCount, - story.commentCount - ), - style = MaterialTheme.typography.caption, - fontWeight = FontWeight.Medium, - color = MaterialTheme.colors.onBackground, - textDecoration = TextDecoration.Underline - ) - } - } - } - } - } - Divider() -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/shared/LoadingIndicator.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/shared/LoadingIndicator.kt deleted file mode 100644 index 92f349c3..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/shared/LoadingIndicator.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.emergetools.hackernews.ui.shared - -import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.emergetools.hackernews.ui.HNTheme -import com.emergetools.snapshots.annotations.IgnoreEmergeSnapshot - -@Composable -fun LoadingIndicator() { - BoxWithConstraints( - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - ) { - CircularProgressIndicator( - modifier = Modifier - .align(Alignment.Center) - ) - } -} - -@Preview("Loading indicator") -@Composable -fun LoadingIndicatorPreview() { - HNTheme { - LoadingIndicator() - } -} - -// A sample ignored snapshot -@Preview("Loading indicator (ignored)") -@IgnoreEmergeSnapshot -@Composable -fun LoadingIndicatorPreviewIgnored() { - HNTheme { - LoadingIndicator() - } -} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/stories/StoriesScreen.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/stories/StoriesScreen.kt deleted file mode 100644 index 231a102c..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/stories/StoriesScreen.kt +++ /dev/null @@ -1,230 +0,0 @@ -package com.emergetools.hackernews.ui.stories - -import android.util.Log -import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.Scaffold -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import com.airbnb.mvrx.Async -import com.airbnb.mvrx.MavericksState -import com.airbnb.mvrx.MavericksViewModel -import com.airbnb.mvrx.MavericksViewModelFactory -import com.airbnb.mvrx.Uninitialized -import com.airbnb.mvrx.ViewModelContext -import com.airbnb.mvrx.compose.collectAsState -import com.airbnb.mvrx.compose.mavericksActivityViewModel -import com.emergetools.hackernews.R -import com.emergetools.hackernews.network.HNApi -import com.emergetools.hackernews.network.HNApiService -import com.emergetools.hackernews.network.models.Item -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.BuildItem -import com.emergetools.hackernews.ui.Orange -import com.emergetools.hackernews.ui.Screen -import com.emergetools.hackernews.utils.forEachInParallel - -@Composable -fun StoriesScreen(navController: NavController) { - val storiesViewModel: StoriesViewModel = mavericksActivityViewModel() - - val state by storiesViewModel.collectAsState() - val stories = state.stories.values.toList() - - val listState = rememberLazyListState() - - Scaffold( - topBar = { - StoriesToolbar( - refreshAction = storiesViewModel::fetchTopStories, - ) - } - ) { - LazyColumn(state = listState) { - itemsIndexed(stories) { index, item -> - Log.d("item", "item.id: ${item.id}") - BuildItem( - index = index, - item = item, - onItemClick = { - Log.d("StoriesScreen", "id: ${it.id}") - when (it) { - is Story -> navController.navigate(Screen.Story.getRoute(it.id)) - else -> TODO() - } - }, - onItemPrimaryButtonClick = { - when (it) { - is Story -> navController.navigate(Screen.Comments.getRoute(it.id)) - else -> TODO() - } - } - ) - - if (index == stories.lastIndex) { - storiesViewModel.fetchAdditionalStories() - } - } - - if (state.isLoading) { - item { - BoxWithConstraints( - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - ) { - CircularProgressIndicator( - modifier = Modifier - .align(Alignment.Center) - ) - } - } - } - } - } -} - -@Composable -fun StoriesToolbar( - refreshAction: () -> Unit, -) { - TopAppBar( - backgroundColor = Orange, - title = { Text(stringResource(R.string.app_name), color = Color.White) }, - actions = { - var expanded by remember { mutableStateOf(false) } - - // TODO: Set spinning if currently refreshing - IconButton(onClick = refreshAction) { - Icon( - imageVector = Icons.Default.Refresh, - contentDescription = stringResource(R.string.refresh), - tint = Color.White - ) - } - - IconButton(onClick = { expanded = !expanded }) { - Icon( - imageVector = Icons.Default.MoreVert, - contentDescription = stringResource(R.string.more), - tint = Color.White - ) - } - } - ) -} - -data class StoriesState( - val topStoriesResponse: Async> = Uninitialized, - val storyResponse: Async = Uninitialized, - val commentResponse: Async = Uninitialized, - val stories: Map = emptyMap(), - val comments: Map = emptyMap(), - val start: Int = 0, -) : MavericksState { - val isLoading = !storyResponse.complete || !topStoriesResponse.complete || !commentResponse.complete; -} - -class StoriesViewModel( - initialState: StoriesState, -) : MavericksViewModel(initialState) { - - private val api: HNApiService - get() = HNApi.retrofitService - - init { - fetchTopStories() - - onAsync(StoriesState::topStoriesResponse) { - setState { - copy(stories = emptyMap()) - } - - withState { state -> - it.subList(state.start, state.start + OFFSET).forEach(::fetchStory) - } - } - - onEach(StoriesState::start) { start -> - withState { state -> - val topStories = state.topStoriesResponse() - val allStoriesCount = topStories?.size ?: return@withState - // Fetch stories up to the current size + OFFSET, - // or the total top stories count if near/past the end. - val end = if (start + OFFSET > allStoriesCount) { - if (start >= allStoriesCount) return@withState - allStoriesCount - } else start + OFFSET - - topStories.subList(start, end).forEachInParallel(::fetchStory) - } - } - } - - fun fetchTopStories() { - suspend { api.getTopStories() }.execute { response -> - copy(topStoriesResponse = response) - } - } - - fun fetchAdditionalStories() = setState { - copy(start = stories.size) - } - - private fun fetchStory(id: Long) { - suspend { api.getItem(id) }.execute { response -> - val updatedStories = stories.toMutableMap() - response()?.let { updatedStories.putIfAbsent(it.id, it) } - copy( - storyResponse = response, - stories = updatedStories, - ) - } - } - - fun fetchComments(id: Long) { - withState { state -> - val story = state.stories[id]; - when (story) { - is Story -> story.comments.forEach(::fetchComment) - else -> TODO() - } - } - } - - private fun fetchComment(id: Long) { - suspend { api.getItem(id) }.execute { response -> - val updatedComments = comments.toMutableMap() - response()?.let { updatedComments.putIfAbsent(it.id, it) } - copy( - commentResponse = response, - comments = updatedComments, - ) - } - } - companion object { - - const val OFFSET = 20 - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/story/StoryScreen.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/ui/story/StoryScreen.kt deleted file mode 100644 index 1b6c6099..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/ui/story/StoryScreen.kt +++ /dev/null @@ -1,89 +0,0 @@ -package com.emergetools.hackernews.ui.story - -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material.icons.filled.Comment -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow -import androidx.navigation.NavController -import com.airbnb.mvrx.compose.collectAsState -import com.airbnb.mvrx.compose.mavericksActivityViewModel -import com.emergetools.hackernews.R -import com.emergetools.hackernews.network.models.Story -import com.emergetools.hackernews.ui.Orange -import com.emergetools.hackernews.ui.Screen -import com.emergetools.hackernews.ui.shared.LoadingIndicator -import com.emergetools.hackernews.ui.stories.StoriesViewModel -import com.google.accompanist.web.WebView -import com.google.accompanist.web.rememberWebViewState - -@Composable -fun StoryScreen( - navController: NavController, - id: Long, -) { - val storiesViewModel: StoriesViewModel = mavericksActivityViewModel() - val state by storiesViewModel.collectAsState() - val story = state.stories[id]?.let { - it as? Story - ?: throw IllegalArgumentException("item $id not type Story, type: ${it.javaClass.simpleName}") - } ?: throw IllegalArgumentException("item $id not found in stories map") - - Scaffold( - topBar = { - // TODO: Push up on scroll of webview - TopAppBar( - backgroundColor = Orange, - title = { - Text( - text = story.title, - color = Color.White, - style = MaterialTheme.typography.body1, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) - }, - navigationIcon = { - IconButton(onClick = navController::popBackStack) { - Icon( - imageVector = Icons.Filled.ArrowBack, - contentDescription = stringResource(R.string.content_description_back), - ) - } - }, - actions = { - IconButton(onClick = { navController.navigate(Screen.Comments.getRoute(id)) }) { - Icon( - imageVector = Icons.Default.Comment, - contentDescription = stringResource(R.string.content_description_comment_button), - tint = Color.White - ) - } - } - ) - } - ) { - val webViewState = rememberWebViewState(url = story.url) - - if (webViewState.isLoading) { - LoadingIndicator() - } - - // TODO: Fix issue not showing for http (non-https) sites - WebView( - state = webViewState, - onCreated = { webView -> - webView.settings.javaScriptEnabled = true - } - ) - } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/utils/CoroutineUtils.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/utils/CoroutineUtils.kt deleted file mode 100644 index c1d5974e..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/utils/CoroutineUtils.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.emergetools.hackernews.utils - -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll -import kotlinx.coroutines.runBlocking - -fun Sequence.mapAsync(transform: suspend (T) -> R): List> { - return map { - GlobalScope.async { transform(it) } - }.toList() -} - -fun Iterable.mapAsync(transform: suspend (T) -> R): List> { - return map { - GlobalScope.async { transform(it) } - } -} - -fun Iterable.forEachInParallel(block: suspend (T) -> Unit) { - mapAsync(block).awaitAllBlocking() -} - -/** - * Helper to synchronously wait for all deferred items to complete. - */ -fun Sequence>.awaitAllBlocking(): List { - return runBlocking { toList().awaitAll() } -} - -/** - * Helper to synchronously wait for all deferred items to complete. - */ -fun List>.awaitAllBlocking(): List { - return runBlocking { awaitAll() } -} diff --git a/android/app/src/main/kotlin/com/emergetools/hackernews/utils/TimeUtils.kt b/android/app/src/main/kotlin/com/emergetools/hackernews/utils/TimeUtils.kt deleted file mode 100644 index 053acc40..00000000 --- a/android/app/src/main/kotlin/com/emergetools/hackernews/utils/TimeUtils.kt +++ /dev/null @@ -1,80 +0,0 @@ -package com.emergetools.hackernews.utils - -import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.LocalContext -import com.emergetools.hackernews.R - -const val MILLIS_IN_SEC = 1000 -const val SEC_IN_MIN = 60 -const val SEC_IN_HOUR = 3600 -const val SEC_IN_DAY = 86400 -const val SEC_IN_WEEK = 604800 -const val SEC_IN_MONTH = 2_628_000 -const val SEC_IN_YEAR = 31_536_000 - -@Composable -fun Long.msToTimeAgo(): String { - val secondsAgo = (System.currentTimeMillis() / MILLIS_IN_SEC) - this - - return when { - secondsAgo < SEC_IN_MIN -> LocalContext.current.resources.getQuantityString( - R.plurals.seconds_ago, - secondsAgo.toInt(), - secondsAgo - ) - - secondsAgo < SEC_IN_HOUR -> { - val minutes = secondsAgo / SEC_IN_MIN - LocalContext.current.resources.getQuantityString( - R.plurals.minutes_ago, - minutes.toInt(), - minutes - ) - } - - secondsAgo < SEC_IN_DAY -> { - val hours = secondsAgo / SEC_IN_HOUR - LocalContext.current.resources.getQuantityString( - R.plurals.hours_ago, - hours.toInt(), - hours - ) - } - - secondsAgo < SEC_IN_WEEK -> { - val days = secondsAgo / SEC_IN_DAY - LocalContext.current.resources.getQuantityString( - R.plurals.days_ago, - days.toInt(), - days - ) - } - - secondsAgo < SEC_IN_MONTH -> { - val weeks = secondsAgo / SEC_IN_WEEK - LocalContext.current.resources.getQuantityString( - R.plurals.weeks_ago, - weeks.toInt(), - weeks - ) - } - - secondsAgo < SEC_IN_YEAR -> { - val months = secondsAgo / SEC_IN_MONTH - LocalContext.current.resources.getQuantityString( - R.plurals.months_ago, - months.toInt(), - months - ) - } - - else -> { - val years = secondsAgo / SEC_IN_YEAR - LocalContext.current.resources.getQuantityString( - R.plurals.years_ago, - years.toInt(), - years.toInt() - ) - } - } -} \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_chat.xml b/android/app/src/main/res/drawable/ic_chat.xml new file mode 100644 index 00000000..8a0a234c --- /dev/null +++ b/android/app/src/main/res/drawable/ic_chat.xml @@ -0,0 +1,10 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable/sample.9.png b/android/app/src/main/res/drawable/sample.9.png deleted file mode 100644 index 3fd617bf9280439d1a086b864933f8d2b75a43d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/font/ibm_plex_sans_regular.ttf b/android/app/src/main/res/font/ibm_plex_sans_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..81ca3dcc9264054eda54892f2105a4d9f85eaf50 GIT binary patch literal 133720 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�f+*W;r$=a=vy`(2<$1RoaK*H7}p<@P(j8nx3t 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 - - - - diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 501c6926..00000000 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/android/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 3ef6a29e8f052a25f146d4032f6ffeb41199088d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 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 Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index 1afff257bfabcdf1335f363ed8c619791855bf53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1455 zcmeAS@N?(olHy`uVBq!ia0vp^i$Iuz4M-mPBqq(kz*^?%;uum9_x8@~?$A(~V}<`G zy_1Y>$&31;HbGD1>!R|#opCN%GiP00apCN#MIB0KCS7ppRWR5!qqFa3tHP;G8(%oN z3I;VrOxj*p@_uVr^)`h$>2psm-M{&}(zox-_ruo}v&o6wwmf@di6_ubV!#0h(eim> zFRonDO@T#AcIhu-|Pz*ip^ra%()-dz`J^qGnaCHMKu3c<;>1+xhc8 zYhS$S2zI?}#dkl>hY#ZRsw>LKavyEde)L&==KoK&wa*3k-f|!P)4h0evmeOow_VFFX2N_;Y;j zg>s&U^Y1R)@%+z=9AR+S%|5j@c18HIXWQ0wom&=SS62If`NP-zuIaPAz_vteKF3ve zUB4=SmH+m|SC_wD`SGXllkNFe%DL*kzhAiH^_&+u!4PxS#MlMD_dA;#DLMD=`cudA zSLDV1G0_P>*L%)vCMYVlUrd`L_a|Sus=m)wRDOqzoxS6~*S^2_4!-}huj;??qRqa` zK+%`G>(kEYuY6bUeCT?Sv;UNO-kbj>F;&$i+g^f0F!#y+-!AV1{|e7|^zZbd&9mes zuZ6Syzx@2-PBU=w*miN_@>$n^mmHekHpM&d)n}703u}H&dyyjzcI53-`O*5~tBlGv zRB6RY&9(hED}UPy?WX&NGIO)FL1`#2dMbZhY;AIR$otTO+0)$9Uw`($Cu8p#8~MM) z_58M}V2_-=bA0{RxHX0CtCv5jo$iwUcYE~Lln?XQcAwh{@#)pJW#9gq8g4I)Jil|F z|KY{S3u8(`|IE{cc+mR$zwW)_Id@+C3pg{o=ueOQ%{A&xzaLzEvG*1vW~;8YaJU?-Tn=iQxjuiGr|fBeE7)kPoT_bjd#y7TM# z;_oLWf}CjXy;;5e!}s}B_nU5S*zzysPV)VE0cUn9)b;a#!=d`CspS{ZL&NRv$ZGdcRpPI5Ewcs(=2%?(2(VOzo?D&w=A1Qu@E? z#`x{8|E~UNU&nLwjPc{^DL$YSGkf=^*4tnBuANFPcS$b>r|Gk?KTnkGZT`C7SMyn{ z$lSAY!A>lXInsBju=u#^8x2`=T5vX-e?Ro=|DRizyDS&ZC@rfoE2e+R!9q;=#=!7D a_&?L5cZY3O7VDk`>F{**b6Mw<&;$V4cF_$0 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 18a488f64c3d4a9eee55ad242b8a1837cc8e880d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3287 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 69a472c041ebaf72de31eba961334b0bc8634883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)_;BT(=j?nx_w3HGYcd&? zzy-CYBxpCS;0nv2&K0xR#N~+kJg@q%JjzCB%3cSqTmep4Y+S&#S%yg2B9`0$E=wA9 z<#Z9J@I!P6Zk}KU!m?l{WyXjl5Bi+Kb>b30bS4gNyY&W(wk)cEe6##=Su+1PtP?oN z=MY48lzf~Btj#ju#q`*%KcCfPu2*IaE4<_J`2L`Elea;b3J3&WL~}Lt1T&z(l-)Mn zTWQ{`%o-IX`Cg~skteHPP;Zn1clTx#Dzk=Fm_UN=K=+=tMaryU6_wp4q7#4?#K)1LxeN50Vvg4(IuzFmB?g9?B3-{Vt zNCNcbBQ{5|3#}zU$47yVjR0Xgp`9B6{RJ4!#Xvv50cmyy$i;ng=kcmbgkAmn7XU>y z^CH1TfI)6Hvt955?eBp=*i+j;a*qKWeFtJov8F#NyadFPMLX9}L>lY^X=W1W$Dx3jx^G^13W&$^fxdkbkU+@QW7?ira1~&X%SS+x zB%s3sAT||f#$&==puHj}fFG&sKec*1CWe3^U}6ffKb7K$NY z2rQ7LD-i9+UG)NsjY=S{A9wq!ECo?_fCEZ_JLOqhlv%?{erV8BnPHu6uubBmM0vpB zXIaMUt?rH;YjQE;)3OKxSP*=Clk(w^<$>2>1DuE=c;tb+_AJXXSd;aTWlIfZj9j6? zq*8No;Xt*yZ>%ocGg)t&nW(o-<55rKHNPFr_Pp3{eq553jBg)&ZXI0!E7Xw6*jOQ? z>~6?gRaIAz_K&B%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TTSIEGZjy`6E|J0ww}{kON5 z29M&dV3*Y#w?rLJzu<~oc{g7~C0DEEz@-kAEYYo6PA{}_l{!wn*i>-wXqQaZ+y?ST)@67!hw`T11`?$+uvUAQ7rsU$vij~E|tl?>!9yB#~ z|J`XXvA=p+TyoYSR`+R@#+66hv<%GFU)Pxc@T?d>6Hg=MD^sAEit!M+;#u) z*$`u!-HO%ku1V%E6WchEt7q-WYd6pF@-Ho~OVX)4CHAXWa`N)mhr7R=IT0@YCTo?^ z^mvdvvrTtZ>FoW+nt8aL)9=rCYZ>FA{l#h8p&8cttAD(xa zsrz4laQaimpSQ(#^Pg%T1$tte+~IlCN)kCQ-sQgMlesRtI8ATQp5wDux`PaVy=mvc zqx0`AnXS?D>;11T|Le!YpHBR7x`BI}`H$hGA+=QZEHzFRx<`r&uF_e@`j z0(}<2{kZY?OE)fiulZNK){D+x*QIVy_xps8Nv3VLO8nRz4R9&jyY|JuQ&t})1`KBTur)77` z&(rRdi~E?i2JDikKj#c=_FkL4Q4B1*w{>pRC=S5HEz8yY|H%jWSWHKlsQw2cgvXQ}T#hnG5{)GQwVYz6(p+Z))5STF; NJYD@<);T3K0RS*Zw0{5q diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index 6d39503aa8dd366168c4a8b3304cad95b6818ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2066 zcmV+t2<`WYP)T6s+v&`#Z0WFxC;76&%)RG+-#zEt zxpRxh(@A3hNLZ;=LrOh>Yuv*#-iF$ukJ(3B zgdp^ZYnstmNGXYimAz_MZdAhxi-uAM`k*g-u#%i!PGh)cMxGnjG=q;tL-Gj=>DEX{ z(Nh81wiiUc$fr>gJQ{A*hq*A-ur!WluF^zYkAx)+zt$N}0rtM!w=~Xa>?^YNPfeaY@O{t3fm< zZ&l$mh*_su3i9i#1~CR7r)hz_&12L>sv^wALk0H^$eW#}35m&SSRlRYF+`+N*v1-9 zz zB_vmJ@+c|?$LWMo*yqZmpNJag==jDq!qXg37K#-o{=#u^npO}8;-g;*%B*^>w8YHS zOg^qG?8}JITQQzGVx6}-Og97pIae#APUVCg{rx}fSGfM+B_AoyBTS zF}x2sj+;P z_a-g?+>K@FpHe9x(x?44!RjyxREmOL_XmkknYMj3_06}niB*2i^jM6=Dz@`zSf4w> z#D$jjR;1Cf+1|xm0Js|wsGl#r&qHP1Sy~+?MIO^W+rS0Hem~Bl&x~*PTwQlRrOrjB z*Vi!hg&7Y0lfcA9Y{%KDV&4ZI(-t4r<-!8_yUqz9teVKlW0tiotJ>}_9>%n9chG%} zY2}+)O2uoyA^^XC&hvjyoZFVteMMQl8v}Axrv(tS4_7i>*W*!GF_zy`Uwx1lF6u*l zeu}Nnf5IXFXnD*UwhRqp^Jr7iVjGIV2JA!Q}pY zDdqOX)P71+P^ooI06~2##PpV?cs-mx#?- zIDuuiu-J*pccyXK?0XQ*_;*CH_tS2LS|jcuwvX;@p*U7h8!ghl{*RL_=&P+O`u`hpEDS z0j=0d(1w%kxi@<`IJetMY@V1kx;dm=5RE&wnR9~60%)VjH*@q&aB=-D{l|mzzDbBc z+jhD)6-PO5+|li{6WkUcI31spTR~hidHNgNjXKz0nDYd34B-;6J4_WW3ZResR+{}* z+U~GVXYlmFNp{;_$oM?Ft$$CsuFQWj-l>zHl=S7LzIZoN-zcUfb&UOast{bTd{)o% zRgLP~Bj3!~ECPypl+Vmrg|iqG43C14*)gL~*8TOdeG41r%Ta_a5};IaaGVab(AZdcYD?wl3u7{i!0lkz z<9x7Xm=Mu-_dQuJW6jlYY8;f)emaLSF*bc@v7OTft_LT_)Ug_tCX$K}`3@B3Y;BH< zz~2MXCPI+cn~3~3Gjn!;3pk~8xC;~YfKUzkvCz94j>sVosdX^7!P6$hkJj0N`@LTh zhr!^IH1Cs{ctdw56zrdwv+W{8peCrOur4QFbS?ot;TvNhZN9#b&-@T@;BVY3G0_ns z@^?YidpELeYW4<pNtiebrZ&rq9^!t+stonJD zx8lsBQUhiXZ*Y(j(P;;9>c`vQty)tmHyoOkTLB;N1)uPJ*>%3NhM5tA^d#gEhCe(w zKvK+cXMMczv6SxD5Gno|Ec0N1A<@mC#t$XkgvXp2777bgqw(Gxz`h(p`7 z7-~bjSRe*x_8^i^xFI*A>zK*j9(NWF>NOp}HSXb=XoI%s!@sI*8?$s8B7&9Tc+pKL wI@E~~9sK`?>jiL)dsxrA;Y$jA+{p8P0d`&mG+-Vw3;+NC07*qoM6N<$f}a-o7ytkO diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..62b611da081676d42f6c3f78a2c91e7bcedddedb GIT binary patch literal 1772 zcmVQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 1dda24eabc9f097364777182f33851cfa93e7321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1823 zcmbVN`#;l*8~=rk9Zp~aWIcnJH6hwLej*Y^)N@7L>jKd;yGdYCVu&3C2iLu_WJAYGVSq( zcX{pYPoG|W=sjL0+p_kemv(-#bZd2|d@DShV(Tnl^MCBvvi+o(fsY0$lPiX?XdA!9 z%FX3EZ1qf+r|?Fa@MddHD_=If>d3$xl8$$(Aaa0)c>^tnQ;l3D*;X$`tj*EX^JWdi zSgqZd>1R2%b&f4_ArfW<&@jcaTNkT>;75Y5r8NY}(opv)-Wk@Y#y7M5_vibjjK{*y zwQ6~;qU0!92oaWIm_nESeAYg&#gS8;SUAmLD32EpjkA3hz0#0#?xP)glcan}R5wjBioXK|KR+Gv_n6ccxnfZO824f+Y zqx_7UQ%|C<_rO_-iW=&NP^aj@laVRu(Lomza!h=arm?(%*9KE_ZG=PxYm=Ys;e#s$ z%+TrI*3YS1X@S=#(5858=sePw^=NBj<6Tb`PkLNgqhcUpq+ZQQtW8goTu(Mr9M03Q zQV7xXrvSvvtZf~T?ms3^6zDX(;f^kGyzQ#r__5TSj0$ z1a{@>HDI_=N>X5ZjwbD-?|gS6w*l%A^>}1s9R524V>`WznVh5nF>p!I8 zKQ^B@7T5dcd)yQ9wx=sd(CNXz_KM{VC&R7%-m?R;DL=Pgu2VwuC_j2nbzWWU?iLf6 zn?Pcb%tC!wdX!z>?qxVD`Nc?U$CL734>1lQOj~%_a8_ZHHT$&f{U+(1_gr?crAP91 zPR*IyoEhQo3*E0E0`o!$i~sPKC4VFDT?^e#zBUr!oI;Sc{r=VLVviiyUjd0g?CB`6 z3MXpzNvJ`;37H7ddG&OrTlbo0a89WaKr0V!Qc&Zl~46!V6cDZ+c8Vf>c%&l^mXx;3tTAhyVBan{xc=y zYMMvzNvthHk0lE7VNGdPkE-QKdCTs;=Q~)wWQmFZ;|hWrR2`&^`EO4Vpnwr`1^zCO z!3BWAAUoi}o+}>=4n%7*#H~I&Dp@#@Our7d*}QvfXwQ@Wq@^LL z|D9a&)&{`=l7=>oKLMRDpNIcJNc(`|^vi?B&WuQ3Mf%e$q2+g^?n&2_&P8Gq&n+I{ z7^6Y=-u=8@{974)94oMPtv}X!q5u|_P}4_9I{O{43iDT`0yXA6QY%FbqvAM=(lo(j zZHabADRwIBuhuezdg&J@*^Sx!KBIy_RQsmEbJ|SN^NdjHo2Ie5M5`AF>#HUC=GtR{s%|BQaF~0ic6o5WMppV4p1{3iW)Rv zM3DJA0^>?~oz`ZQPM3{ZStvfs5Zz`v{j#^evR(bbk1!B+CcLk7y$hnd4dcqk{4l*6 zPcy=?vWuS26m7kfv_TOgql@7g6B^>>Y)1~b0U9xSlwN!fLUa_x)3P5w-my2{#j=$9 zGlaN6WljZfJR@dPxMP2~7ODS-G-6geHLn1z?Z!b`dvoGs_s95wQz-k?WjNaO8=qZB x{ty~VWJI3}@i`){j8UovpLY5mZXNh`bW+h|_Yy7!z4!P4HzzMghJ8rpe*lv#TqOVi diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index 3576d0da830cb111040656260478556885dd3384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1965 zcmdT_`#aNn9Cx0c)N!fjoaB-gJ%`FIH0QWPPT`oaMJStVb2yR7noA>|LY-Q|Y8W%+ zo|syqFbjvZTvjfdAtRTJX4pzI+YaCUg!xu&UZ$S5v#zPnpGFx(yzun zuEMF5pj1?h?QFp0len6}+do^Xm3fP@4G8B#eY8O4cK3H<-n_Q@6~wC4w}c!SWx-)l z(dX5rqWV=EyQiF0RiRc(ObT7rv%OgMcrg5Eq{c?tZy$Yr$aUMCkCn}BKZ5WVD*hLS z`pA=h}z0hEL3?j=-pa8HV)h^BnJW_+4dcSH-Ky$XXyg=DjK&mUoRfJ$hm~-ky_6+?pu<|hw~GUV<|X3 z>f(tTALAzpMr-k?9KCVd_pm2R{j{}cL^>hMAfl;gQTZU|6@`-&)UztD5%M)dJ3II< zCaaUNf{`j76|Xn!7qDc>e{mS#n0iN9DuSi_#rT`X>}Z#YN1tuS>3Q@G<^U-0c^!}_ zI+&l->>@!hr^mQ#ggq@@QN^pq3)d-XtpJ42!4$bj2dZ+U9{1{E#$^*eXDz zmtSEL2Phj1jn)KH@mJ(nY}fBix}-PzJ*@;(?JUIuq3mR9Ot+3>XFEPfhTa0*o0Z9+ zK>E%?HkBX-lo)%!F=Rs^MKhAw}Z_85I#$+=p)W@yYEdBN9l0s^dj zC9%1`$go<*60&Edtkfe^V&HIWV(#j2J|-01|ZwADwZ9iamUV z`Ll+RA8O=m3QMj5Ci zh=e>?E9DcQZGmw4kzF#W{L7^wQei<|w{&#f-K%q#g?(J$T3ja3`~6N_hP!ygXQhtQ z^>_j*D>mUa4KX<)prs*No;0hjDTa8FgkEvJAQkS_gtay)G9_S7K+`;G0(oEoT(!ci z3}(0k#J{tWl-$vaaMOUbtT6MEK?ecN#6F+9?qV}XjEfVoo9F&fRmUrl3lt*$NJD=dAO`nwXgbR{aH*IO!8%pH^^W= zkWc`g1AF;eEwQL&9Qk$IwKdJ(u8i?K#KQfCSX)aioS(gK>ROvAs2>?%kzekFy{)SJ z6a&eMZ41fW!M8lD-P6C{;d>vNpC7nPV*r}qd;iPk+dr=j1T`+*k}RK` Sp(Xim;<>p%ohc_muKf$KpRn8j diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 4eeceb838182cd81bac7bdbeb24ba6e884e0c091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4863 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..28d4b77f9f036a47549d47db79c16788749dca10 GIT binary patch literal 2884 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa7d6427e6fa1074b79ccd52ef67ac15c5637e85 GIT binary patch literal 3844 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 I$6sCi1HbZF6951J diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 762707d095cca5acacbbf2932aca840f95d9977c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11242 zcmZ9yWn7!x(mfn3P~6?6#ogVZxU|KkrNxT76Wp~FD{jRd8l<=t*HS#VyGzKM-se95 z^ZecqA^C9a*)wa_o|(P4qO>%Wu+YiT0RRBjYh`&I_;=Ue4;m2uS7+G{6#!tXdo3^X z#>@2BA2mH?ZVo1`KTO=r?Qdn7M*s5{y#g*mP%)=Fi>gsG9XWx()Ez9RFEL%-f<1~{ zAe9ta@KPVQFc+mLqyU5-OwY{91Ohd3=z6Tdperq&-nSimZ8O9r%a`JvR?VaSBQ2e- zry{#Kw;iI{ge*Em%1QJJ(f|FSB3!WN#*wn!nyQk2qC`02UKQNa@4?~BetxG@Wb9!h z?UL9`&lUCM-ID`YCy+WTgd&n3n+O@X3uCEB9S zV)fTJ4{*1yrT=ifAcv_B_Bv@pk9nWWn;*tDZhy!=vcGPS$rpm_+EUST&UMie0}*E6 ze$}W64hH>s2N(}?J^3(SyR4hTw_=dAL^WU9auUN6$q!^P)Q-EtLJMA#VV%$!M3jB# zZ2igbU_%qSRmu=r>Hbwr9MrJP*`-ZE+UMcnBko~$JxYf--%Kl0GB<}=xgG?* zdgelun_mBnf;ijHvkwiT2qD#~35%bt3m&EJPmipQchOC|DQZZACp{M}dyH3rXMa^5 z-CewQR!itc(|G%aA|+a5|Jo;|TH6f+XX_x)%v$9ff2~eQVv%4nX#$lDpK3LucD=F| zRrC!P_?Ni|dRV+hrS92&Wi3%lnrO4?Mg+1gnwpg<6wkybb#b@MoqaQe8P|FC_V*v* zRlLXq7E^pFuh}U~onEqasy(nN%ta9FH{G?uQfIWFQl&d*fM(aP@f8ihP7&hcE;~Qj zQqz$*JxU+{@G;bIugrWlvp$-cKiJ}>qF@L#V;D3aHjE$nDmmP})YS%+wwwTh(?1{=8%`fpU!6os-J#3Efx z=eP`7U`2ARWRJX<;_%6;p(^Eb)sZEk`fZ-i#imMy zio;QlRRHB68RLu=9WyXF0LR}wy;_#{M&=|*(SM0|NDJMQ%{68ICF1OsFOhrGruOA` z!c*fwdr6tMOPhH>gq|J?W72_a>$Cs5WbCgkH>t*A73h`=sVVew@yJ=gRURn&aly|2E zN7)pw(y?r-`{K^te8(osMSo=TOHxfXLj;g;rYwFvCH`1LPr2SCcV34Q!`iPfbP7&O z$~{ToVwI(rSvTRSmN5FD*OB80#Q@Vgz49oQ+|;!+>lxC-0&#wgiB42j17S2~W%eQU z3w}DKyu^a2jSeDZJz2#Z>)}o3zTX;juv`5`OhlKIZtmCBFc66v&sCqjBDo?;xg2G{ z00|m>zBf3I`gB@)`#8rmRzS~)PmqPf9gN=ARzF(p*FgI?Lv(-K;Km)Sj}dK?5i%e6 zS=;rT%=EaI{hw!THMkk>-ba}%2+coW3KwnY+M)U0%f^(u4BEx5abZczh7Ms6<4_uX z)Rp8M=a(60 z_zA>^ii+Oid6^}K@6yDc_vf#ZfVBDHLl{6O)auEch14`RKY!Xx6S|yhx>T`b;)TE7I;_o?9x}ik!%8AyJ*%7yDmX%_ zi5sa8vC!T}uRG>4{GGByW4`6+LxQS}hadGKiKGB8MNIrvjQ#M*Lh4{QPsg0ftTHrs z9)HPP_6Z}PL6TlxL7DNTys5Rek$T7NO7PL}HOh`QWbp>w#O-64SBIIBQs7`Y$e0HE zUxSie^FYaO7XA@VaoAvOJY2rD&h2~rrBM)~nZUoc?tt5~`6vs+JNx1NkmXNibe2pN z9Pcojniz!Y1xlxAaQ`M0*Lxi`9Yu?$)w9|C@p$FR2D18zZS7@9W7zDcb*F z(Ia(`s4vpaZL}adcBSi-fZSK5U}}oLUI=TIl`C)PsrzCT;Ah+z82Oh?k?q#VLul`b z|L_f7EUfg-@O5{OBol2E!dkSH0;S*lCsCVu4S)|paWiT{At7nv41G$lZ3cJy?CqP| zkQ=DTzcKJ5IAJw(Rm+Zy2Rn$8V;D~xfU5eM#0gY(l(7CqLOsOg81iKIX@yXZ2kiCh zUBp{&*t@yycp+J8D8j$bAONz&ej*FV?%bl0;Gvmix+9!C(iqrL?O1Y^c%alD9Af-K zM0$9`;h@eH*Gf6|v2Vv~8!^d@#l36_cw=B0$XGO*Kwdy!fLxtxRtygKvc{P81B?DP zsn90ywRTPgI6y?l)t($;*xx*bm_&krxGdK3r^JtY<%wN*;m8?q3-z36T6}%>$Z-kX zoB&W~)y(F=WXh_l>0@Vqx*HS+%@yFEx@X2qt&Xl z#Qu%UmI5xM`|QSG$367hao3b3O9G@27DTT~UDw+19;K5K4&Dn@F}9OyuEeRiDyFZ} z+_xB=)6I?!%YRJH?Tm_lQVR@?LKdEqH`+TIn*I6z8U&zfv;K6fzJ9{6xSkI#9NPfa z0Sf0b@CT{vu5c2bK&6q)NZBYFRCD;Mpxvd3$e1bJnGTWl*1#Mc-<{AMLvl!j#mB4M zd>aaPIF5{6{R|j&FU?yhDC4}i+m{a?8rd877x8YbsIH+SJ!k=N+R0N4yAs_Vd~fW- zUw28?hX`&b_ahRuL|Y9SEgs@ROdlzs)g}IoaOV=Gx&2D|s_k-Zp3R+7t0ln0!W3ld zClehaI~DXh&j5J5xYc4cy5caXiX10i4w4w*?gXbgyELEF+g*YANr;bz-=X^4gEh@x z-^BMayGZ)5d>q^&rXaTRE40mba|dtgpzn5`X)g(UZX)E~$nzuCb(KE~AkTnC5v#vD zPBka+I~?VMe{@WL+!=)KF!bG?7TD9o{k2xx=0=6SwVLzsi33bthuE?`3Z=6)f%916 zXu0z*kBOxA3ukl0E9o-OL^1d;TS12%E$Z>lXVB~)#$`4XO>iTKXj~FQK!5J+RK-a< z+)W3so|W7L%S_R^+U!;QaRAyfTfp~O(QnEz@AO!!cb{`h?E9Q7Jo};R6pNST>y_He zH7nokDaQU<>Uw>|_`|pPeh*2G?-A61=NtllboC0jVc&U%gswlr;EA*zun!@c5Nc}- zC6MNm9ZT_Wlh7)f&5K9c~YNtnk+v$KHBQmXRL+1>sZHFKZAHlQB2-6 z6wQgCZKx{8&JQyS#k02@cRS1x*`6y!^tU`a^cNi~{i5?BpufShA=L{}Jl9b>ONye@ zo(5I&0`9HUgwm?oUO!Eg3IMNXsB|H8+Uq=1| zK55Wll1}l>G7HuVio65yC=_~bdalEAFOT*ri4Jmj8(fN8Y_5YBHabKHT;b@0$@y35 z0XQeT*r+t9?DPAE@w3__rNU)TmkdcDk$I?E1t|7K3{syu0pQ^~+18bKE~UtLkSvUXx49fdkC) zW^<&f=q!-DmZJ}&XxQi`5QP$_U^7iy`f-&H@3ISv@iLq1km0@sQvf_-|A>yY|J3uP zGOeGFb`}wSKjk_dvsr&6@M#Pe@Yk~!PU?cs6~A0;CafrAO}`ckNX4NnGkd=5=CNd~ zvsZ&3Y*I+j*&yGTk|Ry}Z!F4cG$!1gXIMl-rCuBB(Jn(PU;xgH0m#F(e(}u}4+qa& zY1zd9qU54bbnewVaj~^IYR$NYwV4d%8NuIh^u;Gp>LeOCNT{h(MGz>lnQ$G>M~9Z1 zw;IOaGs?p}l?X!y0wO%0;JRT>%`CN8DN`x=90}q4 z=KSZyhyH1e(c4>R_V_PK8x~inaQqQcUzE$ewEomV{WafSju-T;b#F0o!efnO>GV4g zcb||MZi+a_08+g6`2}m&<+h;V+j5&4nfMK##`a&)nzs~zQ3>!d!W$3h#Y)J8=cvIi zj)Kj{iE0J#79~e2%3`VO{KJmG4Y%^{{IY^@qOL}O(HBRnPFVtSbm4QTNzgu)Q@XQ=6B6^)Z&;r8!9D(??E!3rtV@a;W71_` zkynuR**waxCFeJZ@oe6qT z12|48Q>|fd2t-3FjdBB`;S%AEfVWjpFwDq%%7gSFzjCdYTyQtfj%?dUgB=FkA93xM z^uvc@xDk+q&206W)dY?Oiw|NUE?Q+;mH_(z|Ke3clbt_oShU<=n6uGLLl=pWjYQHP zVkc-*<@qR%A}kR0P9}@CInE}s9gU<9aON}`!8eMEF81RTkrUMdz@fj|IJU`vsrM$$ z`-gN25EsCWakNmxR83w=c-^EZ)d(qAh;x2hKMF_|UDXM`TZ&l3& z`W~_=d}}va6?vuBjtZJ&GB5j);K_R7L{!n8JJy_KBFSyR2&PO%Xcw8{|MT_)3<`OT zghp8{#r4K^Lg4v`bEP)b-e{xMlNc+p|8%zSqH@E>FJnjC87Yb6eK1AWu50C6Pn>;j zpfUC^;7{6@we*kenWWN9{2*ExMcdm)wkG*^o1@OW7=$_u)(36+B$4|ryCv}Rpa!Zq zGwevWsA}=G{_W*-pPKJhk_0ZT>7jlCo9g5@WjTA zhUOSXX3P33wqDuw2@Egc+}&7^OA+GR-0JZxWKOP$hL<5ri1Yp`sty3hF2FFAh7Ewu ze1Rz1cZ@IY6ryNMF)^-~b0gbwnVM$Nx!l46PcH#0lGDn}BmmKeGmptNNXL}QkyK;I zj0uaD-`s3!k#FsDR8{y=8I%H*+MSUv)N2_W0^e8L5#U-i=ZQ6*g~rK8!px0iZl+ z<$HLWCi2WSkI*Bnpw$2KLQ`e}@nlZ(fg>YQ>@REW=#DlGQcnXH+3bbEv7Sbte}MUk zuq?n`W%RaeGmjs{eSRsUay$hkPk!t#D~vu2RJ2YYsDW1oPJNcX8?w~in6_8DK_fC` zUC53r@+#Vc%_1Z!$G$}fp;6Js57c!f=-bR%XUzuz4{y?UgwOxdJeXAaQ-;X`?^t7C zY_U6zlXsD)7S1T(u9q7*yn*S)ei}dz`u4~IAD*pWaBbWPMPJ_JFW#JE!uf=_J-MrL zH2i=#!`ZWL=hTuG|N95ZCjc7x)%R2{n#d#|uH-VzaMg<);!)>fWxoXed%^+ps6ddq z%UZTPO(YL!Bz6XY4DfEm@S1mW#r=AaWFaR_GgJWx@6tBQfZFVhpJACE&N%SRKoniK z{es(41eh>{2(q;ESXF7Z?pZ)B1LghE+1S(3qd7ph)T_Q0-ZRFhiV)u9#Kg^KDw5N4 z^#CwIXH7R}J$Bn`7MOvk@Wmm#Aeyn$$V>u-`$ zCC*olBset2dX$oZt-+SFIR*A|qWgdM7&&?i!aa2GTbb0)19+_Wp8Egp0IC5L zqB+dGxy&~ZIj#nJhL|94%If9|QjH;h!u^=b-29X3Tw4E)e3l$Jhz5R+5SC%znQ%Ab zN)d(;JgZhSn?bsH#@4JUd04(v>7P!G4<+ytkp71%ZWk05a@p|JO6f2cU`6JcG=|BF zG8|?Z94_XTu{CpL*wHcc_PwVP|No5w$po+@v2@h(+5C~Bdm&%Y79e8<0#B;pV$fsu z>lIx|>EW*nOaC9A&R}&+55NtWrc)yYa6CK{VM7+_{hbzL^qzD;GmW9S@7HQn`EuSj z|677D4jA~HWI85PO=moYV3h%*aRZEo0eg_`FDpeQ?i(F)96GRO)cVjj{}&6S8v~M} z6mCTibNo52MibhN?lg(OO+t*4b5!?%k?ug!NoQ{xcUO}n9I zDH3v2+{VLX6|Alf=ji>wKd*Z=BclHwQM!Xlq&o9XGza`4%$uygYh`a>EoZ`@8dUw$ zyTDQsa_^}fViwC2%*aXe6&DDOG6P3G6nI8lOox5_MY z@CzAK^{8+@4EROOm~ILdG$xdB?*g9^?*Y@&$K*akVc^y#2Iq zNQAxh|1WfayFJZYSjGp@^m#fPZg9r2dti@B-~;{v5UK; zKj#Gj00f-)zYbpeuIO=R=9KJAFqezx8VH_klga++xZ1qNlLx(<>A&H7-y%~$zd<<- zc#_^y06>Z-j7l;lIQCOTF|v-*WlgRkTcwN-8f3^sO@Jau>{TOhz3Xc_N*0lz5W7zM z(96G7aNWl`YD46X#ecg@^Ju9A9KdHf!+An?QSicRg{JNC+x^0D=OCG0NDPD#{34#W zT5%RY>!uw`DusQ34$0FGS?!P=N(grtHQ|&d+Wap5Tbv|F=8(Fhx|Gz~E&tjGaDQlQ& zomiAd$qJ|z?q^HvKtLHz_^$;mI@?!!9iG+hY>4<)wGE(Bw5UF~lqm%%lp^kcpP&FW z@H_#f+9#ttJ_kXHd%EjxZW*6lc3VJpF1WcD>lN|RK``f+e{@&4Oh@C+9h_ikcyKbR z3PSZHbi4mZ%-tC0mAZ{$3kbqJ3`CJ~mg-)}JjP73-CA*YhjwB!1VC0|u z%yy}uRIwp{2Adax&9o2n!e8*#FKNRnMkGRbiK$GiUF$Kh*@^$F3nHCClk676$2QuF z%^t2HSxr>e(uohTcf*dlI=T2^D9H`G$+>Ng8I}QLsxwa<{u}Dn{}l^S%>k%82JqTN zwhEl@5)pi;(9KO71$c2+=Aejj9nS?k=_&l)tepkfhW;z`l}_gESk>=uWoeZ0bqTz` za=d})5xT1o5|?@w9f~GRI8f zSXq=J`ex#8LD^egBYNp-fC-p3Hvx5Jt%hr8N<2FzpVR#Lj#39&Gx%5Y3?tFkD_@aV zDtJ0JgrYl@`%{>ZIK?_2CvQW);Y(teGjXytP??Z`dor{5&3Dx2@PYDWO8P3qeNb$hH33>oCj8=JnTF8betVmF`)3v9eSN3iuzpN(o zF4S=>uB%Iyv5~CP|Fhm&m|JHawch~;>-3CYxDOoaV&zm}z$Ph2q%J*L!e;EXhNT-v zVI!_(>9~g;^;ZNgRSMjAILftp`z)fEptBnQ!Clwk6z&JRFCdu(7GOu#g+>2@U>UY* zx-?QX6i!~OlzphdQ$|X(1`yq!2e-Z5j8huOTv9{!B#k&LWe_G32&$0^`c!U0S0SK2 zALn<|?yJ0W?YpaA0a=6fy!>F?bdAM;hehAD{2|(!v9?s6eOCv2p0v08w#<$y%2f` zVdx2-|HR^fp*LHNOUzNL*YVL9x%&c6Qer zq`fB^8OPxv6tN6vkKJU~!Fp==~7}eTGEEL?^&~ zC+F}xQ}WMG4~9k;$WA@UDiX*iw`RXpCX}N{aVC|R$I7mpn^!SfOVpQm=lu5eWM?rK zmJ5;@H*om(IDWKs(rpEDta-U9Dz#P^IS#x?nF2BJ?B6~TxQloF(4VOL-h84i`IvH} z#IovRCLmBm2<`dOW18mb<`?7hVA((J{zy}=jmmiCfrZu#)vZS#C!y=$CtdJ z5(s9JnBJ}A;-=}@(>fMF%%F;=}&VSI1@3Zdga`ZH^WPGaeFT8*6J{&s7l$GxOP`uYf<_KrR_HL~XeO5U7pwY9Eh+f_f!%o%8M2j-%-c_mW$M|Q~PzLYQLd!tQ(V8)|pf_4KslJ!&0 zqzlGNxgBTr_HRGuvrCJx*Q@nS*Bu9@Azv3tPTd>u9u&sI`gy{CZvUJfo)X$)_^rom zqqvrjbB|ub7)a0)2b#yuXGZsxo}TByGpi?QHVt)L;AF9xBw)ataLBZ+mVHZ?!~7wj zv}A^{2X$=}AUY7E#f`);>F))8_MRq@n|!rLafSB~eNFa&?O$4boV4XAJF5tamQLxv zz|`iH(W53Y?=$!<^wVzJYf~duevri1v*3$^_D6(^-Z_MO&Ez|b7AVO8xg^VeMu5Zv z=<#un;|6ykh36pCB#i9i(NHIo3GQ3S=2acnWBG@aLY)Dq^wyP9~^!<^b{b<1sG6Vzsz({ zs{1L58$a$e{oUDZ5|!x+_naRB&RXHjpA-%(I%&|=b>FK}PFLo?w=ZAaQ4(s3d@}(~ zA$xL~>wMoUghPyzi@XGICl{Xt9xe}OS7Wp>@3id@w;Nrr8kbx>c6RWBxwOIQ)ilY# z-n@N=gU338pDmh;qBS8_q^29nM(@O$@Z8bEATu;P`NW23lEV$tL~eId;t=Ty=4xi>1 zG9!_oCSO}_+c@}mN0RJ^%ZA*KNglT`w{a!^oQ)JtO+E}EWVM=u1<)Wc`!&uL$SiY1 z0C5!En>#cxp2u!k%e;D3Z16xmyIz8sV2V^;C;}Pmu55Gi?ep8;1XL29+3yJ$0;oMb z^K|!!MJ-#y$L9(=)SOM}&jl#DPWwV;ha}DC@Eo)?Kfavwt|UNBxl!TrwJmzS_I&wG zBY=0Lz??!dNAgp+^qL$S{!8kv*QbP-G#L#hVZ__VuS;|_jVoX{&hEntk*8xPUMo~7 zyj?3n4*3>);&71V(zCt@Lc7-u0*ypg@A^^s z*qhMOe`46Kswg(`^wrB)D{G#_#onMR`t~W(jB@*${t`NBbJYL+#lqfZh5~oZXaFEZ zQ_(WX*7MFLaiQK~ocD0mC_Q~t8 zDypRLPcp?bmwMql<5B;?Xc=p?Q+G!IIn4ZhYyAe#OaGht}qUaqo*5ye}Mqmd__GQv?$`M#vlu_&I)4x2YpF7xEoRSWLh@c*I{XEaKEZ4AiTMrV4zz>}j2a@@ zJlM0FDpNJp?b%3s>{_yKX66=_Ez7y{#MSCg1FEfymV_GWb10r!vQ%_2iyVk1MjHG6 zPy^WnZ>zXVLS>p<&Ovc0N&lkL%6f+ZMp|r!q*KMlohxS`SpU*X3-ug{8fM`@pfzZm z;6qZr`qdV3Ikm|iMoeEhT62RUH z9cPz6m!wNzj5%(|8Axc~upX0Hh-RoXq^so2i ziNvc22nVdQ+t}9xExq|&0gdbIU_Gq%jd1h2n!*cD%cZh6ZupSpyi{>NFu^U_$+vKI zyoflneyuw;D5%aC*y)|Q&FEaCv9XJ_<#;#*d#B0c{|LN48TQ+BX!Ji3-8>kq7HAK( zSbhD0FbnAUwV7Bt48k&^=&EjvA5_K)E~)r&aAd_(!k#NN)Wo@ zT_-JCE?MnaNLQ`cy^CXFG#GF8Yu8?;Uy_$?Ap|smm5e=Xw{(zsVqkv}k)HfLw!V0r z@=%#0E9;vmYS+Xa#dE|dq|Lf_(WTP_%SSScVjlFlTVQ?BDGvP3V+`y8m%dPLLw$QC z9>|a945(f|36nUW9T*^Z+fR{ltMn*Ho1;mI=y^`j?qMRNMdjfPBTLJwx=c&^`dmok z@@2>N1qUIcH1_j2u~QNZmdI-si1@TCBL;}mtk1zyv61O~3`R}50_$B{b2W&*VC}F( zY2q>OM&(2#4urgN4e4s8c4A5t*e|`r$KeD9t0dwva7RX=KKk+@?GGZ_V@tZYPIg|N z@&sG(N36wLtfvbLjt9A}X9){cBg_YX-uORzxHP5}-~|oiXfWNcpjO7=)8@ekg zQEifJsxnz12s8tBTcP1%IiO63)6y!MAg7WB$*9E+(6SJ3O6xl?Q<63zT(8~TP6F+n zF)9ClmTnciUi+}TfAK288n+`Bv5<3UC=RKRM|n67nSno7#xDq#`-K9+AS%T+DkstDUh9Iyt1OC7tZicG7R-Hetn1b c3x+yTjl&XYRiFfahZpc#K|{V;);#$C1C~Q*u>b%7 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..9126ae37cbc3587421d6889eadd1d91fbf1994d4 GIT binary patch literal 7778 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 3045da4a..f8c6127d 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,7 +1,10 @@ - #ff6600 - #ff0000 - #00ff00 - #0000ff - + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml deleted file mode 100644 index 4394a9de..00000000 --- a/android/app/src/main/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #FB661E - diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 8df34049..1e95f081 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,61 +1,3 @@ - - No comments - %d comment - %d comments - - - - %d second ago - %d seconds ago - - - %d minute ago - %d minutes ago - - - - - %d hour ago - %d hours ago - - - %d day ago - %d days ago - - - %d week ago - %d weeks ago - - - %d month ago - %d months ago - - - - - %d year ago - %d years ago - - Hacker News - Refresh - More - - Welcome to Hacker News - - Login to browse stories - - Login - - Logout - - %s by %s - - Upvote - - Navigate back - - View comments - - View story - + Hacker News + \ No newline at end of file diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index 093823a8..91f77dae 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -1,7 +1,5 @@ - + + - - +

T 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