Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Flags needed while the Android rules are being migrated to Starlark.
common --experimental_google_legacy_api
common --experimental_enable_android_migration_apis
common --android_sdk=@androidsdk//:sdk
common:core_library_desugaring --desugar_java8_libs
common --incompatible_disable_native_android_rules=true

# Flags to enable mobile-install v3
mobile-install --mode=skylark --mobile_install_aspect=@rules_android//mobile_install:mi.bzl --mobile_install_supported_rules=android_binary
# Required to invoke the Studio deployer jar
mobile-install --tool_java_runtime_version=17
mobile-install –tool_java_tools_version=17
--javacopt="-J-Xms8G -J-Xmx8G"
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.0.0-pre.20240826.1
6 changes: 6 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[*.{kt, kts}]
indent_size = 4
insert_final_newline = true
max_line_length = 100
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,9 @@ fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
*.lock
bazel-out/
bazel-bin/
bazel-testlogs/
bazel-Cheddar/
.gitignore
25 changes: 25 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
load("@rules_kotlin//kotlin:core.bzl", "kt_compiler_plugin")
load("@rules_kotlin//kotlin:lint.bzl", "ktlint_config", "ktlint_fix", "ktlint_test")

kt_compiler_plugin(
name = "jetpack_compose_compiler_plugin",
id = "androidx.compose.compiler",
target_embedded_compiler = True,
visibility = ["//visibility:public"],
deps = [
"@maven//:org_jetbrains_kotlin_kotlin_compose_compiler_plugin_embeddable",
],
)

filegroup(
name = "editorconfig",
srcs = [".editorconfig"],
)

ktlint_config(
name = "ktlint_editorconfig",
android_rules_enabled = False,
editorconfig = ":editorconfig",
experimental_rules_enabled = False,
visibility = ["//visibility:public"],
)
139 changes: 139 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
module(name = "cheddarapp")

remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")

use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")

bazel_dep(
name = "bazel_skylib",
version = "1.7.1",
)

bazel_dep(
name = "rules_java",
version = "7.9.0",
)

bazel_dep(
name = "platforms",
version = "0.0.10",
)

bazel_dep(
name = "rules_robolectric",
version = "4.13",
)

bazel_dep(
name = "rules_android",
version = "0.5.1",
)

bazel_dep(
name = "rules_kotlin",
version = "2.0.0",
)

bazel_dep(
name = "rules_jvm_external",
version = "0.0",
)

archive_override(
module_name = "rules_jvm_external",
integrity = "sha256-gukGSHM/wBgkJhkXGgzMBtD36aYBzqVNuhYr5b3lL8g=",
strip_prefix = "rules_jvm_external-9a10cae516d46ccce805d03b7886331bd55fb4c1",
urls = ["https://github.com/bazelbuild/rules_jvm_external/archive/9a10cae516d46ccce805d03b7886331bd55fb4c1.tar.gz"],
)

register_toolchains(
"@rules_android//toolchains/android:android_default_toolchain",
"@rules_android//toolchains/android_sdk:android_sdk_tools",
)

android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")

use_repo(android_sdk_repository_extension, "androidsdk")

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")

maven.install(
artifacts = [
"org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.4",
"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3",
"org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1",
"org.jetbrains.kotlinx:kotlinx-serialization-runtime:jar:1.0-M1-1.4.0-rc",
"org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1",
"org.jsoup:jsoup:1.16.1",
"junit:junit:4.13.2",
"com.jakewharton.timber:timber:5.0.1",
"com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0",
"com.squareup.okhttp3:okhttp:4.9.3",
"com.squareup.okhttp3:logging-interceptor:4.9.3",
"com.squareup.retrofit2:retrofit:2.9.0",
"com.google.dagger:dagger:2.45",
"com.google.dagger:dagger-compiler:2.45",
"com.google.dagger:hilt-android:2.51",
"com.squareup.moshi:moshi:jar:1.15.1",
"com.squareup.moshi:moshi-kotlin:jar:1.15.1",
"com.squareup.moshi:moshi-kotlin-codegen:jar:1.15.1",
"org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1",
"androidx.browser:browser:jar:1.5.0",
"androidx.activity:activity:1.8.0-alpha06",
"androidx.activity:activity-compose:1.5.1",
"androidx.activity:activity-ktx:1.5.1",
"androidx.fragment:fragment:1.5.1",
"androidx.compose.material3:material3:jar:1.2.1",
"androidx.loader:loader:1.0.0",
"androidx.lifecycle:lifecycle-viewmodel:2.6.1",
"androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1",
"androidx.compose.ui:ui-android:1.6.0",
"androidx.lifecycle:lifecycle-runtime-ktx:2.5.1",
"androidx.lifecycle:lifecycle-process:2.4.1",
"androidx.lifecycle:lifecycle-livedata-core:2.5.1",
"androidx.collection:collection:1.0.0",
"androidx.compose.material:material-ripple:1.6.0",
"androidx.compose.runtime:runtime:1.6.0",
"androidx.compose.material:material:1.6.8",
"androidx.compose.ui:ui-graphics:1.6.0",
"androidx.compose.ui:ui-text:1.6.8",
"androidx.compose.ui:ui-unit:1.6.0",
"androidx.compose.ui:ui-util:1.0.0",
"androidx.compose.ui:ui-geometry:1.6.0",
"androidx.compose.ui:ui-tooling:1.6.8",
"androidx.lifecycle:lifecycle-common:2.5.1",
"androidx.lifecycle:lifecycle-runtime:2.5.1",
"io.coil-kt:coil:jar:2.5.0",
"io.coil-kt:coil-svg:jar:2.7.0",
"androidx.compose.material:material-icons-extended:jar:1.5.0",
"androidx.compose.material:material-icons-core:jar:1.6.8",
"io.coil-kt:coil-compose:jar:2.7.0",
"org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:jar:2.0.0",
"androidx.constraintlayout:constraintlayout:jar:2.1.4",
"androidx.navigation:navigation-compose:jar:2.5.3",
"androidx.lifecycle:lifecycle-common-java8:2.5.1",
"androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1",
"androidx.hilt:hilt-lifecycle-viewmodel:jar:1.0.0-alpha03",
"androidx.hilt:hilt-navigation-compose:jar:1.2.0",
"androidx.constraintlayout:constraintlayout-compose:jar:1.1.0-alpha11",
"androidx.lifecycle:lifecycle-viewmodel-compose:jar:2.6.1",
"androidx.lifecycle:lifecycle-runtime-compose:jar:2.6.1",
"androidx.core:core-splashscreen:aar:1.0.0-beta02",
"app.cash.turbine:turbine-jvm:jar:1.1.0",
"org.jetbrains.kotlin:kotlin-test:jar:2.0.0",
"org.robolectric:robolectric:4.13",
"com.google.truth:truth:1.1.2",
"com.google.auto.value:auto-value:jar:1.11.0",
"androidx.compose.ui:ui-tooling-preview:1.7.0",
"androidx.multidex:multidex:2.0.1",
"com.google.dagger:hilt-android-compiler:2.52",
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
"https://androidx.dev/storage/compose-compiler/repository/",
],
version_conflict_policy = "pinned",
)

use_repo(maven, "maven")
1 change: 1 addition & 0 deletions WORKSPACE.bzlmod
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
android_sdk_repository(name = "androidsdk")
52 changes: 52 additions & 0 deletions app/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
load("@rules_android//android:rules.bzl", "android_binary")
load("@rules_kotlin//kotlin:android.bzl", "kt_android_library")
load("@rules_kotlin//kotlin:lint.bzl", "ktlint_fix", "ktlint_test")

kt_android_library(
name = "lib",
srcs = glob(["**/*.kt"]),
custom_package = "co.adrianblan.cheddar",
manifest = "src/main/AndroidManifest.xml",
plugins = ["//:jetpack_compose_compiler_plugin"],
resource_files = glob(["src/main/res/**/*"]),
visibility = ["//visibility:public"],
exports = [
"//core/ui:lib",
"@maven//:androidx_core_core_splashscreen",
],
deps = [
"//feature/storydetail:lib",
"//feature/storyfeed:lib",
"@maven//:androidx_activity_activity",
"@maven//:androidx_multidex_multidex_2_0_1",
"@maven//:javax_inject_javax_inject",
],
)

android_binary(
name = "app",
custom_package = "co.adrianblan.cheddar.app",
manifest = "src/main/AndroidManifest.xml",
# mulltidex = "native",
deps = [
":lib",
":lib_kt",
"//core/ui:lib",
"//feature/storydetail:lib",
"//feature/storyfeed:lib",
"@maven//:androidx_activity_activity",
"@maven//:androidx_core_core_splashscreen",
],
)

ktlint_fix(
name = "lint_fix",
srcs = glob(["**/*.kt"]),
config = "//:ktlint_editorconfig",
)

ktlint_test(
name = "lint_test",
srcs = glob(["**/*.kt"]),
config = "//:ktlint_editorconfig",
)
1 change: 1 addition & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,5 @@ dependencies {
implementation(libs.timber)
implementation(libs.coil)
debugImplementation(libs.leakcanary)
// runtimeOnly(libs.androidx.multidex)
}
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android"
package = "co.adrianblan.cheddar">

<uses-permission android:name="android.permission.INTERNET" />

Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/co/adrianblan/cheddar/BuildConfig.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package co.adrianblan.cheddar

object BuildConfig {
const val DEBUG: Boolean = true
}
10 changes: 6 additions & 4 deletions app/src/main/java/co/adrianblan/cheddar/CheddarApplication.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package co.adrianblan.cheddar

import android.app.Application
import co.adrianblan.ui.coil.CoilImageLoaderFactory
import coil.Coil
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber

//import androidx.multidex.MultiDexApplication
//@HiltAndroidApp(MultiDexApplication::class)
//class CheddarApplication : Hilt_CheddarApplication() {
//class CheddarApplication : Hilt_CheddarApplication() {
@HiltAndroidApp
class CheddarApplication : Application() {

class CheddarApplication : Hilt_CheddarApplication() {
override fun onCreate() {
super.onCreate()

Expand All @@ -18,4 +20,4 @@ class CheddarApplication : Application() {

Coil.setImageLoader(CoilImageLoaderFactory(this))
}
}
}
9 changes: 5 additions & 4 deletions app/src/main/java/co/adrianblan/cheddar/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : ComponentActivity() {

@Inject
lateinit var customTabsLauncher: CustomTabsLauncher

Expand All @@ -24,10 +23,12 @@ class MainActivity : ComponentActivity() {

setContent {
AppTheme {
Box {
Navigation(customTabsLauncher)
if (::customTabsLauncher.isInitialized) {
Box {
Navigation(customTabsLauncher)
}
}
}
}
}
}
}
13 changes: 5 additions & 8 deletions app/src/main/java/co/adrianblan/cheddar/Navigation.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,17 @@ import co.adrianblan.storyfeed.storyFeedRoute
import co.adrianblan.storyfeed.storyFeedScreen

@Composable
fun Navigation(
customTabsLauncher: CustomTabsLauncher
) {
fun Navigation(customTabsLauncher: CustomTabsLauncher) {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = storyFeedRoute
startDestination = storyFeedRoute,
) {

storyFeedScreen(
onStoryClick = navController::navigateToTopic,
onStoryContentClick = { storyUrl ->
customTabsLauncher.launchUrl(storyUrl.url)
}
},
)
storyDetailScreen(
onStoryContentClick = { storyUrl ->
Expand All @@ -32,7 +29,7 @@ fun Navigation(
onCommentUrlClick = { uri ->
customTabsLauncher.launchUrl(uri.toString())
},
onBackPressed = navController::popBackStack
onBackPressed = navController::popBackStack,
)
}
}
}
1 change: 1 addition & 0 deletions bazel-Cheddar
1 change: 1 addition & 0 deletions bazel-bin
1 change: 1 addition & 0 deletions bazel-out
1 change: 1 addition & 0 deletions bazel-testlogs
Binary file added core/.DS_Store
Binary file not shown.
12 changes: 12 additions & 0 deletions core/common/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")

kt_jvm_library(
name = "lib",
srcs = glob(["**/*.kt"]),
deps = [
"//core/model:lib",
"@maven//:org_jetbrains_kotlinx_kotlinx_coroutines_android",
"@maven//:junit_junit",
],
visibility = ["//visibility:public"],
)
Loading