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
46 changes: 25 additions & 21 deletions .github/workflows/default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,46 @@ name: Eventually Builds

on: [push, pull_request]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
core:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup JDK 11
uses: actions/setup-java@v3
- name: Setup JDK 21
uses: actions/setup-java@77dd5b2ce225ea11469928ac317850245a74ae78 # v6.2.0
with:
java-version: 11
distribution: adopt
java-version: 21
distribution: temurin

- name: Run QA
run: |
mkdir ${{ github.workspace }}/target
./gradlew core:qa
- name: Setup Gradle
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Push Coverage Result
uses: codecov/codecov-action@v3
with:
flags: kotlin
- name: Run QA
run: ./gradlew core:qa

android:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup JDK 11
uses: actions/setup-java@v3
- name: Setup JDK 21
uses: actions/setup-java@77dd5b2ce225ea11469928ac317850245a74ae78 # v6.2.0
with:
java-version: 11
distribution: adopt
java-version: 21
distribution: temurin

- name: Setup Gradle
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Run QA
run: |
mkdir ${{ github.workspace }}/target
./gradlew client-android:qa
run: ./gradlew client-android:qa client-android:assembleDebug client-android:assembleRelease
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ libraries/tools/kotlin-test-js-runner/lib/
local.properties
*.hprof
client-android/release
.local
.kotlin
32 changes: 8 additions & 24 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,36 +1,20 @@
import org.gradle.api.tasks.testing.logging.TestExceptionFormat

buildscript {
repositories {
jcenter()
google()
}

dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21")
classpath("com.android.tools.build:gradle:7.4.1")
}
}

plugins {
id("io.gitlab.arturbosch.detekt") version "1.22.0"
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.detekt)
jacoco
}

allprojects {
repositories {
jcenter()
mavenCentral()
google()
}
}

subprojects {
version = "1.1.1-SNAPSHOT"
}

allprojects {
tasks.withType<Test> {
tasks.withType<Test>().configureEach {
testLogging {
exceptionFormat = TestExceptionFormat.FULL
showCauses = true
Expand Down
157 changes: 85 additions & 72 deletions client-android/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,74 +1,32 @@
plugins {
id("com.android.application")
id("kotlin-android")
kotlin("kapt")
}

dependencies {
implementation(project(":core"))
import java.time.Duration

implementation("com.google.code.gson:gson:2.10.1")
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.7.21")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.coordinatorlayout:coordinatorlayout:1.2.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.navigation:navigation-fragment-ktx:2.5.3")
implementation("androidx.navigation:navigation-ui-ktx:2.5.3")
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.recyclerview:recyclerview:1.2.1")
implementation("androidx.preference:preference-ktx:1.2.0")
implementation("com.google.android.material:material:1.8.0")
implementation("androidx.room:room-runtime:2.5.0")
implementation("androidx.room:room-ktx:2.5.0")
implementation("androidx.lifecycle:lifecycle-common-java8:2.5.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
implementation("androidx.work:work-runtime-ktx:2.8.0")
implementation("ru.cleverpumpkin:crunchycalendar:2.3.0")
implementation("ca.antonious:materialdaypicker:0.7.4")
implementation("io.noties.markwon:core:4.6.2")
implementation("io.noties.markwon:ext-strikethrough:4.6.2")
implementation("io.noties.markwon:ext-tables:4.6.2")
implementation("io.noties.markwon:ext-tasklist:4.6.2")
implementation("com.github.skydoves:colorpickerview:2.2.4")

kapt("androidx.room:room-compiler:2.5.0")

api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
api("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")

testImplementation("io.mockk:mockk:1.13.3")
testImplementation("org.robolectric:robolectric:4.9.2")
testImplementation("junit:junit:4.13.2")
testImplementation("androidx.test:core:1.5.0")

androidTestImplementation("androidx.test:runner:1.5.2")
androidTestImplementation("androidx.test:rules:1.5.0")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.room:room-testing:2.5.0")
androidTestImplementation("androidx.arch.core:core-testing:2.1.0")

debugImplementation("androidx.fragment:fragment-testing:1.5.5") {
exclude(group = "androidx.test", module = "monitor")
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
compileSdk = 33
namespace = "eventually.client"
compileSdk = 37

defaultConfig {
minSdk = 26
targetSdk = 33

applicationId = "eventually.client"
minSdk = 26
targetSdk = 37
versionCode = 3
versionName = "1.1.1-SNAPSHOT"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
getByName("debug") {
applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"
}
getByName("release") {
isMinifyEnabled = true
proguardFiles(
Expand All @@ -79,30 +37,85 @@ android {
}

buildFeatures {
dataBinding = true
viewBinding = true
buildConfig = true
compose = true
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = "1.8"
}
packagingOptions {
resources {
excludes += setOf("META-INF/atomicfu.kotlin_module")
}
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

testOptions {
unitTests.isIncludeAndroidResources = true
}
namespace = "eventually.client"
}

kotlin {
jvmToolchain(21)
}

ksp {
arg("room.schemaLocation", "$projectDir/schemas")
}

dependencies {
implementation(project(":core"))

implementation(libs.gson)
implementation(libs.androidx.navigation3.runtime)
implementation(libs.androidx.navigation3.ui)
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.ktx)
implementation(libs.androidx.lifecycle.common.java8)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.livedata.ktx)
implementation(libs.androidx.lifecycle.service)
implementation(libs.markdown.renderer.m3)

implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.runtime.livedata)
implementation(libs.androidx.activity.compose)
implementation(libs.composepreference)
implementation(libs.colorpicker.compose)
implementation(libs.calendar.compose) {
exclude(group = "androidx.compose.ui", module = "ui-tooling")
}
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)

implementation(libs.hilt.android)
ksp(libs.hilt.compiler)

ksp(libs.androidx.room.compiler)

api(libs.kotlinx.coroutines.core)
api(libs.kotlinx.coroutines.android)

testImplementation(libs.mockk)
testImplementation(libs.robolectric)
testImplementation(libs.junit4)
testImplementation(libs.androidx.test.core)
testImplementation(platform(libs.androidx.compose.bom))
testImplementation(libs.androidx.compose.ui.test.junit4)

androidTestImplementation(libs.androidx.test.runner)
androidTestImplementation(libs.androidx.test.rules)
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(libs.androidx.test.espresso.core)
androidTestImplementation(libs.androidx.room.testing)
androidTestImplementation(libs.androidx.arch.core.testing)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
}

tasks.withType<Test>().configureEach {
timeout.set(Duration.ofMinutes(15))
}

tasks.register("qa") {
dependsOn("check")
dependsOn("check", "compileDebugAndroidTestKotlin")
}
5 changes: 4 additions & 1 deletion client-android/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,7 @@

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile

-keep class eventually.client.ui.navigation.Route { *; }
-keep class eventually.client.ui.navigation.Route$* { *; }
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "7240a1045dc9200ce86f4d4ed2417cc7",
"entities": [
{
"tableName": "notifications",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task` INTEGER NOT NULL, `instance` TEXT NOT NULL, `type` TEXT NOT NULL, `hash` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "task",
"columnName": "task",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "instance",
"columnName": "instance",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "hash",
"columnName": "hash",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '7240a1045dc9200ce86f4d4ed2417cc7')"
]
}
}
Loading
Loading