diff --git a/app/src/main/java/com/gamedog/vididin/Constants.kt b/app/src/main/java/com/gamedog/vididin/Constants.kt index 223b4db..f0eb550 100644 --- a/app/src/main/java/com/gamedog/vididin/Constants.kt +++ b/app/src/main/java/com/gamedog/vididin/Constants.kt @@ -1,16 +1,23 @@ package com.gamedog.vididin -/** - * 描述:网络常量 - * - */ -const val URL_YOUTUBE_API = "https://www.googleapis.com" +object VidiConst { + /** + * 描述:网络常量 + * + */ + const val URL_YOUTUBE_API = "https://www.googleapis.com" -/** - * 描述:其他常量 - * - */ -const val XXXX = "xxx" \ No newline at end of file + /** + * 描述:其他常量 + * + */ + const val YOUTUBE_API_KEY = "AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY" + + + + + +} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt index 1b86aa9..8163e6b 100644 --- a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt +++ b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt @@ -1,7 +1,7 @@ package com.gamedog.vididin.feature.home.api - +import com.gamedog.vididin.VidiConst import com.gamedog.vididin.beans.ResYoutubeChannel import com.gamedog.vididin.beans.ResYoutubePlayList import retrofit2.http.GET @@ -17,7 +17,7 @@ interface YoutubeApi { @GET("/youtube/v3/channels") suspend fun getChannelList( @Query("part") part: String="snippet", - @Query("key") key: String="AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY", + @Query("key") key: String=VidiConst.YOUTUBE_API_KEY, @Query("channelId") channelId: String="UCbTLwN10NoCU4WDzLf1JMOA", @Query("videoEmbeddable") videoEmbeddable: Boolean=true, ): ResYoutubeChannel @@ -29,7 +29,7 @@ interface YoutubeApi { @GET("/youtube/v3/playlists") suspend fun getPlayList( @Query("part") part: String="snippet", - @Query("key") key: String="AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY", + @Query("key") key: String=VidiConst.YOUTUBE_API_KEY, @Query("channelId") channelId: String="UCbTLwN10NoCU4WDzLf1JMOA", ): ResYoutubePlayList @@ -37,7 +37,7 @@ interface YoutubeApi { @GET("/youtube/v3/playlistItems") suspend fun getVideoList1( @Query("part") part: String= URLEncoder.encode("id", "UTF-8"), - @Query("key") key: String="AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY", + @Query("key") key: String=VidiConst.YOUTUBE_API_KEY, @Query("playlistId") channelId: String="PLcVfz1-_0rj_KFKlQeW2ZJnWTSjgc-9Jp", @Query("videoEmbeddable") videoEmbeddable: Boolean=true, //@Query("pageToken") pageToken: String="" @@ -46,12 +46,12 @@ interface YoutubeApi { @GET("/youtube/v3/videos") suspend fun getVideoList( @Query("part") part: String= URLEncoder.encode("id", "UTF-8"), - @Query("key") key: String="AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY", + @Query("key") key: String= VidiConst.YOUTUBE_API_KEY, @Query("chart") chart: String="mostPopular", @Query("regionCode") regionCode: String="BR", - @Query("maxResults") maxResults: Int=10, + @Query("maxResults") maxResults: Int=3, @Query("videoEmbeddable") videoEmbeddable: Boolean=true, - //@Query("pageToken") pageToken: String="" + @Query("pageToken") pageToken: String="" ): ResYoutubePlayList diff --git a/app/src/main/java/com/gamedog/vididin/di/NetworkModule.kt b/app/src/main/java/com/gamedog/vididin/di/NetworkModule.kt index 75c6aea..9fc13d7 100644 --- a/app/src/main/java/com/gamedog/vididin/di/NetworkModule.kt +++ b/app/src/main/java/com/gamedog/vididin/di/NetworkModule.kt @@ -1,7 +1,8 @@ package com.gamedog.vididin.di -import com.gamedog.vididin.URL_YOUTUBE_API + +import com.gamedog.vididin.VidiConst.URL_YOUTUBE_API import com.gamedog.vididin.core.network.di.GlobalInterceptor import dagger.Module import dagger.Provides @@ -52,7 +53,6 @@ internal object NetworkModule { .callFactory { okhttpCallFactory.get().newCall(it) } .addConverterFactory( GsonConverterFactory.create() - //networkJson.asConverterFactory("application/json".toMediaType()), ) .build() } diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt index 9c3fd92..86e6f1a 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt @@ -8,7 +8,6 @@ import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks -import androidx.fragment.app.findFragment import androidx.fragment.app.viewModels import androidx.viewpager2.widget.ViewPager2 import com.ama.core.architecture.appBase.AppViewsFragment @@ -61,6 +60,15 @@ class HomeFragment : AppViewsFragment(), OnSwit setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position)) val curFragment: HomeItemFragment = mViewPagerAdapter.getFragmentByIndex(position) as HomeItemFragment curFragment.loadVideo() + + // load more + if (mViewPagerAdapter.itemCount > 0 && position == mViewPagerAdapter.itemCount - 2) { + // todo load more + } + } + + override fun onPageScrollStateChanged(state: Int) { + super.onPageScrollStateChanged(state) } }) diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt index 37abeb1..9f367f8 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt @@ -4,6 +4,7 @@ package com.gamedog.vididin.feature.home.repository import com.gamedog.vididin.feature.home.api.YoutubeApi import com.gamedog.vididin.main.fragments.home.YoutubeDataSource import retrofit2.Retrofit +import retrofit2.http.Query import javax.inject.Inject import javax.inject.Singleton @@ -16,7 +17,6 @@ class DefaultYoutubeDatasource @Inject constructor(retrofit: Retrofit) : Youtube override suspend fun getChannels( ) = shopApi.getChannelList() - override suspend fun getPlayList( - ) = shopApi.getVideoList() + override suspend fun getVideoList(pageToken: String?) = shopApi.getVideoList() } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeRepository.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeRepository.kt index d8b8c0b..bf2fd90 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeRepository.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeRepository.kt @@ -14,11 +14,13 @@ class DefaultYoutubeRepository @Inject constructor( private val network: YoutubeDataSource, ) : PageKeyedMemoryRefreshLoadMoreRepository(), YoutubeRepository { + var mRespPlayList : ResYoutubePlayList? = null + override suspend fun getVideoList( page: Int, size: Int ): ResYoutubePlayList { - return network.getPlayList() + return network.getVideoList(mRespPlayList?.nextPageToken) } override suspend fun getChannelList( @@ -32,7 +34,8 @@ class DefaultYoutubeRepository @Inject constructor( key: Int, pageSize: Int ): List? { - return getVideoList(key, pageSize).items + mRespPlayList = getVideoList(key, pageSize) + return mRespPlayList?.items } diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeDataSource.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeDataSource.kt index 185333d..0cfc1c0 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeDataSource.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeDataSource.kt @@ -6,5 +6,5 @@ import com.gamedog.vididin.beans.ResYoutubePlayList interface YoutubeDataSource { suspend fun getChannels(): ResYoutubeChannel - suspend fun getPlayList(): ResYoutubePlayList + suspend fun getVideoList(pageToken: String?): ResYoutubePlayList } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt index 4ca6e84..043aea0 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt @@ -17,7 +17,7 @@ class YoutubeViewModel @Inject constructor( ) : AppViewModel(), RefreshRepositoryOwner { override val uiStateInitialValue: YoutubeUiState = YoutubeUiState() - override val uiStateFlow: Flow = mRepository.result.map { listData -> + override val uiStateFlow: Flow = mRepository.dataListFlow.map { listData -> YoutubeUiState(playLists = listData) } diff --git a/core/architecture/src/main/java/com/ama/core/architecture/page/BaseMemoryRefreshLoadMoreRepository.kt b/core/architecture/src/main/java/com/ama/core/architecture/page/BaseMemoryRefreshLoadMoreRepository.kt index 1211578..a60f9a6 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/page/BaseMemoryRefreshLoadMoreRepository.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/page/BaseMemoryRefreshLoadMoreRepository.kt @@ -82,7 +82,7 @@ abstract class BaseMemoryRefreshLoadMoreRepository(priv } } - override val result: Flow?> = combine(getDataFlow, tempListFlow) { _, oldList -> + override val dataListFlow: Flow?> = combine(getDataFlow, tempListFlow) { _, oldList -> // 每一次数据,都有提交,因为getDataFlow,不管成功与失败,始终有值在发出。 oldList } diff --git a/core/architecture/src/main/java/com/ama/core/architecture/page/OnRepositoryRefreshLoadMoreListeners.kt b/core/architecture/src/main/java/com/ama/core/architecture/page/OnRepositoryRefreshLoadMoreListeners.kt index ac8b5ba..637b4cd 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/page/OnRepositoryRefreshLoadMoreListeners.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/page/OnRepositoryRefreshLoadMoreListeners.kt @@ -3,6 +3,9 @@ package com.ama.core.architecture.page interface OnRepositoryRefreshListener { + /** + * finish: the callback while 'refresh operation' over + */ fun refresh(finish: (() -> Unit)? = null) } diff --git a/core/architecture/src/main/java/com/ama/core/architecture/page/RefreshRepository.kt b/core/architecture/src/main/java/com/ama/core/architecture/page/RefreshRepository.kt index f7e0cfc..34a2548 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/page/RefreshRepository.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/page/RefreshRepository.kt @@ -7,11 +7,9 @@ import kotlinx.coroutines.flow.MutableStateFlow @Suppress("KDocUnresolvedReference") -// 刷新仓库 interface RefreshRepository : OnRepositoryRefreshListener { val loadState: MutableStateFlow - val result: Flow?> - //val resultBean: Flow + val dataListFlow: Flow?> }