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
87 changes: 60 additions & 27 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,28 @@ name: Build

on:
push:
branches: [ main ]
branches: [main]
pull_request:
branches: [ main ]
branches: [main]

jobs:
check-kotlin-code-format:
name: Check Kotlin code format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Checkout sources
uses: actions/checkout@v4

- name: Download ktlint binary
run: |
curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.2.1/ktlint
chmod +x ktlint
cp ktlint android/ktlint
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle

- name: Run ktlint
run: cd android && ./ktlint --editorconfig=".editorconfig"
working-directory: android
run: ./gradlew ktlintCheck

check-scala-code-format:
name: Check Scala code format
Expand All @@ -42,41 +45,68 @@ jobs:
uses: coursier/cache-action@v6

- name: Run scalafmt check
run: cd backend && sbt scalafmtCheck
working-directory: backend
run: sbt scalafmtCheckAll

build-android-app:
name: Build Android app
needs: [ check-kotlin-code-format ]
verify-openapi-schema:
name: Verify OpenAPI schema
needs: [check-scala-code-format]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Checkout sources
uses: actions/checkout@v4

- uses: actions/setup-java@v3
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: temurin
java-version: 17

- name: Setup SBT
uses: sbt/setup-sbt@v1

- name: Cache Dependencies
- name: Cache dependencies
uses: coursier/cache-action@v6

- name: Build API jar
run: cd android && ./setup-api.sh
- name: Generate OpenAPI schema
working-directory: backend
run: sbt generateOpenApi

- name: Check OpenAPI schema is up to date
run: git diff --exit-code -- backend/openapi-schema/openapi.yaml

- name: Test OpenAPI schema
working-directory: backend
run: sbt openapiSchema/test

build-android-app:
name: Build Android app
needs: [check-kotlin-code-format, verify-openapi-schema]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle

- name: Build debug apk
run: cd android && ./gradlew app:assembleDebug
working-directory: android
run: ./gradlew :app:assembleDebug

- name: Store APK file
uses: actions/upload-artifact@v4
with:
name: app-debug.apk
path: ./android/app/build/outputs/apk/debug/app-debug.apk
path: android/app/build/outputs/apk/debug/app-debug.apk

build-backend-app:
name: Build Backend app
needs: [ check-scala-code-format ]
needs: [check-scala-code-format, verify-openapi-schema]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
Expand All @@ -91,20 +121,23 @@ jobs:
- name: Setup SBT
uses: sbt/setup-sbt@v1

- name: Cache Dependencies
- name: Cache dependencies
uses: coursier/cache-action@v6

- name: Run sbt compile
run: cd backend && sbt app/compile
working-directory: backend
run: sbt app/compile

- name: Run tests
run: cd backend && sbt app/test
working-directory: backend
run: sbt test

- name: Build jar file
run: cd backend && sbt app/assembly
working-directory: backend
run: sbt app/assembly

- name: Store jar file
uses: actions/upload-artifact@v4
with:
name: simple-split-backend.jar
path: ./backend/app/target/scala-3.7.1/simple-split-backend.jar
path: backend/app/target/scala-3.7.1/simple-split-backend.jar
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ out/

# Development and application files
backend/app-data
backend/dev-data
backend/keys/

# Env files
.env
8 changes: 5 additions & 3 deletions android/.editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ indent_style = space
insert_final_newline = false
ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = 8
ktlint_chain_method_rule_force_multiline_when_chain_operator_count_greater_or_equal_than = 2
ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = unset
ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 1
ktlint_code_style = android_studio
ktlint_function_naming_ignore_when_annotated_with = Composable
ktlint_function_signature_body_expression_wrapping = multiline
ktlint_standard_blank-line-between-when-conditions = disabled
ktlint_standard_function-expression-body = disabled
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2
ktlint_ignore_back_ticked_identifier = false
max_line_length = 100

[backend-api/**/*]
ktlint = disabled
[backend-api/**/*.{kt,kts}]
ktlint = disabled
3 changes: 2 additions & 1 deletion android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
alias(libs.plugins.parcelize)
alias(libs.plugins.kapt)
alias(libs.plugins.kotlinSerialization)
alias(libs.plugins.ktlint)
}

fun getVersionName(): String = libs.versions.appVersion.get()
Expand Down Expand Up @@ -145,7 +146,7 @@ dependencies {
implementation(libs.decompose.extensions)

// Api
implementation(files("libs/simple-split-api.jar"))
implementation(project(":backend-api"))

// Preferences
implementation(libs.ksprefs)
Expand Down
Binary file removed android/app/libs/simple-split-api.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,22 @@ import com.github.ai.simplesplit.android.data.json.JsonSerializer
import com.github.ai.simplesplit.android.data.settings.Settings
import com.github.ai.simplesplit.android.model.exception.ApiException
import com.github.ai.simplesplit.android.utils.atomicReference
import com.github.ai.split.api.request.PostExpenseRequest
import com.github.ai.split.api.request.PostGroupRequest
import com.github.ai.split.api.request.PostMemberRequest
import com.github.ai.split.api.request.PutExpenseRequest
import com.github.ai.split.api.request.PutGroupRequest
import com.github.ai.split.api.request.PutMemberRequest
import com.github.ai.split.api.response.DeleteExpenseResponse
import com.github.ai.split.api.response.DeleteMemberResponse
import com.github.ai.split.api.response.GetCurrenciesResponse
import com.github.ai.split.api.response.GetGroupsResponse
import com.github.ai.split.api.response.PostExpenseResponse
import com.github.ai.split.api.response.PostGroupResponse
import com.github.ai.split.api.response.PostMemberResponse
import com.github.ai.split.api.response.PutExpenseResponse
import com.github.ai.split.api.response.PutGroupResponse
import com.github.ai.split.api.response.PutMemberResponse
import com.github.ai.split.api.DeleteExpenseResponse
import com.github.ai.split.api.DeleteMemberResponse
import com.github.ai.split.api.GetCurrenciesResponse
import com.github.ai.split.api.GetGroupsResponse
import com.github.ai.split.api.PostExpenseRequest
import com.github.ai.split.api.PostExpenseResponse
import com.github.ai.split.api.PostGroupRequest
import com.github.ai.split.api.PostGroupResponse
import com.github.ai.split.api.PostMemberRequest
import com.github.ai.split.api.PostMemberResponse
import com.github.ai.split.api.PutExpenseRequest
import com.github.ai.split.api.PutExpenseResponse
import com.github.ai.split.api.PutGroupRequest
import com.github.ai.split.api.PutGroupResponse
import com.github.ai.split.api.PutMemberRequest
import com.github.ai.split.api.PutMemberResponse
import io.ktor.client.HttpClient

class ApiClient(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package com.github.ai.simplesplit.android.data.repository
import arrow.core.Either
import com.github.ai.simplesplit.android.data.api.ApiClient
import com.github.ai.simplesplit.android.model.exception.AppException
import com.github.ai.split.api.request.PostExpenseRequest
import com.github.ai.split.api.request.PutExpenseRequest
import com.github.ai.split.api.response.DeleteExpenseResponse
import com.github.ai.split.api.response.PostExpenseResponse
import com.github.ai.split.api.response.PutExpenseResponse
import com.github.ai.split.api.DeleteExpenseResponse
import com.github.ai.split.api.PostExpenseRequest
import com.github.ai.split.api.PostExpenseResponse
import com.github.ai.split.api.PutExpenseRequest
import com.github.ai.split.api.PutExpenseResponse

class ExpenseRepository(
private val api: ApiClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import com.github.ai.simplesplit.android.data.api.ApiClient
import com.github.ai.simplesplit.android.model.exception.ApiException
import com.github.ai.simplesplit.android.model.exception.AppException
import com.github.ai.split.api.GroupDto
import com.github.ai.split.api.request.PostGroupRequest
import com.github.ai.split.api.request.PutGroupRequest
import com.github.ai.split.api.response.PostGroupResponse
import com.github.ai.split.api.response.PutGroupResponse
import com.github.ai.split.api.PostGroupRequest
import com.github.ai.split.api.PostGroupResponse
import com.github.ai.split.api.PutGroupRequest
import com.github.ai.split.api.PutGroupResponse

class GroupRepository(
private val api: ApiClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package com.github.ai.simplesplit.android.data.repository
import arrow.core.Either
import com.github.ai.simplesplit.android.data.api.ApiClient
import com.github.ai.simplesplit.android.model.exception.AppException
import com.github.ai.split.api.request.PostMemberRequest
import com.github.ai.split.api.request.PutMemberRequest
import com.github.ai.split.api.response.DeleteMemberResponse
import com.github.ai.split.api.response.PostMemberResponse
import com.github.ai.split.api.response.PutMemberResponse
import com.github.ai.split.api.DeleteMemberResponse
import com.github.ai.split.api.PostMemberRequest
import com.github.ai.split.api.PostMemberResponse
import com.github.ai.split.api.PutMemberRequest
import com.github.ai.split.api.PutMemberResponse

class MemberRepository(
private val api: ApiClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ package com.github.ai.simplesplit.android.presentation.core.compose.cells.model
import com.github.ai.simplesplit.android.presentation.core.compose.cells.CellEvent

sealed interface BottomSheetHeaderCellEvent : CellEvent {
data class OnIconClick(val cellId: String) : BottomSheetHeaderCellEvent
data class OnIconClick(
val cellId: String
) : BottomSheetHeaderCellEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ package com.github.ai.simplesplit.android.presentation.core.compose.cells.model
import com.github.ai.simplesplit.android.presentation.core.compose.cells.CellEvent

sealed interface ButtonCellEvent : CellEvent {
data class OnClick(val cellId: String) : ButtonCellEvent
data class OnClick(
val cellId: String
) : ButtonCellEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ package com.github.ai.simplesplit.android.presentation.core.compose.cells.model
import com.github.ai.simplesplit.android.presentation.core.compose.cells.CellEvent

sealed interface MenuCellEvent : CellEvent {
data class OnClick(val cellId: String) : MenuCellEvent
data class OnClick(
val cellId: String
) : MenuCellEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import kotlinx.coroutines.runBlocking
abstract class MviViewModel<State, Intent : MviIntent>(
initialState: State,
private val initialIntent: Intent
) : ViewModel(), ScreenViewModel {
) : ViewModel(),
ScreenViewModel {

val state = MutableStateFlow(initialState)
private val intents = Channel<Intent>(capacity = Channel.BUFFERED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@ sealed class SelectCurrencyDialogIntent(
data object Initialize : SelectCurrencyDialogIntent()
data object Dismiss : SelectCurrencyDialogIntent()
data object OnResetQueryClick : SelectCurrencyDialogIntent()
data class OnQueryTextChange(val query: String) : SelectCurrencyDialogIntent(isImmediate = true)
data class OnCurrencySelected(val currencyIsoCode: String) : SelectCurrencyDialogIntent()
data class FilterCurrencies(val query: String) : SelectCurrencyDialogIntent()
data class OnQueryTextChange(
val query: String
) : SelectCurrencyDialogIntent(isImmediate = true)
data class OnCurrencySelected(
val currencyIsoCode: String
) : SelectCurrencyDialogIntent()
data class FilterCurrencies(
val query: String
) : SelectCurrencyDialogIntent()
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ sealed class CheckoutGroupIntent(
data object OnBackClick : CheckoutGroupIntent()
data object OnDoneClick : CheckoutGroupIntent()
data object OnCloseErrorClick : CheckoutGroupIntent()
data class OnUrlChanged(val url: String) : CheckoutGroupIntent(isImmediate = true)
data class OnUrlChanged(
val url: String
) : CheckoutGroupIntent(isImmediate = true)
}
Loading
Loading