Skip to content

Commit

Permalink
Merge pull request #48 from Nexters/develop
Browse files Browse the repository at this point in the history
v1.0.0
  • Loading branch information
nohjunh authored Feb 1, 2025
2 parents 1cecf01 + 5dae143 commit d2205c3
Show file tree
Hide file tree
Showing 250 changed files with 8,738 additions and 366 deletions.
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[*.{kt,kts}]
ij_kotlin_allow_trailing_comma=true
ij_kotlin_allow_trailing_comma_on_call_site=true
ktlint_function_naming_ignore_when_annotated_with=Composable, Test
ktlint_standard_backing-property-naming = disabled
ktlint_standard_binary-expression-wrapping = disabled
ktlint_standard_chain-method-continuation = disabled
ktlint_standard_class-signature = disabled
ktlint_standard_condition-wrapping = disabled
ktlint_standard_function-expression-body = disabled
ktlint_standard_function-literal = disabled
ktlint_standard_function-type-modifier-spacing = disabled
ktlint_standard_multiline-loop = disabled
ktlint_standard_function-signature = disabled
ktlint_standard_string-template-indent = disabled
ktlint_standard_multiline-expression-wrapping = disabled
41 changes: 41 additions & 0 deletions .github/workflows/pull_request_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: PR Builder

on:
pull_request:
branches: [ develop, main, chore/*, feat/*, test/*, fix/*, refactor/* ]

jobs:
build:
name: PR Checker
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Gradle cache
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17

- name: Create Local Properties
run: touch local.properties

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Lint Check
run: ./gradlew ktlintCheck

- name: debug unit test
run: ./gradlew testDebugUnitTest
95 changes: 58 additions & 37 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,59 +1,80 @@
import org.jetbrains.kotlin.konan.properties.Properties

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.dobedobe.android.application)
alias(libs.plugins.dobedobe.kotlinx.serialization)
}

val properties =
Properties().apply {
load(rootProject.file("local.properties").inputStream())
}

android {
namespace = "com.chipichipi.dobedobe"
compileSdk = 35
namespace = libs.versions.applicationId.get()

defaultConfig {
applicationId = "com.chipichipi.dobedobe"
minSdk = 26
targetSdk = 35
versionCode = 1
versionName = "1.0.0"
signingConfigs {
create("release") {
keyAlias = properties.getProperty("KEY_ALIAS")
keyPassword = properties.getProperty("KEY_PASSWORD")
storeFile = file("${project.rootDir.absolutePath}/keystore/dobedobe_key.keystore")
storePassword = properties.getProperty("STORE_PASSWORD")
}
}

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
defaultConfig {
applicationId = libs.versions.applicationId.get()
versionName = libs.versions.appVersion.get()
versionCode = libs.versions.versionCode.get().toInt()
}

buildTypes {
release {
isMinifyEnabled = false
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
"proguard-rules.pro",
)
signingConfig = signingConfigs.getByName("release")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true

packaging {
resources.excludes.apply {
add("/META-INF/{AL2.0,LGPL2.1}")
add("META-INF/**")
}
}
}

dependencies {
implementation(projects.feature.dashboard)
implementation(projects.feature.goal)
implementation(projects.feature.setting)

implementation(projects.core.common)
implementation(projects.core.data)
implementation(projects.core.designsystem)
implementation(projects.core.model)
implementation(projects.core.notifications)

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
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)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.lifecycle.runtimeCompose)
implementation(libs.androidx.lifecycle.viewModelCompose)
implementation(libs.androidx.core.splashscreen)
implementation(platform(libs.koin.bom))
implementation(libs.koin.android)
implementation(libs.koin.androidx.compose)
implementation(libs.koin.androidx.startup)
testImplementation(libs.koin.test.junit5)
testImplementation(libs.koin.android.test)
testImplementation(libs.androidx.navigation.testing)

androidTestImplementation(libs.androidx.lifecycle.runtimeTesting)
androidTestImplementation(libs.androidx.navigation.testing)
androidTestImplementation(libs.androidx.test.core)
androidTestImplementation(libs.androidx.test.espresso.core)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.chipichipi.dobedobe

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4

import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*

/**
* Instrumented test, which will execute on an Android device.
*
Expand All @@ -21,4 +19,4 @@ class ExampleInstrumentedTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.chipichipi.dobedobe", appContext.packageName)
}
}
}
9 changes: 5 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

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

<application
android:name=".DobeDobeApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Dobedobe"
android:theme="@style/Theme.DobeDobe.Starting"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.Dobedobe">
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
Binary file added app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions app/src/main/kotlin/com/chipichipi/dobedobe/DobeDobeApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.chipichipi.dobedobe

import android.app.Application
import com.chipichipi.dobedobe.di.appModule
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.androix.startup.KoinStartup
import org.koin.core.annotation.KoinExperimentalAPI
import org.koin.core.logger.Level
import org.koin.dsl.koinConfiguration

@OptIn(KoinExperimentalAPI::class)
class DobeDobeApplication : Application(), KoinStartup {
override fun onKoinStartup() =
koinConfiguration {
androidLogger(level = Level.DEBUG)
androidContext(applicationContext)
modules(appModule)
}
}
61 changes: 32 additions & 29 deletions app/src/main/kotlin/com/chipichipi/dobedobe/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,47 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.chipichipi.dobedobe.ui.theme.DobedobeTheme
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.chipichipi.dobedobe.core.designsystem.theme.DobeDobeTheme
import com.chipichipi.dobedobe.ui.DobeDobeApp
import com.chipichipi.dobedobe.ui.MainUiState
import com.chipichipi.dobedobe.ui.MainViewModel
import com.chipichipi.dobedobe.ui.rememberDobeDobeAppState
import kotlinx.coroutines.launch
import org.koin.androidx.compose.KoinAndroidContext
import org.koin.androidx.viewmodel.ext.android.viewModel

class MainActivity : ComponentActivity() {
private val viewModel: MainViewModel by viewModel()

override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
enableEdgeToEdge()

lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.mainUiState.collect {}
}
}

splashScreen.setKeepOnScreenCondition {
viewModel.mainUiState.value is MainUiState.Loading
}

setContent {
DobedobeTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
val appState = rememberDobeDobeAppState()

DobeDobeTheme {
KoinAndroidContext {
DobeDobeApp(
appState = appState,
)
}
}
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
DobedobeTheme {
Greeting("Android")
}
}
29 changes: 29 additions & 0 deletions app/src/main/kotlin/com/chipichipi/dobedobe/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.chipichipi.dobedobe.di

import com.chipichipi.dobedobe.core.data.di.dataModule
import com.chipichipi.dobedobe.feature.dashboard.di.dashboardModule
import com.chipichipi.dobedobe.feature.goal.di.goalModule
import com.chipichipi.dobedobe.feature.setting.di.settingModule
import com.chipichipi.dobedobe.onboarding.OnboardingViewModel
import com.chipichipi.dobedobe.ui.MainViewModel
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module

val featureModule =
module {
includes(
dashboardModule,
goalModule,
settingModule,
)
}

val appModule =
module {
includes(
dataModule,
featureModule,
)
viewModelOf(::MainViewModel)
viewModelOf(::OnboardingViewModel)
}
Loading

0 comments on commit d2205c3

Please sign in to comment.