feat(backup): page 2 pull-down triggers refresh instead of clean
Pull-to-refresh on page 2 reloads device storage and cleanup data, then calls statusService.refresh. Pages 0 and 1 retain backup and clean actions respectively. Co-Authored-By: Kutesir <kutesir@provoc.ug> Co-Authored-By: Sentry <sentry@provoc.ug>
This commit is contained in:
@@ -51,3 +51,4 @@ struct RootView: View {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -708,8 +708,13 @@ struct BackupView: View {
|
||||
private var pullZone: some View {
|
||||
let pct = min(pullProgress / 58, 1.0)
|
||||
let ready = pullProgress >= 58
|
||||
let pullLabel = ringPage == 0 ? "PULL TO BACK UP" : "PULL TO CLEAN"
|
||||
let releaseLabel = ringPage == 0 ? "RELEASE TO BACK UP" : "RELEASE TO CLEAN"
|
||||
let pullLabel: String
|
||||
let releaseLabel: String
|
||||
switch ringPage {
|
||||
case 0: pullLabel = "PULL TO BACK UP"; releaseLabel = "RELEASE TO BACK UP"
|
||||
case 1: pullLabel = "PULL TO CLEAN"; releaseLabel = "RELEASE TO CLEAN"
|
||||
default: pullLabel = "PULL TO REFRESH"; releaseLabel = "RELEASE TO REFRESH"
|
||||
}
|
||||
return VStack(spacing: 3) {
|
||||
Text("↓")
|
||||
.font(.system(size: 13))
|
||||
@@ -825,7 +830,11 @@ struct BackupView: View {
|
||||
withAnimation(.spring(response: 0.38, dampingFraction: 0.85)) { pullProgress = 0 }
|
||||
if fired {
|
||||
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
|
||||
if ringPage == 0 { triggerBackupViaPull() } else { triggerCleanViaPull() }
|
||||
switch ringPage {
|
||||
case 0: triggerBackupViaPull()
|
||||
case 1: triggerCleanViaPull()
|
||||
default: triggerRefreshViaPull()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -836,6 +845,14 @@ struct BackupView: View {
|
||||
if engine.job.status == .paused { engine.resume() } else { startBackup() }
|
||||
}
|
||||
|
||||
private func triggerRefreshViaPull() {
|
||||
rippleScale = 0.88; rippleOpacity = 0.4
|
||||
withAnimation(.easeOut(duration: 0.65)) { rippleScale = 1.35; rippleOpacity = 0 }
|
||||
loadDeviceStorage()
|
||||
loadCleanupData()
|
||||
statusService.refresh(force: true)
|
||||
}
|
||||
|
||||
private func triggerCleanViaPull() {
|
||||
rippleScale = 0.88; rippleOpacity = 0.6
|
||||
withAnimation(.easeOut(duration: 0.65)) { rippleScale = 1.35; rippleOpacity = 0 }
|
||||
|
||||
Reference in New Issue
Block a user