Skip to content

Commit 08ee1c7

Browse files
committed
[refactor] Reimplementing the RssConfigFragment.kt page using Compose
1 parent b175ec3 commit 08ee1c7

File tree

17 files changed

+257
-179
lines changed

17 files changed

+257
-179
lines changed

app/src/main/java/com/skyd/anivu/ext/PreferenceExt.kt

+12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ import com.skyd.anivu.model.preference.player.PlayerAutoPipPreference
3636
import com.skyd.anivu.model.preference.player.PlayerDoubleTapPreference
3737
import com.skyd.anivu.model.preference.player.PlayerShow85sButtonPreference
3838
import com.skyd.anivu.model.preference.player.PlayerShowScreenshotButtonPreference
39+
import com.skyd.anivu.model.preference.rss.ParseLinkTagAsEnclosurePreference
40+
import com.skyd.anivu.model.preference.rss.RssSyncBatteryNotLowConstraintPreference
41+
import com.skyd.anivu.model.preference.rss.RssSyncChargingConstraintPreference
42+
import com.skyd.anivu.model.preference.rss.RssSyncFrequencyPreference
43+
import com.skyd.anivu.model.preference.rss.RssSyncWifiConstraintPreference
3944
import com.skyd.anivu.model.preference.transmission.SeedingWhenCompletePreference
4045

4146
fun Preferences.toSettings(): Settings {
@@ -70,6 +75,13 @@ fun Preferences.toSettings(): Settings {
7075
hideEmptyDefault = HideEmptyDefaultPreference.fromPreferences(this),
7176
pickImageMethod = PickImageMethodPreference.fromPreferences(this),
7277

78+
// RSS
79+
rssSyncFrequency = RssSyncFrequencyPreference.fromPreferences(this),
80+
rssSyncWifiConstraint = RssSyncWifiConstraintPreference.fromPreferences(this),
81+
rssSyncChargingConstraint = RssSyncChargingConstraintPreference.fromPreferences(this),
82+
rssSyncBatteryNotLowConstraint = RssSyncBatteryNotLowConstraintPreference.fromPreferences(this),
83+
parseLinkTagAsEnclosure = ParseLinkTagAsEnclosurePreference.fromPreferences(this),
84+
7385
// Player
7486
playerDoubleTap = PlayerDoubleTapPreference.fromPreferences(this),
7587
playerShow85sButton = PlayerShow85sButtonPreference.fromPreferences(this),

app/src/main/java/com/skyd/anivu/model/preference/Settings.kt

+22
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ import com.skyd.anivu.model.preference.player.PlayerAutoPipPreference
4141
import com.skyd.anivu.model.preference.player.PlayerDoubleTapPreference
4242
import com.skyd.anivu.model.preference.player.PlayerShow85sButtonPreference
4343
import com.skyd.anivu.model.preference.player.PlayerShowScreenshotButtonPreference
44+
import com.skyd.anivu.model.preference.rss.ParseLinkTagAsEnclosurePreference
45+
import com.skyd.anivu.model.preference.rss.RssSyncBatteryNotLowConstraintPreference
46+
import com.skyd.anivu.model.preference.rss.RssSyncChargingConstraintPreference
47+
import com.skyd.anivu.model.preference.rss.RssSyncFrequencyPreference
48+
import com.skyd.anivu.model.preference.rss.RssSyncWifiConstraintPreference
4449
import com.skyd.anivu.model.preference.transmission.SeedingWhenCompletePreference
4550
import com.skyd.anivu.ui.local.LocalArticleItemMinWidth
4651
import com.skyd.anivu.ui.local.LocalArticleItemTonalElevation
@@ -63,11 +68,16 @@ import com.skyd.anivu.ui.local.LocalIgnoreUpdateVersion
6368
import com.skyd.anivu.ui.local.LocalMediaLibLocation
6469
import com.skyd.anivu.ui.local.LocalNavigationBarLabel
6570
import com.skyd.anivu.ui.local.LocalOpmlExportDir
71+
import com.skyd.anivu.ui.local.LocalParseLinkTagAsEnclosure
6672
import com.skyd.anivu.ui.local.LocalPickImageMethod
6773
import com.skyd.anivu.ui.local.LocalPlayerAutoPip
6874
import com.skyd.anivu.ui.local.LocalPlayerDoubleTap
6975
import com.skyd.anivu.ui.local.LocalPlayerShow85sButton
7076
import com.skyd.anivu.ui.local.LocalPlayerShowScreenshotButton
77+
import com.skyd.anivu.ui.local.LocalRssSyncBatteryNotLowConstraint
78+
import com.skyd.anivu.ui.local.LocalRssSyncChargingConstraint
79+
import com.skyd.anivu.ui.local.LocalRssSyncFrequency
80+
import com.skyd.anivu.ui.local.LocalRssSyncWifiConstraint
7181
import com.skyd.anivu.ui.local.LocalSearchItemMinWidth
7282
import com.skyd.anivu.ui.local.LocalSearchListTonalElevation
7383
import com.skyd.anivu.ui.local.LocalSearchTopBarTonalElevation
@@ -108,6 +118,12 @@ data class Settings(
108118
val articleSwipeRightAction: String = ArticleSwipeRightActionPreference.default,
109119
val hideEmptyDefault: Boolean = HideEmptyDefaultPreference.default,
110120
val pickImageMethod: String = PickImageMethodPreference.default,
121+
// RSS
122+
val rssSyncFrequency: Long = RssSyncFrequencyPreference.default,
123+
val rssSyncWifiConstraint: Boolean = RssSyncWifiConstraintPreference.default,
124+
val rssSyncChargingConstraint: Boolean = RssSyncChargingConstraintPreference.default,
125+
val rssSyncBatteryNotLowConstraint: Boolean = RssSyncBatteryNotLowConstraintPreference.default,
126+
val parseLinkTagAsEnclosure: Boolean = ParseLinkTagAsEnclosurePreference.default,
111127
// Player
112128
val playerDoubleTap: String = PlayerDoubleTapPreference.default,
113129
val playerShow85sButton: Boolean = PlayerShow85sButtonPreference.default,
@@ -160,6 +176,12 @@ fun SettingsProvider(
160176
LocalArticleSwipeRightAction provides settings.articleSwipeRightAction,
161177
LocalHideEmptyDefault provides settings.hideEmptyDefault,
162178
LocalPickImageMethod provides settings.pickImageMethod,
179+
// rss
180+
LocalRssSyncFrequency provides settings.rssSyncFrequency,
181+
LocalRssSyncWifiConstraint provides settings.rssSyncWifiConstraint,
182+
LocalRssSyncChargingConstraint provides settings.rssSyncChargingConstraint,
183+
LocalRssSyncBatteryNotLowConstraint provides settings.rssSyncBatteryNotLowConstraint,
184+
LocalParseLinkTagAsEnclosure provides settings.parseLinkTagAsEnclosure,
163185
// Player
164186
LocalPlayerDoubleTap provides settings.playerDoubleTap,
165187
LocalPlayerShow85sButton provides settings.playerShow85sButton,

app/src/main/java/com/skyd/anivu/ui/fragment/MainFragment.kt

+11
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import androidx.compose.runtime.Composable
4949
import androidx.compose.runtime.getValue
5050
import androidx.compose.runtime.mutableStateOf
5151
import androidx.compose.runtime.remember
52+
import androidx.compose.runtime.saveable.rememberSaveable
5253
import androidx.compose.runtime.setValue
5354
import androidx.compose.ui.Alignment
5455
import androidx.compose.ui.Modifier
@@ -67,6 +68,7 @@ import com.skyd.anivu.R
6768
import com.skyd.anivu.base.BaseComposeFragment
6869
import com.skyd.anivu.ext.isCompact
6970
import com.skyd.anivu.model.preference.appearance.NavigationBarLabelPreference
71+
import com.skyd.anivu.ui.fragment.about.update.UpdateDialog
7072
import com.skyd.anivu.ui.fragment.feed.FEED_SCREEN_ROUTE
7173
import com.skyd.anivu.ui.fragment.feed.FeedScreen
7274
import com.skyd.anivu.ui.fragment.media.MEDIA_SCREEN_ROUTE
@@ -126,6 +128,15 @@ class MainFragment : BaseComposeFragment() {
126128
)
127129
}
128130
}
131+
132+
var openUpdateDialog by rememberSaveable { mutableStateOf(true) }
133+
if (openUpdateDialog) {
134+
UpdateDialog(
135+
silence = true,
136+
onClosed = { openUpdateDialog = false },
137+
onError = { openUpdateDialog = false },
138+
)
139+
}
129140
}
130141
}
131142

app/src/main/java/com/skyd/anivu/ui/fragment/about/update/UpdateDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ private fun NewerDialog(
132132
icon = { Icon(imageVector = Icons.Outlined.Update, contentDescription = null) },
133133
title = { Text(text = stringResource(R.string.update_newer)) },
134134
selectable = false,
135+
scrollable = false,
135136
text = {
136137
Column {
137138
Column(
@@ -145,7 +146,7 @@ private fun NewerDialog(
145146
R.string.update_newer_text,
146147
updateBean!!.name,
147148
updateBean.publishedAt,
148-
updateBean.assets.firstOrNull()?.downloadCount.toString(),
149+
updateBean.assets.sumOf { it.downloadCount ?: 0 }.toString(),
149150
)
150151
)
151152
}

app/src/main/java/com/skyd/anivu/ui/fragment/about/update/UpdateViewModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class UpdateViewModel @Inject constructor(private var updateRepo: UpdateReposito
7575
return merge(
7676
filterIsInstance<UpdateIntent.CheckUpdate>().flatMapConcat {
7777
updateRepo.checkUpdate().map { data ->
78-
if (appContext.getAppVersionCode() < data.tagName.toLongOrDefault(0L)) {
78+
if (true/*appContext.getAppVersionCode() < data.tagName.toLongOrDefault(0L)*/) {
7979
val date = SimpleDateFormat(
8080
"yyyy-MM-dd'T'HH:mm:ss'Z'",
8181
Locale.getDefault()

app/src/main/java/com/skyd/anivu/ui/fragment/settings/SettingsFragment.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fun SettingsScreen() {
7777
item {
7878
BaseSettingsItem(
7979
icon = rememberVectorPainter(Icons.Outlined.RssFeed),
80-
text = stringResource(id = R.string.rss_config_fragment_name),
80+
text = stringResource(id = R.string.rss_config_screen_name),
8181
descriptionText = stringResource(id = R.string.rss_config_fragment_description),
8282
onClick = { navController.navigate(R.id.action_to_rss_config_fragment) }
8383
)

0 commit comments

Comments
 (0)