From 70976bc47a62dd454f6a6064da80db661e1cf6f5 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Mon, 15 Sep 2025 23:34:33 -0600 Subject: [PATCH] Fixed swipe actions and more widgets --- .../ClimbingActivityWidget.swift | 6 ++--- .../UserInterfaceState.xcuserstate | Bin 65136 -> 65136 bytes .../Views/Detail/SessionDetailView.swift | 24 ++++++++++-------- ios/SessionStatusLive/SessionStatusLive.swift | 8 +++--- .../SessionStatusLiveLiveActivity.swift | 8 +++--- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/ios/ClimbingActivityWidget/ClimbingActivityWidget.swift b/ios/ClimbingActivityWidget/ClimbingActivityWidget.swift index 29d8b12..32ccc37 100644 --- a/ios/ClimbingActivityWidget/ClimbingActivityWidget.swift +++ b/ios/ClimbingActivityWidget/ClimbingActivityWidget.swift @@ -30,7 +30,7 @@ struct ClimbingActivityWidget: Widget { } DynamicIslandExpandedRegion(.bottom) { HStack { - Label("\(context.state.totalAttempts)", systemImage: "flame") + Label("\(context.state.totalAttempts)", systemImage: "hand.raised.fill") Spacer() Label("\(context.state.completedProblems)", systemImage: "checkmark.circle") Spacer() @@ -71,8 +71,8 @@ struct LiveActivityView: View { .font(.caption) .foregroundColor(.secondary) HStack { - Image(systemName: "flame.fill") - .foregroundColor(.orange) + Image(systemName: "hand.raised.fill") + .foregroundColor(.green) Text("\(context.state.totalAttempts)") .font(.title3) .fontWeight(.semibold) diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index b948fda7b13ab38b98db7c34d4f8a8fe02397aba..df7d83899b2560449a4ab97aa124ab2f71bd3d7e 100644 GIT binary patch delta 2303 zcmZWqYfu$s7~Xx?!#R7-Sq_>ah>Azek_$~Avh`G1&)9m4AxIp=^c;G~|SIV0OzxJs@HPQ#g$nMujXi3#;^nyYSsFEQpTj3Jscv2Dnt zj5>}!mpF+F#*_2#H5XbBKDeL;)a&*9Hn^ykt2flB`R;6wE76nTTJ6eD%g9YHT<-D| z%y4-!3$l7{x}on;hM8ETaaKtOc)d=SN5#UHTgI|cD+Y>Q!Z#BBV3$o(1?MnrKnu%e zJFRUkrYeM+5N@08?9Y2;ZcK%!$yKCJpP2s%Ht` ztoqfc7SnAM`5r~;l9=XQg!d4hOLFpU#!pFg5ac8LO*NqFDRI=#4}`zd__F_aGM*KXF5gHKgLl{2a8TP1vpm&2lzygBa z10Mks*6`~5AHn1c`V%e0rzKFuAq0jp#SQ#Pz3)Qjh_)7UPtIZP1t(KyCdq|`*%?dL z6u9zdg@jzTe!VVs{41Yti@UNrKcqZGZ8I_!7V|Hm$|wRctOe#&OC?bw`Q&P2y%7j^tRI!;- z3AKc?1+awS)M24MA~VA1l{p>v!15Y>lcNvJj?mRCx(DDPkjpGua!|{STHY)sor`b< z!rNJNmgej?aR!#dID`5eHUo`7b*C%c<2K_QirkF%4e~A`?`=2bopNWhPP|26Crcyt ze~RIgeSE7L>A5uM+UHQms#O4(l+a{Z&Z4TB8s? zgK%h3w~BS7H5yf{GF1tn%7UU!mAeG)b*ijES~1c(RxuT<*h(voSl#{2TZxrc3_fca zO3YrJ%i}i-4{%sbYbJ$yt(OV>Lreb`>$bL`z*Q9JU(ECZ2(KfYT1@AaUHm@XIiW8R z!aAoLV^cVXE&9nu4H%&=i7T1v-?G9yKYnk^32c-t217@qm~UNoiMFw}SZ2;P9=A{E zr%x=2Fq|bW+ALu>5u#X`wsNFaAa!RcwPmYBScULR>0?UOwym8?Td2~r`b%nr5w7mW z&9wQkSnqnenZh(8BzAo-wqH=D17)_9G1cD?{*Lfy87=l&*#c%_4iS=>3HvzCVIPm@ zGb(7f{RM;*5w5D}?zMfAJ)W7cPsUz*Gp0A*nV6+q^jl@e(%oUf5_{AS0&`985gCv7jiY7uCE{9N# z%OT+aB|1R76rwm zC<_(0lBeV=g-WrqRw+?brCQl#qy`##kNsxTPn#ZSyw*cAYgVnN)>{kJ!nFu(sP>$e hpiR+cX{lPSmZz0yWm<(+scqJ3v|8;AW6ZCy(ti+!OMn0X delta 2303 zcmZWqeNYtl8Qy)@<8JS6IW!5Ps02xzV96cj&^Dr)25}<{?W!X?ep8i!5Qzr=k|S` z_j#Z9z1z{Bq|u+G4_$OuFMUi$=o9*qzM_-VPiN?yIfEA4?1{=l%EQV+bAx^6MB7VG zUW!|8yc`unbsfe>QHQNBn#_tRS7m%-=EQyA6fYQ`y_mI{Ogbz?c2YM5v~RSbPU;cc zwPCGZi_b4AFRXgO=dWDi^A}f^tSl?_`?CB+z8YV}#O5pK1w{xKJam*k7b3gp7=22g zY2RuWwUI75PG3-;c1gReT`^kow>jt(3QyC3u~d(Z2@VRogeE#mU*|rRos*N5(Me~8 zmO&as&3V+!@y0rXaj8We0{<9qcxTyqU}xAo=`AGMl4z(&3#cW+T$i+AhTO-*ZYBoC z`q&x-kF60J>y|-d(AEUl4A{Ob_MYIFVcTzPt$f~qZI3o&o?2ETIs&%y+7J^@7!l7z z8*8&?-3`@~OzhXLXz_!#>k#=9L^`r9%^QH<1D?u`6@%sv*&P%XVB$4x$S`u#xSu~W z@w+iUVVQy_>~RzqE$7^@#ehoy_blh!L(AVM5QrE_w+Q=D(SeG;t*{7PfCmAmtc;Di zH9*+gVeespuy-iH$c7o7UinwD1;YLf3+ee8TrrN(eU@UQIABa(9h(pwv`-W~_DM95 z_f)o8RaIKFW=o~7VrfLgkn`-;1u0K_+Mae{UqwWHt`;IG$cG?$};rFNR~gk30S)9Oo8n77;R~F?uZ2 z;dh{Y2->wZd~Ul5*bV3|yiKLY-pf@!;wl+X`BmXjE5AHOtH$zk;36F!5RJ85$1w@; zF2JK}$8{W$jw#jwIHIt1T5Tj0N1Kz17vl~b&+%{88#79y4XuRV0r?q~TNWMbp;ZR0 z-V#f?9B>2R^%A~Id+AHqfujdI=v;5@Kxfnva%K3-?ASwfnZ^4WymR0kDC4~2Wu;aU zuQJ+ewUH+a9ytonQ~kVLjs~0txZXcLfgB^x#02uaJc)fs;-LQo+56;8as@hW+}MI{ zKX0_?TS2b_J$}<|bSBqx`gTt51%1t?U1EBlJRqOZt}r^us2_JPp96L9&ZXa+(|6DD zob=C|9(eP3^}2(LuylC{rNij*VC8LHF3LgPWrTM*jV@~|w^^fJWHe%p>bzg@IA?+O zpDOOv84oxc@V@GC73YJ_M5s7bt`daGs_Kx+4MyLGRJMRt3)<*rO9c}<`NYvRGGJyc-&bkv zyZq*)$xMn0Z8zEF6+EuQJA;~@psh)(%N*Ig!M-wm|KKqM!QurIv)>9dVops)|jq(P#ZwqyN%m&?E-89?AvymQj2R(NNG1$`h~Gj zi#Dfd`*4}A5e(bAonNN(IFqu*elM=SLuM2*yLVWs{{;LO;O}?vVK41iWtn(}Nja7Y z_k6+QPQmjf4ZPg_2;ifDn;XWncBi`2Efem?koEfwR@Raa?Pu;x<0F+YsWhbaGU%^x z`cD22<$eut-<>&zkDPhv^21px*l1_W(lU7-{-M6unQs}ZWKvZ~>MFR`AT_tiGWJKn z>wpDKa#+&6Ga(q?$u+Y}*+_539`Rf$&;@JyM_pW#OE7L*&cVMa%cLz|)! zl_X^@UUITuE|*_m{1gu}>h4nJDf0;vH882svY{Xlg$IK79P&|80n-5SN}GA>?_0@G zGI>5D$|CI#Oxo2cH&PE8X~Vpg8PqRJwt&)&ypHb4;Ca2tq_;xqCm{DFW#scnbePq$?r zFn&E8BP9t*<{QIRwyZdHk(#YOtFBP<)B?3o^{K^bwYptxP}|g3)z{S5)&1&Q>O1Ot z>TlH#)C*qOJKLM=P4#AbbG-RppLdn=T9 skI-ZE1U*@wtEcFX=;`_*JxgD#KdI;Hg?hDKqceTCe!!gjj|IyA0kWM;@Bjb+ diff --git a/ios/OpenClimb/Views/Detail/SessionDetailView.swift b/ios/OpenClimb/Views/Detail/SessionDetailView.swift index 8caee31..192be69 100644 --- a/ios/OpenClimb/Views/Detail/SessionDetailView.swift +++ b/ios/OpenClimb/Views/Detail/SessionDetailView.swift @@ -1,4 +1,3 @@ - import Combine import SwiftUI @@ -49,7 +48,8 @@ struct SessionDetailView: View { AttemptsSection( attemptsWithProblems: attemptsWithProblems, - attemptToDelete: $attemptToDelete) + attemptToDelete: $attemptToDelete, + editingAttempt: $editingAttempt) } else { Text("Session not found") .foregroundColor(.secondary) @@ -345,8 +345,8 @@ struct StatItem: View { struct AttemptsSection: View { let attemptsWithProblems: [(Attempt, Problem)] @Binding var attemptToDelete: Attempt? + @Binding var editingAttempt: Attempt? @EnvironmentObject var dataManager: ClimbingDataManager - @State private var editingAttempt: Attempt? var body: some View { VStack(alignment: .leading, spacing: 16) { @@ -376,13 +376,13 @@ struct AttemptsSection: View { .fill(.regularMaterial) ) } else { - LazyVStack(spacing: 12) { + List { ForEach(attemptsWithProblems.indices, id: \.self) { index in let (attempt, problem) = attemptsWithProblems[index] AttemptCard(attempt: attempt, problem: problem) - .background(.regularMaterial) - .cornerRadius(12) - .shadow(radius: 2) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + .listRowInsets(EdgeInsets(top: 6, leading: 0, bottom: 6, trailing: 0)) .swipeActions(edge: .trailing, allowsFullSwipe: true) { Button(role: .destructive) { // Add haptic feedback for delete action @@ -409,11 +409,12 @@ struct AttemptsSection: View { } } } + .listStyle(.plain) + .scrollDisabled(true) + .frame(height: CGFloat(attemptsWithProblems.count) * 120) } } - .sheet(item: $editingAttempt) { attempt in - EditAttemptView(attempt: attempt) - } + } } @@ -460,6 +461,9 @@ struct AttemptCard: View { } } .padding() + .background(.regularMaterial) + .cornerRadius(12) + .shadow(radius: 2) } } diff --git a/ios/SessionStatusLive/SessionStatusLive.swift b/ios/SessionStatusLive/SessionStatusLive.swift index 54cba42..28fc8b4 100644 --- a/ios/SessionStatusLive/SessionStatusLive.swift +++ b/ios/SessionStatusLive/SessionStatusLive.swift @@ -200,8 +200,8 @@ struct SmallWidgetView: View { // Main stats - weekly attempts and sessions VStack(spacing: 16) { HStack(spacing: 8) { - Image(systemName: "flame.fill") - .foregroundColor(.orange) + Image(systemName: "hand.raised.fill") + .foregroundColor(.green) .font(.title2) Text("\(entry.weeklyAttempts)") .font(.title) @@ -255,8 +255,8 @@ struct MediumWidgetView: View { HStack(spacing: 40) { VStack(spacing: 8) { HStack(spacing: 8) { - Image(systemName: "flame.fill") - .foregroundColor(.orange) + Image(systemName: "hand.raised.fill") + .foregroundColor(.green) .font(.title2) Text("\(entry.weeklyAttempts)") .font(.title) diff --git a/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift b/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift index 56c68b3..7daadc0 100644 --- a/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift +++ b/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift @@ -54,8 +54,8 @@ struct SessionStatusLiveLiveActivity: Widget { .fontWeight(.bold) .monospacedDigit() HStack(spacing: 4) { - Image(systemName: "flame.fill") - .foregroundColor(.orange) + Image(systemName: "hand.raised.fill") + .foregroundColor(.green) .font(.caption) Text("\(context.state.totalAttempts)") .font(.caption) @@ -129,8 +129,8 @@ struct LiveActivityView: View { HStack(spacing: 20) { VStack(alignment: .leading, spacing: 4) { HStack(spacing: 6) { - Image(systemName: "flame.fill") - .foregroundColor(.orange) + Image(systemName: "hand.raised.fill") + .foregroundColor(.green) .font(.title3) Text("\(context.state.totalAttempts)") .font(.title2)