Skip to content

Commit 1e7bfe1

Browse files
committed
Merge branch 'develop'
2 parents 3f136ca + eeb03af commit 1e7bfe1

File tree

82 files changed

+370
-587
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+370
-587
lines changed

app/build.gradle

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ apply plugin: 'kotlin-parcelize'
77
apply plugin: 'kotlin-kapt'
88

99
android {
10-
compileSdkVersion 29
11-
buildToolsVersion "29.0.3"
10+
compileSdkVersion 32
11+
buildToolsVersion "32.0.0"
1212

1313
defaultConfig {
1414
applicationId "com.eyepetizer.android"
1515
minSdkVersion 21
16-
targetSdkVersion 29
17-
versionCode 6
18-
versionName "1.0.5"
16+
targetSdkVersion 32
17+
versionCode 7
18+
versionName "1.0.6"
1919
multiDexEnabled true
2020
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2121
ndk {
@@ -74,19 +74,18 @@ android {
7474

7575
dependencies {
7676
implementation fileTree(dir: 'libs', include: ['*.jar'])
77-
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
78-
implementation 'androidx.appcompat:appcompat:1.2.0'
79-
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
77+
implementation 'androidx.appcompat:appcompat:1.4.2'
78+
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
8079

8180
//常用依赖库
82-
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3'
83-
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3'
84-
implementation 'androidx.recyclerview:recyclerview:1.2.0'
85-
implementation 'com.google.android.material:material:1.3.0'
81+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
82+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
83+
implementation 'androidx.recyclerview:recyclerview:1.2.1'
84+
implementation 'com.google.android.material:material:1.6.1'
8685
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
8786
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
8887
implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'
89-
implementation 'com.github.bumptech.glide:glide:4.11.0'
88+
implementation 'com.github.bumptech.glide:glide:4.13.2'
9089
kapt 'com.github.bumptech.glide:compiler:4.11.0'
9190
implementation 'com.github.bumptech.glide:okhttp3-integration:4.9.0'
9291
implementation 'jp.wasabeef:glide-transformations:4.1.0'
@@ -96,16 +95,16 @@ dependencies {
9695

9796
//Android Jetpack 组件
9897
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
99-
implementation 'androidx.work:work-runtime:2.5.0'
100-
implementation "androidx.startup:startup-runtime:1.0.0"
101-
implementation "androidx.datastore:datastore-preferences:1.0.0-beta01"
102-
implementation "androidx.paging:paging-runtime:3.0.0"
98+
implementation 'androidx.work:work-runtime:2.7.1'
99+
implementation "androidx.startup:startup-runtime:1.1.1"
100+
implementation "androidx.datastore:datastore-preferences:1.0.0"
101+
implementation "androidx.paging:paging-runtime:3.1.1"
103102

104103
//Android KTX
105-
implementation 'androidx.core:core-ktx:1.3.2'
106-
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0'
107-
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
108-
implementation "androidx.fragment:fragment-ktx:1.3.1"
104+
implementation 'androidx.core:core-ktx:1.8.0'
105+
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
106+
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1'
107+
implementation "androidx.fragment:fragment-ktx:1.5.1"
109108

110109
//特定功能依赖库
111110
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
@@ -123,6 +122,6 @@ dependencies {
123122
implementation 'com.umeng.umsdk:asms:1.2.2'
124123

125124
testImplementation 'junit:junit:4.13.2'
126-
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
127-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
125+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
126+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
128127
}

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1111
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1212

13+
<queries>
14+
<package android:name="com.tencent.mobileqq" />
15+
<package android:name="com.tencent.mm" />
16+
<package android:name="com.sina.weibo" />
17+
</queries>
18+
1319
<application
1420
android:name=".EyepetizerApplication"
1521
android:allowBackup="false"
@@ -40,6 +46,7 @@
4046

4147
<activity
4248
android:name=".ui.SplashActivity"
49+
android:exported="true"
4350
android:theme="@style/Eyepetizer.SplashActivity">
4451
<intent-filter>
4552
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/eyepetizer/android/EyepetizerApplication.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import com.eyepetizer.android.util.GlobalUtil
3030
import com.scwang.smart.refresh.header.MaterialHeader
3131
import com.scwang.smart.refresh.layout.SmartRefreshLayout
3232
import com.shuyu.gsyvideoplayer.player.IjkPlayerManager
33-
import com.umeng.commonsdk.UMConfigure
3433
import tv.danmaku.ijk.media.player.IjkMediaPlayer
3534

3635
/**

app/src/main/java/com/eyepetizer/android/event/MessageEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ package com.eyepetizer.android.event
2222
* @author vipyinzhiwei
2323
* @since 2020/4/29
2424
*/
25-
open class MessageEvent
25+
open class MessageEvent

app/src/main/java/com/eyepetizer/android/event/RefreshEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ package com.eyepetizer.android.event
2222
* @author vipyinzhiwei
2323
* @since 2020/5/19
2424
*/
25-
open class RefreshEvent(var activityClass: Class<*>? = null) : MessageEvent()
25+
class RefreshEvent(val activityClass: Class<*>? = null) : MessageEvent()

app/src/main/java/com/eyepetizer/android/event/SwitchPagesEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ package com.eyepetizer.android.event
2222
* @author vipyinzhiwei
2323
* @since 2020/5/19
2424
*/
25-
open class SwitchPagesEvent(var activityClass: Class<*>? = null) : MessageEvent()
25+
class SwitchPagesEvent(val activityClass: Class<*>? = null) : MessageEvent()

app/src/main/java/com/eyepetizer/android/extension/CharSequence.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,5 @@ fun CharSequence.preCreateSession(): Boolean {
4343
}
4444
val sessionConfigBuilder = SonicSessionConfig.Builder().apply { setSupportLocalServer(true) }
4545
val preloadSuccess = SonicEngine.getInstance().preCreateSession(this.toString(), sessionConfigBuilder.build())
46-
logD("preCreateSession()", "${this}\t:${if (preloadSuccess) "Preload start up success!" else "Preload start up fail!"}")
4746
return preloadSuccess
4847
}

app/src/main/java/com/eyepetizer/android/extension/TextView.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ fun TextView.setDrawable(drawable: Drawable?, iconWidth: Float? = null, iconHeig
4646
*
4747
* @param lDrawable 左边图标
4848
* @param rDrawable 右边图标
49-
* @param lIconWidth 图标宽dp:默认自动根据图标大小
50-
* @param lIconHeight 图标高dp:默认自动根据图标大小
51-
* @param rIconWidth 图标宽dp:默认自动根据图标大小
52-
* @param rIconHeight 图标高dp:默认自动根据图标大小
49+
* @param lIconWidth 左边图标宽dp:默认自动根据图标大小
50+
* @param lIconHeight 左边图标高dp:默认自动根据图标大小
51+
* @param rIconWidth 右边图标宽dp:默认自动根据图标大小
52+
* @param rIconHeight 右边图标高dp:默认自动根据图标大小
5353
*/
5454
fun TextView.setDrawables(lDrawable: Drawable?, rDrawable: Drawable?, lIconWidth: Float? = null, lIconHeight: Float? = null, rIconWidth: Float? = null, rIconHeight: Float? = null) {
5555
if (lIconWidth != null && lIconHeight != null) {

app/src/main/java/com/eyepetizer/android/logic/MainPageRepository.kt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,11 @@ class MainPageRepository private constructor(private val mainPageDao: MainPageDa
9292

9393
companion object {
9494

95-
private var repository: MainPageRepository? = null
95+
@Volatile
96+
private var INSTANCE: MainPageRepository? = null
9697

97-
fun getInstance(dao: MainPageDao, network: EyepetizerNetwork): MainPageRepository {
98-
if (repository == null) {
99-
synchronized(MainPageRepository::class.java) {
100-
if (repository == null) {
101-
repository = MainPageRepository(dao, network)
102-
}
103-
}
104-
}
105-
106-
return repository!!
98+
fun getInstance(dao: MainPageDao, network: EyepetizerNetwork): MainPageRepository = INSTANCE ?: synchronized(this) {
99+
INSTANCE ?: MainPageRepository(dao, network)
107100
}
108101
}
109102
}

app/src/main/java/com/eyepetizer/android/logic/VideoRepository.kt

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import com.eyepetizer.android.logic.model.VideoDetail
2121
import com.eyepetizer.android.logic.network.EyepetizerNetwork
2222
import kotlinx.coroutines.Dispatchers
2323
import kotlinx.coroutines.async
24-
import kotlinx.coroutines.coroutineScope
2524
import kotlinx.coroutines.withContext
2625

2726
/**
@@ -39,55 +38,39 @@ class VideoRepository(private val dao: VideoDao, private val network: Eyepetizer
3938
suspend fun refreshVideoDetail(videoId: Long, repliesUrl: String) = requestVideoDetail(videoId, repliesUrl)
4039

4140
private suspend fun requestVideoReplies(url: String) = withContext(Dispatchers.IO) {
42-
coroutineScope {
43-
val deferredVideoReplies = async { network.fetchVideoReplies(url) }
44-
val videoReplies = deferredVideoReplies.await()
45-
videoReplies
46-
}
41+
val deferredVideoReplies = async { network.fetchVideoReplies(url) }
42+
val videoReplies = deferredVideoReplies.await()
43+
videoReplies
4744
}
4845

4946
private suspend fun requestVideoRelatedAndVideoReplies(videoId: Long, repliesUrl: String) = withContext(Dispatchers.IO) {
50-
coroutineScope {
51-
val deferredVideoRelated = async { network.fetchVideoRelated(videoId) }
52-
val deferredVideoReplies = async { network.fetchVideoReplies(repliesUrl) }
53-
val videoRelated = deferredVideoRelated.await()
54-
val videoReplies = deferredVideoReplies.await()
55-
val videoDetail = VideoDetail(null, videoRelated, videoReplies)
56-
videoDetail
57-
}
47+
val deferredVideoRelated = async { network.fetchVideoRelated(videoId) }
48+
val deferredVideoReplies = async { network.fetchVideoReplies(repliesUrl) }
49+
val videoRelated = deferredVideoRelated.await()
50+
val videoReplies = deferredVideoReplies.await()
51+
val videoDetail = VideoDetail(null, videoRelated, videoReplies)
52+
videoDetail
5853
}
5954

6055
private suspend fun requestVideoDetail(videoId: Long, repliesUrl: String) = withContext(Dispatchers.IO) {
61-
coroutineScope {
62-
val deferredVideoRelated = async { network.fetchVideoRelated(videoId) }
63-
val deferredVideoReplies = async { network.fetchVideoReplies(repliesUrl) }
64-
val deferredVideoBeanForClient = async { network.fetchVideoBeanForClient(videoId) }
65-
val videoBeanForClient = deferredVideoBeanForClient.await()
66-
val videoRelated = deferredVideoRelated.await()
67-
val videoReplies = deferredVideoReplies.await()
68-
val videoDetail = VideoDetail(videoBeanForClient, videoRelated, videoReplies)
69-
70-
if (videoDetail.videoBeanForClient != null && videoDetail.videoRelated?.count ?: 0 > 0 && videoDetail.videoReplies.count > 0) {
71-
dao.cacheVideoDetail(videoDetail)
72-
}
73-
videoDetail
74-
}
56+
val deferredVideoRelated = async { network.fetchVideoRelated(videoId) }
57+
val deferredVideoReplies = async { network.fetchVideoReplies(repliesUrl) }
58+
val deferredVideoBeanForClient = async { network.fetchVideoBeanForClient(videoId) }
59+
val videoBeanForClient = deferredVideoBeanForClient.await()
60+
val videoRelated = deferredVideoRelated.await()
61+
val videoReplies = deferredVideoReplies.await()
62+
val videoDetail = VideoDetail(videoBeanForClient, videoRelated, videoReplies)
63+
dao.cacheVideoDetail(videoDetail)
64+
videoDetail
7565
}
7666

7767
companion object {
7868

79-
private var repository: VideoRepository? = null
80-
81-
fun getInstance(dao: VideoDao, network: EyepetizerNetwork): VideoRepository {
82-
if (repository == null) {
83-
synchronized(VideoRepository::class.java) {
84-
if (repository == null) {
85-
repository = VideoRepository(dao, network)
86-
}
87-
}
88-
}
69+
@Volatile
70+
private var INSTANCE: VideoRepository? = null
8971

90-
return repository!!
72+
fun getInstance(dao: VideoDao, network: EyepetizerNetwork): VideoRepository = INSTANCE ?: synchronized(this) {
73+
INSTANCE ?: VideoRepository(dao, network)
9174
}
9275
}
9376

app/src/main/java/com/eyepetizer/android/logic/dao/EyepetizerDatabase.kt

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,11 @@ package com.eyepetizer.android.logic.dao
2424
*/
2525
object EyepetizerDatabase {
2626

27-
private var mainPageDao: MainPageDao? = null
27+
private lateinit var mainPageDao: MainPageDao
2828

29-
private var videoDao: VideoDao? = null
29+
private lateinit var videoDao: VideoDao
3030

31-
fun getMainPageDao(): MainPageDao {
32-
if (mainPageDao == null) {
33-
mainPageDao = MainPageDao()
34-
}
35-
return mainPageDao!!
36-
}
31+
fun getMainPageDao() = if (this::mainPageDao.isInitialized) mainPageDao else MainPageDao()
3732

38-
fun getVideoDao(): VideoDao {
39-
if (videoDao == null) {
40-
videoDao = VideoDao()
41-
}
42-
return videoDao!!
43-
}
33+
fun getVideoDao() = if (this::videoDao.isInitialized) videoDao else VideoDao()
4434
}

app/src/main/java/com/eyepetizer/android/logic/model/HomePageRecommend.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ data class HomePageRecommend(val itemList: List<Item>, val count: Int, val total
135135
val nickname: String,
136136
val resourceType: String,
137137
val url: String,
138-
val urls: List<String>,
138+
val urls: List<String>?,
139139
val userCover: String
140140
)
141141
}

app/src/main/java/com/eyepetizer/android/logic/model/TabEntity.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,12 @@ import com.flyco.tablayout.listener.CustomTabEntity
2424
* @author vipyinzhiwei
2525
* @since 2020/5/10
2626
*/
27-
class TabEntity(private var title: String, private var selectedIcon: Int = 0, private var unSelectedIcon: Int = 0) : CustomTabEntity {
27+
class TabEntity(private val title: String, private val selectedIcon: Int = 0, private val unSelectedIcon: Int = 0) : CustomTabEntity {
2828

29-
override fun getTabTitle(): String {
30-
return title
31-
}
29+
override fun getTabTitle() = title
3230

33-
override fun getTabSelectedIcon(): Int {
34-
return selectedIcon
35-
}
31+
override fun getTabSelectedIcon() = selectedIcon
3632

37-
override fun getTabUnselectedIcon(): Int {
38-
return unSelectedIcon
39-
}
33+
override fun getTabUnselectedIcon() = unSelectedIcon
4034

4135
}

app/src/main/java/com/eyepetizer/android/logic/network/EyepetizerNetwork.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,11 @@ class EyepetizerNetwork {
4242

4343
companion object {
4444

45-
private var network: EyepetizerNetwork? = null
46-
47-
fun getInstance(): EyepetizerNetwork {
48-
if (network == null) {
49-
synchronized(EyepetizerNetwork::class.java) {
50-
if (network == null) {
51-
network = EyepetizerNetwork()
52-
}
53-
}
54-
}
55-
return network!!
45+
@Volatile
46+
private var INSTANCE: EyepetizerNetwork? = null
47+
48+
fun getInstance(): EyepetizerNetwork = INSTANCE ?: synchronized(this) {
49+
INSTANCE ?: EyepetizerNetwork()
5650
}
5751
}
5852
}

0 commit comments

Comments
 (0)