Skip to content

Commit

Permalink
Modularize the codebase and fix some bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
kenhuang1120 committed Dec 26, 2022
1 parent 2c6e5dd commit 0e814cc
Show file tree
Hide file tree
Showing 198 changed files with 1,216 additions and 842 deletions.
83 changes: 9 additions & 74 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
import java.util.Properties
import java.io.InputStreamReader
import java.io.FileInputStream
import java.io.IOException

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.kapt")
id("org.jetbrains.kotlin.plugin.parcelize")
id("kotlin-parcelize")
id("kotlin-kapt")
kotlin("android")
}

fun String.runCommand(workingDir: File = file("./")): String {
Expand All @@ -27,50 +21,6 @@ fun gitSha(): String {
return "git rev-parse --short HEAD".runCommand()
}

fun getProductionHost(): String {
return try {
checkStringType(gradleLocalProperties(rootDir).getProperty("PRODUCTION_HOST"))
} catch (e : Exception) {
getHost()
}
}

fun getStagingHost(): String {
return try {
checkStringType(gradleLocalProperties(rootDir).getProperty("STAGING_HOST"))
} catch (e : Exception) {
getHost()
}
}

fun getHost(): String {
return try {
checkStringType(gradleLocalProperties(rootDir).getProperty("HOST"))
} catch (e : Exception) {
"\"\""
}
}

fun getTestAccount(): String {
return try {
checkStringType(gradleLocalProperties(rootDir).getProperty("ACCOUNT"))
} catch (e : Exception) {
"\"\""
}
}

fun getTestPassword(): String {
return try {
checkStringType(gradleLocalProperties(rootDir).getProperty("PASSWORD"))
} catch (e : Exception) {
"\"\""
}
}

fun checkStringType(text: String): String {
return "\"${text.replace("\"","")}\""
}

android {
compileSdk = GlobalConfig.ANDROID_BUILD_SDK_VERSION
buildToolsVersion = GlobalConfig.ANDROID_BUILD_TOOLS_VERSION
Expand Down Expand Up @@ -129,32 +79,20 @@ android {
productFlavors {
create("production") {
dimension = "api_environment"
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_API_HOST, getProductionHost())
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_TEST_ACCOUNT, "\"\"")
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_TEST_PASSWORD, "\"\"")
}

create("staging") {
isDefault = true
dimension = "api_environment"
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_API_HOST, getStagingHost())
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_TEST_ACCOUNT, getTestAccount())
buildConfigField("String", GlobalConfig.BUILD_CONFIG_KEY_FOR_TEST_PASSWORD, getTestPassword())
}
}

sourceSets {
val sharedTestDir = "src/sharedTest/java"
getByName("test") {
java.setSrcDirs(listOf(sharedTestDir))
}
getByName("androidTest") {
java.setSrcDirs(listOf(sharedTestDir))
}
}
}

dependencies {
api(project(":common"))
api(project(":data"))
api(project(":domain"))

implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
// AndroidX
implementation(Dependencies.AndroidX.appcompat)
Expand Down Expand Up @@ -199,10 +137,11 @@ dependencies {
implementation(Dependencies.Koin.Core.core)
// Koin main features for Android
implementation(Dependencies.Koin.Android.android)
implementation(Dependencies.AndroidX.coreKtx)

// Test
coreLibraryDesugaring(Dependencies.desugar)

// Test
testImplementation(Dependencies.Google.truth)
testImplementation(Dependencies.junit)
testImplementation(Dependencies.MockK.core)
Expand All @@ -224,7 +163,3 @@ dependencies {

debugImplementation(Dependencies.Square.leakcanary)
}

kapt {
correctErrorTypes = true
}
30 changes: 16 additions & 14 deletions app/src/main/java/cc/ptt/android/HomeActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,25 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import cc.ptt.android.data.common.PreferenceConstants
import cc.ptt.android.presentation.articlelist.ArticleListFragment
import cc.ptt.android.presentation.articleread.ArticleReadFragment
import cc.ptt.android.presentation.articlesearch.ArticleListSearchFragment
import cc.ptt.android.presentation.base.BaseActivity
import cc.ptt.android.presentation.common.StaticValue
import cc.ptt.android.presentation.common.extension.navigateForward
import cc.ptt.android.presentation.home.HomeFragment
import cc.ptt.android.presentation.home.hotarticle.HotArticleFilterFragment
import cc.ptt.android.presentation.login.LoginPageFragment
import cc.ptt.android.presentation.postarticle.*
import cc.ptt.android.presentation.searchboards.SearchBoardsFragment
import cc.ptt.android.articlelist.ArticleListFragment
import cc.ptt.android.articleread.ArticleReadFragment
import cc.ptt.android.articlesearch.ArticleListSearchFragment
import cc.ptt.android.base.BaseActivity
import cc.ptt.android.common.StaticValue
import cc.ptt.android.common.extension.navigateForward
import cc.ptt.android.data.preference.MainPreferences
import cc.ptt.android.home.HomeFragment
import cc.ptt.android.home.hotarticle.HotArticleFilterFragment
import cc.ptt.android.login.LoginPageFragment
import cc.ptt.android.postarticle.PostArticleFragment
import cc.ptt.android.searchboards.SearchBoardsFragment
import org.koin.android.ext.android.inject
import java.util.*
import kotlin.math.abs

class HomeActivity : BaseActivity() {

private val mainPreferences: MainPreferences by inject()
private var themeType = 0
private var timeTemp: Long = 0
private var navController: NavController? = null
Expand All @@ -39,8 +42,7 @@ class HomeActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
val preference2 = getSharedPreferences(PreferenceConstants.prefName, MODE_PRIVATE)
themeType = preference2.getInt(PreferenceConstants.theme, 0)
themeType = mainPreferences.getThemeType()
StaticValue.ThemMode = themeType
when (themeType) {
1 -> {
Expand Down
6 changes: 5 additions & 1 deletion app/src/main/java/cc/ptt/android/PttApplication.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package cc.ptt.android

import androidx.multidex.MultiDexApplication
import cc.ptt.android.common.di.commonModules
import cc.ptt.android.data.di.*
import cc.ptt.android.di.*
import cc.ptt.android.domain.di.useCaseModules
import kotlinx.coroutines.FlowPreview
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.GlobalContext.startKoin
Expand All @@ -17,12 +20,13 @@ class PttApplication : MultiDexApplication() {
modules(
listOf(
apiModules,
appModules,
remoteDataSourceModules,
localDataSourceModules,
repositoryModules,
useCaseModules,
viewModelModules,
commonModules,
preferenceModules,
)
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cc.ptt.android.presentation.articlelist
package cc.ptt.android.articlelist

import android.view.LayoutInflater
import android.view.ViewGroup
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cc.ptt.android.presentation.articlelist
package cc.ptt.android.articlelist

import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -7,15 +7,14 @@ import android.view.ViewGroup
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import cc.ptt.android.R
import cc.ptt.android.common.utils.log
import cc.ptt.android.articleread.ArticleReadFragment
import cc.ptt.android.articlesearch.ArticleListSearchFragment
import cc.ptt.android.base.BaseFragment
import cc.ptt.android.common.ClickFix
import cc.ptt.android.common.CustomLinearLayoutManager
import cc.ptt.android.data.model.remote.board.article.Article
import cc.ptt.android.databinding.ArticleListFragmentLayoutBinding
import cc.ptt.android.presentation.articleread.ArticleReadFragment
import cc.ptt.android.presentation.articlesearch.ArticleListSearchFragment
import cc.ptt.android.presentation.base.BaseFragment
import cc.ptt.android.presentation.common.ClickFix
import cc.ptt.android.presentation.common.CustomLinearLayoutManager
import cc.ptt.android.presentation.postarticle.PostArticleFragment
import cc.ptt.android.postarticle.PostArticleFragment
import cc.ptt.android.utils.observeNotNull
import com.google.android.material.bottomnavigation.BottomNavigationView
import org.koin.androidx.viewmodel.ext.android.viewModel
Expand Down Expand Up @@ -45,7 +44,7 @@ class ArticleListFragment : BaseFragment() {
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
): View {
return ArticleListFragmentLayoutBinding.inflate(inflater, container, false).apply {
_binding = this
}.root
Expand Down Expand Up @@ -134,7 +133,6 @@ class ArticleListFragment : BaseFragment() {
}

observeNotNull(getErrorLiveData()) { e ->
log("ArticleListFragment", "Error : $e")
Toast.makeText(currentActivity, "Error : $e", Toast.LENGTH_SHORT).show()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cc.ptt.android.presentation.articlelist
package cc.ptt.android.articlelist

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package cc.ptt.android.presentation.articlelist
package cc.ptt.android.articlelist

import androidx.recyclerview.widget.RecyclerView
import cc.ptt.android.R
import cc.ptt.android.data.common.ResourcesUtils
import cc.ptt.android.common.ResourcesUtils
import cc.ptt.android.data.model.remote.board.article.Article
import cc.ptt.android.databinding.ArticleListItemDeleteBinding

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package cc.ptt.android.presentation.articlelist
package cc.ptt.android.articlelist

import androidx.recyclerview.widget.RecyclerView
import cc.ptt.android.R
import cc.ptt.android.common.ResourcesUtils
import cc.ptt.android.common.StringUtils
import cc.ptt.android.common.date.DateFormatUtils
import cc.ptt.android.common.date.DatePatternConstants
import cc.ptt.android.data.common.ResourcesUtils
import cc.ptt.android.data.common.StringUtils
import cc.ptt.android.data.model.remote.board.article.Article
import cc.ptt.android.databinding.ArticleListItemBinding

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cc.ptt.android.presentation.articleread
package cc.ptt.android.articleread

import android.app.Activity
import android.content.Context
Expand All @@ -12,10 +12,10 @@ import androidx.annotation.ColorInt
import androidx.core.text.PrecomputedTextCompat
import androidx.recyclerview.widget.RecyclerView
import cc.ptt.android.R
import cc.ptt.android.data.common.ResourcesUtils
import cc.ptt.android.data.common.StringUtils
import cc.ptt.android.common.ResourcesUtils
import cc.ptt.android.common.StringUtils
import cc.ptt.android.common.TextViewMovementMethod
import cc.ptt.android.databinding.*
import cc.ptt.android.presentation.common.TextViewMovementMethod
import coil.load
import java.lang.Exception
import java.lang.RuntimeException
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cc.ptt.android.presentation.articleread
package cc.ptt.android.articleread

import android.app.ProgressDialog
import android.content.Context
Expand All @@ -14,16 +14,15 @@ import androidx.appcompat.widget.PopupMenu
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView
import cc.ptt.android.R
import cc.ptt.android.data.common.ResourcesUtils
import cc.ptt.android.data.model.remote.article.ArticleCommentType
import cc.ptt.android.base.BaseFragment
import cc.ptt.android.common.CustomLinearLayoutManager
import cc.ptt.android.common.KeyboardUtils
import cc.ptt.android.common.ResourcesUtils
import cc.ptt.android.common.extension.bundleDelegate
import cc.ptt.android.data.model.remote.board.article.Article
import cc.ptt.android.data.model.ui.article.PostRankMark
import cc.ptt.android.databinding.ArticleReadFragmentLayoutBinding
import cc.ptt.android.presentation.base.BaseFragment
import cc.ptt.android.presentation.common.CustomLinearLayoutManager
import cc.ptt.android.presentation.common.KeyboardUtils
import cc.ptt.android.presentation.common.extension.bundleDelegate
import cc.ptt.android.presentation.login.LoginPageFragment
import cc.ptt.android.domain.model.ui.article.PostRankMark
import cc.ptt.android.login.LoginPageFragment
import cc.ptt.android.utils.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -170,9 +169,9 @@ class ArticleReadFragment : BaseFragment() {
popupMenu.menuInflater.inflate(R.menu.carete_article_comment_type_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener { item ->
val type = when (item.itemId) {
R.id.create_article_comment_type_push -> ArticleCommentType.PUSH
R.id.create_article_comment_type_hush -> ArticleCommentType.HUSH
else -> ArticleCommentType.COMMENT
R.id.create_article_comment_type_push -> cc.ptt.android.data.model.remote.article.ArticleCommentType.PUSH
R.id.create_article_comment_type_hush -> cc.ptt.android.data.model.remote.article.ArticleCommentType.HUSH
else -> cc.ptt.android.data.model.remote.article.ArticleCommentType.COMMENT
}
progressDialog = ProgressDialog.show(
currentActivity,
Expand Down
Loading

0 comments on commit 0e814cc

Please sign in to comment.