Skip to content
This repository was archived by the owner on Jul 18, 2026. It is now read-only.

Commit d2e3bf3

Browse files
authored
修复搜索页、deeplink等
未正确恢复高级搜索选项的问题; 详情页返回后搜索页布局异常的问题; deeplink行为,剪贴板读取到链接后打开的视频无法点击下面相关推荐的问题;
2 parents 72c0a62 + ed034c7 commit d2e3bf3

5 files changed

Lines changed: 66 additions & 26 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,6 @@
5959
android:exported="true"
6060
android:screenOrientation="portrait"
6161
tools:ignore="LockedOrientationActivity">
62-
<intent-filter android:autoVerify="true">
63-
<action android:name="android.intent.action.VIEW" />
64-
65-
<category android:name="android.intent.category.DEFAULT" />
66-
<category android:name="android.intent.category.BROWSABLE" />
67-
68-
<data android:scheme="http" />
69-
<data android:scheme="https" />
70-
<data android:host="hanime1.com" />
71-
<data android:host="hanime1.me" />
72-
<data android:path="/watch" />
73-
</intent-filter>
7462
</activity>
7563
<activity
7664
android:name=".ui.activity.MainActivity"
@@ -83,6 +71,18 @@
8371

8472
<category android:name="android.intent.category.LAUNCHER" />
8573
</intent-filter>
74+
<intent-filter android:autoVerify="true">
75+
<action android:name="android.intent.action.VIEW" />
76+
77+
<category android:name="android.intent.category.DEFAULT" />
78+
<category android:name="android.intent.category.BROWSABLE" />
79+
80+
<data android:scheme="http" />
81+
<data android:scheme="https" />
82+
<data android:host="hanime1.com" />
83+
<data android:host="hanime1.me" />
84+
<data android:path="/watch" />
85+
</intent-filter>
8686
</activity>
8787
<activity
8888
android:name=".ui.activity.SearchActivity"

app/src/main/java/com/yenaly/han1meviewer/ui/activity/MainActivity.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,22 @@ class MainActivity : YenalyActivity<ActivityMainBinding>(), DrawerListener, Tool
173173
hasAuthenticated = true
174174
initData(savedInstanceState)
175175
}
176+
handleDeeplinkIfNeeded(intent)
177+
}
178+
179+
override fun onNewIntent(intent: Intent) {
180+
super.onNewIntent(intent)
181+
setIntent(intent)
182+
handleDeeplinkIfNeeded(intent)
183+
}
184+
185+
private fun handleDeeplinkIfNeeded(intent: Intent) {
186+
Log.i("deeplink",intent.data.toString())
187+
if (intent.action == Intent.ACTION_VIEW) {
188+
val uri = intent.data ?: return
189+
val videoCode = uri.getQueryParameter("v") ?: return
190+
showVideoDetailFragment(videoCode)
191+
}
176192
}
177193
private fun removeAuthGuard() {
178194
val root = findViewById<ViewGroup>(R.id.dl_main) // 或者 R.id.root
@@ -422,7 +438,7 @@ class MainActivity : YenalyActivity<ActivityMainBinding>(), DrawerListener, Tool
422438
private fun showFindRelatedLinkSnackBar(videoCode: String) {
423439
showSnackBar(R.string.detect_ha1_related_link_in_clipboard, Snackbar.LENGTH_LONG) {
424440
setAction(R.string.enter) {
425-
startActivity<VideoActivity>(VIDEO_CODE to videoCode)
441+
showVideoDetailFragment(videoCode)
426442
}
427443
}
428444
}

app/src/main/java/com/yenaly/han1meviewer/ui/fragment/search/SearchFragment.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import androidx.core.view.WindowInsetsCompat
1313
import androidx.core.view.isGone
1414
import androidx.core.view.updateLayoutParams
1515
import androidx.core.view.updatePadding
16-
import androidx.fragment.app.activityViewModels
1716
import androidx.fragment.app.viewModels
1817
import androidx.lifecycle.Lifecycle
1918
import androidx.lifecycle.flowWithLifecycle
@@ -71,6 +70,7 @@ class SearchFragment : YenalyFragment<FragmentSearchBinding>(), StateLayoutMixin
7170

7271
private val searchAdapter by unsafeLazy { HanimeVideoRvAdapter() }
7372
private val historyAdapter by unsafeLazy { HanimeSearchHistoryRvAdapter() }
73+
private var hasInitAdvancedSearch = false
7474

7575
private val optionsPopupFragment by unsafeLazy { SearchOptionsPopupFragment() }
7676

@@ -104,16 +104,18 @@ class SearchFragment : YenalyFragment<FragmentSearchBinding>(), StateLayoutMixin
104104
override fun initData(savedInstanceState: Bundle?) {
105105
Log.i("getAdvancedSearchMap",arguments.toString())
106106
Log.i("getAdvancedSearchMap",getAdvancedSearchMap().toString())
107-
loadAdvancedSearch(getAdvancedSearchMap())
107+
if (!hasInitAdvancedSearch) {
108+
loadAdvancedSearch(getAdvancedSearchMap())
109+
hasInitAdvancedSearch = true
110+
}
108111
initSearchBar()
109112
initSubscription()
110113
binding.state.init()
111114
binding.searchRv.apply {
112-
if (layoutManager == null) {
113-
layoutManager = FixedGridLayoutManager(
114-
requireContext(), VideoCoverSize.Normal.videoInOneLine
115-
)
116-
}
115+
layoutManager = if (viewModel.searchFlow.value.isNotEmpty())
116+
viewModel.searchFlow.value.buildFlexibleGridLayoutManager()
117+
else
118+
FixedGridLayoutManager(requireContext(), VideoCoverSize.Normal.videoInOneLine)
117119
if (adapter == null) {
118120
adapter = searchAdapter
119121
}

app/src/main/java/com/yenaly/han1meviewer/ui/viewmodel/SearchViewModel.kt

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.yenaly.han1meviewer.ui.viewmodel
33
import android.app.Application
44
import android.util.Log
55
import android.util.SparseArray
6+
import androidx.lifecycle.SavedStateHandle
67
import androidx.lifecycle.viewModelScope
78
import com.yenaly.han1meviewer.logic.DatabaseRepo
89
import com.yenaly.han1meviewer.logic.NetworkRepo
@@ -27,17 +28,37 @@ import kotlinx.coroutines.launch
2728
* @author Yenaly Liew
2829
* @time 2022/06/13 013 22:29
2930
*/
30-
class SearchViewModel(application: Application) : YenalyViewModel(application) {
31+
class SearchViewModel(
32+
application: Application,
33+
private val state: SavedStateHandle
34+
) : YenalyViewModel(application) {
3135

3236
var page: Int = 1
3337
var query: String? = null
3438

3539
// START: Use in [ChildCommentPopupFragment.kt]
36-
var genre: String? = null
37-
var sort: String? = null
40+
var genre: String?
41+
get() = state["genre"]
42+
set(value) { state["genre"] = value }
43+
44+
var sort: String?
45+
get() = state["sort"]
46+
set(value) { state["sort"] = value }
47+
48+
var year: Int?
49+
get() = state["year"]
50+
set(value) { state["year"] = value }
51+
52+
var month: Int?
53+
get() = state["month"]
54+
set(value) { state["month"] = value }
55+
56+
57+
// var genre: String? = null
58+
// var sort: String? = null
3859
var broad: Boolean = false
39-
var year: Int? = null
40-
var month: Int? = null
60+
// var year: Int? = null
61+
// var month: Int? = null
4162
var duration: String? = null
4263

4364
var subscriptionBrand: String? = null

app/src/main/res/layout/fragment_page_list.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
android:id="@+id/coordinator"
1111
android:layout_width="match_parent"
1212
android:layout_height="match_parent"
13-
android:fitsSystemWindows="true">
13+
android:fitsSystemWindows="true"
14+
android:background="?attr/colorSurface" >
1415

1516
<com.google.android.material.appbar.AppBarLayout
1617
android:layout_width="match_parent"

0 commit comments

Comments
 (0)