Skip to content
Merged
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
130 changes: 130 additions & 0 deletions apps/android/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# EditorConfig for Android project
# https://editorconfig.org
# Follows Google Android Kotlin Style Guide

root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
trim_trailing_whitespace = true

[*.{kt,kts}]
# ktlint configuration
ktlint_code_style = android_studio
ktlint_standard = enabled
ktlint_experimental = disabled

# Standard rules
ktlint_standard_annotation = enabled
ktlint_standard_argument-list-wrapping = enabled
ktlint_standard_blank-line-before-declaration = enabled
ktlint_standard_block-comment-initial-star-alignment = enabled
ktlint_standard_chain-wrapping = enabled
ktlint_standard_class-naming = enabled
ktlint_standard_class-signature = enabled
ktlint_standard_comment-spacing = enabled
ktlint_standard_comment-wrapping = enabled
ktlint_standard_condition-wrapping = enabled
ktlint_standard_context-receiver-wrapping = enabled
ktlint_standard_discouraged-comment-location = enabled
ktlint_standard_enum-entry-name-case = enabled
ktlint_standard_enum-wrapping = enabled
ktlint_standard_filename = enabled
ktlint_standard_final-newline = enabled
ktlint_standard_function-expression-body = disabled
ktlint_standard_function-literal = enabled
ktlint_standard_function-naming = enabled
ktlint_standard_function-signature = enabled
ktlint_standard_function-start-of-body-spacing = enabled
ktlint_standard_function-type-modifier-spacing = enabled
ktlint_standard_function-type-reference-spacing = enabled
ktlint_standard_if-else-bracing = enabled
ktlint_standard_if-else-wrapping = enabled
ktlint_standard_import-ordering = enabled
ktlint_standard_indent = enabled
ktlint_standard_kdoc = enabled
ktlint_standard_kdoc-wrapping = enabled
ktlint_standard_max-line-length = enabled
ktlint_standard_mixed-condition-operators = enabled
ktlint_standard_modifier-list-spacing = enabled
ktlint_standard_modifier-order = enabled
ktlint_standard_multiline-expression-wrapping = disabled
ktlint_standard_multiline-loop = enabled
ktlint_standard_no-blank-line-before-rbrace = enabled
ktlint_standard_no-blank-line-in-list = enabled
ktlint_standard_no-blank-lines-in-chained-method-calls = enabled
ktlint_standard_no-consecutive-blank-lines = enabled
ktlint_standard_no-consecutive-comments = enabled
ktlint_standard_no-empty-class-body = enabled
ktlint_standard_no-empty-file = enabled
ktlint_standard_no-empty-first-line-in-class-body = enabled
ktlint_standard_no-empty-first-line-in-method-block = enabled
ktlint_standard_no-line-break-after-else = enabled
ktlint_standard_no-line-break-before-assignment = enabled
ktlint_standard_no-multi-spaces = enabled
ktlint_standard_no-semi = enabled
ktlint_standard_no-single-line-block-comment = enabled
ktlint_standard_no-trailing-spaces = enabled
ktlint_standard_no-unit-return = enabled
ktlint_standard_no-unused-imports = enabled
ktlint_standard_no-wildcard-imports = enabled
ktlint_standard_nullable-type-spacing = enabled
ktlint_standard_package-name = enabled
ktlint_standard_parameter-list-spacing = enabled
ktlint_standard_parameter-list-wrapping = enabled
ktlint_standard_parameter-wrapping = enabled
ktlint_standard_paren-spacing = enabled
ktlint_standard_property-naming = enabled
ktlint_standard_property-wrapping = enabled
ktlint_standard_range-spacing = enabled
ktlint_standard_spacing-around-angle-brackets = enabled
ktlint_standard_spacing-around-colon = enabled
ktlint_standard_spacing-around-comma = enabled
ktlint_standard_spacing-around-curly = enabled
ktlint_standard_spacing-around-dot = enabled
ktlint_standard_spacing-around-double-colon = enabled
ktlint_standard_spacing-around-keyword = enabled
ktlint_standard_spacing-around-operators = enabled
ktlint_standard_spacing-around-parens = enabled
ktlint_standard_spacing-around-range-operator = enabled
ktlint_standard_spacing-around-unary-operator = enabled
ktlint_standard_spacing-between-declarations-with-annotations = enabled
ktlint_standard_spacing-between-declarations-with-comments = enabled
ktlint_standard_spacing-between-function-name-and-opening-parenthesis = enabled
ktlint_standard_string-template = enabled
ktlint_standard_string-template-indent = disabled
ktlint_standard_trailing-comma-on-call-site = enabled
ktlint_standard_trailing-comma-on-declaration-site = enabled
ktlint_standard_try-catch-finally-spacing = enabled
ktlint_standard_type-argument-list-spacing = enabled
ktlint_standard_type-parameter-list-spacing = enabled
ktlint_standard_unnecessary-parentheses-before-trailing-lambda = enabled
# Allow inline comments for documenting parameters
ktlint_standard_value-argument-comment = disabled
ktlint_standard_value-parameter-comment = disabled
ktlint_standard_when-entry-bracing = enabled
ktlint_standard_wrapping = enabled

# Compose-specific - disable function naming for composables
ktlint_function_naming_ignore_when_annotated_with = Composable

[*.xml]
indent_size = 4

[*.json]
indent_size = 2

[*.md]
trim_trailing_whitespace = false

[*.gradle.kts]
indent_size = 4

[*.properties]
charset = latin1
81 changes: 81 additions & 0 deletions apps/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ plugins {
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.hilt)
alias(libs.plugins.ksp)
alias(libs.plugins.detekt)
alias(libs.plugins.ktlint)
kotlin("plugin.serialization") version "2.1.0"
}

Expand Down Expand Up @@ -72,6 +74,72 @@ android {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}

testOptions {
unitTests.all {
it.useJUnitPlatform()
}
unitTests.isReturnDefaultValues = true
}

lint {
warningsAsErrors = false
abortOnError = false
checkDependencies = true
checkReleaseBuilds = true
xmlReport = true
htmlReport = true
lintConfig = file("lint.xml")
disable +=
setOf(
"ObsoleteLintCustomCheck",
"GradleDependency",
"OldTargetApi",
"AndroidGradlePluginVersion",
"Aligned16KB",
"MissingApplicationIcon"
)
enable +=
setOf(
"Interoperability",
"UnusedResources"
)
}
}

// Detekt configuration
detekt {
buildUponDefaultConfig = true
allRules = false
config.setFrom(files("$rootDir/config/detekt/detekt.yml"))
parallel = true
autoCorrect = true
}

tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {
jvmTarget = "17"
exclude("**/uniffi/**")
exclude("**/ash.kt")
}

tasks.withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask>().configureEach {
jvmTarget = "17"
}

// ktlint configuration
ktlint {
android = true
ignoreFailures = true
reporters {
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.PLAIN)
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.HTML)
}
filter {
exclude("**/generated/**")
exclude("**/uniffi/**")
exclude("**/ash.kt")
include("**/kotlin/**")
}
}

dependencies {
Expand Down Expand Up @@ -135,4 +203,17 @@ dependencies {

// Play Services Location
implementation(libs.play.services.location)

// Testing
testImplementation(libs.junit.jupiter.api)
testRuntimeOnly(libs.junit.jupiter.engine)
testImplementation(libs.junit.jupiter.params)
testImplementation(libs.mockk)
testImplementation(libs.turbine)
testImplementation(libs.truth)
testImplementation(libs.coroutines.test)
testImplementation(libs.arch.core.testing)

// Android Instrumentation Tests
androidTestImplementation(libs.mockk.android)
}
8 changes: 8 additions & 0 deletions apps/android/app/lint.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Suppress NewApi issues in generated UniFFI code -->
<issue id="NewApi">
<ignore path="**/uniffi/**" />
<ignore path="**/ash.kt" />
</issue>
</lint>
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class AshApplication : Application() {

override fun onCreate() {
super.onCreate()
// Load native library
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,17 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.monadial.ash.core.services.SettingsService
import com.monadial.ash.ui.AshApp
import com.monadial.ash.ui.theme.AshTheme
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : ComponentActivity() {

@Inject
lateinit var settingsService: SettingsService

Expand Down
Loading
Loading