Skip to content

Commit

Permalink
fate:添加FlowAdapter
Browse files Browse the repository at this point in the history
  • Loading branch information
aleyn97 committed Jul 31, 2022
1 parent 2aeb562 commit 21e7ec5
Show file tree
Hide file tree
Showing 71 changed files with 733 additions and 1,477 deletions.
16 changes: 0 additions & 16 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 2 additions & 4 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

62 changes: 0 additions & 62 deletions app/build.gradle

This file was deleted.

67 changes: 67 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import com.aleyn.BuildConfig
import com.aleyn.Depend
import com.aleyn.AndroidX
import com.aleyn.Retrofit

plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
}

android {
compileSdk = BuildConfig.compileSdkVersion

defaultConfig {
applicationId = BuildConfig.applicationId
minSdk = BuildConfig.minSdkVersion
targetSdk = BuildConfig.targetSdkVersion
versionCode = BuildConfig.versionCode
versionName = BuildConfig.versionName
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

buildFeatures {
dataBinding = true
viewBinding = true
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
AndroidX.values.forEach { implementation(it) }
testImplementation(Depend.junit)
androidTestImplementation(Depend.androidTestJunit)
androidTestImplementation(Depend.espressoCore)
//MVVMLin
implementation(project("path" to ":mvvmlin"))
//第三方
implementation(Depend.banner)
implementation(Depend.BRVAH)
implementation(Depend.refreshKernel)
implementation(Depend.refreshHeader)
implementation(Depend.bdclta)
implementation(Depend.bdcltaRv)
implementation(Depend.netCache)
implementation(Depend.netCache)
Retrofit.values.forEach { implementation(it) }
}
2 changes: 1 addition & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# proguardFiles setting in build.gradle.kts
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
8 changes: 6 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".ui.detail.DetailActivity" />
<activity android:name=".ui.MainActivity">
<activity
android:name=".ui.detail.DetailActivity"
android:exported="false" />
<activity
android:name=".ui.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
18 changes: 13 additions & 5 deletions app/src/main/java/com/pcl/mvvm/app/MyApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,34 @@ package com.pcl.mvvm.app
import com.aleyn.mvvm.base.BaseApplication
import com.blankj.utilcode.util.LogUtils
import com.pcl.mvvm.BuildConfig
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout

/**
* @auther : Aleyn
* @author : Aleyn
* time : 2019/11/04
*/
class MyApplication : BaseApplication() {

companion object {
init {
SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, _ ->
ClassicsHeader(context)
}
}
}


override fun onCreate() {
super.onCreate()

// 在OnCreate 中可以传入 自定义的 GlobalConfig
/*MVVMLin.install(object : GlobalConfig {
override fun viewModelFactory() = ViewModelFactory.getInstance()
/*MVVMLin.setNetException(CoroutineExceptionHandler { context, e ->
})*/

LogUtils.getConfig().run {
isLogSwitch = BuildConfig.DEBUG
setSingleTagSwitch(true)
}

}
}
2 changes: 1 addition & 1 deletion app/src/main/java/com/pcl/mvvm/app/base/BaseResult.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.pcl.mvvm.app.base
import com.aleyn.mvvm.base.IBaseResponse

/**
* @auther : Aleyn
* @author : Aleyn
* time : 2019/11/01
*/
data class BaseResult<T>(
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/pcl/mvvm/common/Constant.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.pcl.mvvm.common

/**
* @auther : Aleyn
* @author : Aleyn
* time : 2019/08/16
*/
object Constant {
Expand Down
56 changes: 17 additions & 39 deletions app/src/main/java/com/pcl/mvvm/data/HomeRepository.kt
Original file line number Diff line number Diff line change
@@ -1,69 +1,47 @@
package com.pcl.mvvm.data

import com.aleyn.cache.CacheMode
import com.aleyn.mvvm.base.BaseModel
import com.pcl.mvvm.app.base.BaseResult
import com.pcl.mvvm.data.db.dao.HomeDao
import com.pcl.mvvm.data.http.HomeNetWork
import com.pcl.mvvm.network.entity.BannerBean
import com.pcl.mvvm.network.entity.HomeListBean
import com.pcl.mvvm.network.entity.NavTypeBean
import com.pcl.mvvm.network.entity.UsedWeb
import kotlinx.coroutines.flow.Flow

/**
* @auther : Aleyn
* @author : Aleyn
* time : 2019/10/29
*/
class HomeRepository private constructor(
private val netWork: HomeNetWork,
private val localData: HomeDao
private val netWork: HomeNetWork
) : BaseModel() {

suspend fun getBannerData(refresh: Boolean = false): List<BannerBean> {
return cacheNetCall({
netWork.getBannerData()
}, {
localData.getBannerList()
}, {
if (refresh) localData.deleteBannerAll()
localData.insertBanner(it)
}, {
!refresh && !it.isNullOrEmpty()
})
fun getBannerData(refresh: Boolean): Flow<BaseResult<List<BannerBean>>> {
val cacheModel =
if (refresh) CacheMode.NETWORK_PUT_CACHE else CacheMode.READ_CACHE_NETWORK_PUT
return netWork.getBannerData(cacheModel)
}

suspend fun getHomeList(page: Int, refresh: Boolean): HomeListBean {
return cacheNetCall({
netWork.getHomeList(page)
}, {
localData.getHomeList(page + 1)
}, {
if (refresh) localData.deleteHomeAll()
localData.insertData(it)
}, {
!refresh
})
fun getHomeList(page: Int, refresh: Boolean = false): Flow<BaseResult<HomeListBean>> {
val cacheModel =
if (refresh) CacheMode.NETWORK_PUT_CACHE else CacheMode.READ_CACHE_NETWORK_PUT
return netWork.getHomeList(page, cacheModel)
}

suspend fun getNaviJson(): BaseResult<List<NavTypeBean>> {
return netWork.getNaviJson()
}
suspend fun getNaviJson() = netWork.getNaviJson()

suspend fun getProjectList(page: Int, cid: Int): BaseResult<HomeListBean> {
return netWork.getProjectList(page, cid)
}
suspend fun getProjectList(page: Int, cid: Int) = netWork.getProjectList(page, cid)

suspend fun getPopularWeb(): BaseResult<MutableList<UsedWeb>> {
return netWork.getPopularWeb()
}
suspend fun getPopularWeb() = netWork.getPopularWeb()

companion object {

@Volatile
private var INSTANCE: HomeRepository? = null

fun getInstance(netWork: HomeNetWork, homeDao: HomeDao) =
fun getInstance(netWork: HomeNetWork) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: HomeRepository(netWork, homeDao).also { INSTANCE = it }
INSTANCE ?: HomeRepository(netWork).also { INSTANCE = it }
}
}
}
Loading

0 comments on commit 21e7ec5

Please sign in to comment.