From 92fec3f3b08f5738db6196b2e39249bc363e4d93 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 11 Dec 2025 19:00:55 -0500 Subject: [PATCH 1/5] trim new folder name --- BookPlayer/Library/ItemList/ItemListViewModel.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index bfe5316f..9e5bfe50 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -375,8 +375,14 @@ extension ItemListViewModel { func createFolder(with title: String, items: [String]? = nil, type: SimpleItemType) { Task { @MainActor in do { + let trimmedTitle = title.trimmingCharacters(in: .whitespacesAndNewlines) + + guard !trimmedTitle.isEmpty else { + return + } + let folder = try libraryService.createFolder( - with: title, + with: trimmedTitle, inside: libraryNode.folderRelativePath ) await syncService.scheduleUpload(items: [folder]) From 270071c26deac8304d6fab13a7630f5602af72ac Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 17 Dec 2025 06:29:33 -0500 Subject: [PATCH 2/5] MacOS: fix jellyfin and abs icons --- .../Contents.json | 2 +- .../audiobookshelf-icon.imageset/abs.svg | 31 ++++++++++++++++++ .../audiobookshelf-icon.png | Bin 19381 -> 0 bytes .../jellyfin-icon.imageset/Contents.json | 2 +- .../icon-transparent.png | Bin 37580 -> 0 bytes .../jellyfin-icon.imageset/jellyfin.svg | 1 + 6 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg delete mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/audiobookshelf-icon.png delete mode 100644 BookPlayer/Assets.xcassets/jellyfin-icon.imageset/icon-transparent.png create mode 100644 BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json index 069cdf4d..90b58dbe 100644 --- a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json +++ b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "audiobookshelf-icon.png", + "filename" : "abs.svg", "idiom" : "universal" } ], diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg new file mode 100644 index 00000000..54cb1849 --- /dev/null +++ b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg @@ -0,0 +1,31 @@ + + +bgAsset 6 + + + + + + + + + + + + \ No newline at end of file diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/audiobookshelf-icon.png b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/audiobookshelf-icon.png deleted file mode 100644 index 87fcee047eee99bcce0ca0e7285b901c9eb1e3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19381 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 aRGI=LWJ}W<``7=BN=`~ivP|44;Qs-4CV{#D diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json index da19810b..7385abcb 100644 --- a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json +++ b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "icon-transparent.png", + "filename" : "jellyfin.svg", "idiom" : "universal" } ], diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/icon-transparent.png b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/icon-transparent.png deleted file mode 100644 index 50c881b35d517fd748203142628645ef7610a1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37580 zcmeEtg!z^m#i8SqJ9 zo4z{mi^M@w;T6eP8#fAgbJ^@AQM6Xst;CA(H(zF8Ywe7^ILCt=O+`PAXqlp>@^y^H zx}(Kn#b6snwXiO|p1UN#KK}3Lf3XC%U%FC&5@F>R;T)xwDo!l({_Cu4`qsw@zOA)} zAt>}XLqe-UPhjoZazvFrNctx^NW0H4B@!jqDF$g08+Xd7^~d=7mYgxej{LU#qhs(> zgLp2R(rq6&C7yJP4MaUp0;08*83=8znJi=e#AcSc>Ur?q5PTt9raEo2A+;e+?k3=> zI2cE0n_!s~z!#+GyTD02A5ejON7qv#KOwEgOu}DubJI=^kGqGXov&{)zdFxo;rzgc zx?Qw3jUPGNvkzu2i-a?PuI_?7f5yZ_ina(@yH}w5m9;;v1-&%r@Nwc{nw>yRcH;BW z>1y0Z!r)7f%&N}*9p>`y?P9Y-`$rA|nat{P>Ye2ps0s=l5R! z_n$75+bJ=~Y;=u$lgERg7jiOgiN9<9zEuWi_{~Gs4})P3JsrErfo7bL%avSG&}CPUG>3>Fk2x;+Ojt}vyhl4uowa7Z zCo&;$dj71-;CA(6LNHZ#N(JRVAu@0?4pn8(rAJ~`bvnp5XBXIW2QrYOW5+iEVSK3l zZ0>+&pA`^7@p4K$x|uke>LT_5*xbt2*Km>W&yWWwnNIE|L4QZ)K0V(_@Xh zq~@?T1NI4?rrq;>S%Yogyy&)cx;wfdon4yJVoR5+FyhqqyC5D$PiQ3ggP0kf=go zDtn&E2K6F1s(*h@B-q3H9uFmPr^~NcJ(>hHs%03vj;Xrn^ZHd7i+1$3l>^zjFGLbf z&RvT|L5;yeyCCY6*!lgA3`RsXM)i8l-Re@|a{oJeHq$#|h6Q6R-R>VgsM^c(frt+u zj2Khk={TG$9GT>NA*k&eENDxP?CvMT-#tGv2t(o@)QXu*RTYgdQ~nb{#WTXO4^nu4 z<&1?Bah$mEUkmG8pHb zLOdVT{{8H#yjB|=S32`;X#W<-mkbI6Jzy)NL=~$wL%=osjmnkkhT)MeiQhXQr&EI2 z2-_D$3x(NgsB#X;f5xn?#aaW$9NlIsG(N7&r6J#R=6m$VKFlL)bw5X;&l0%*?7{8pkw<-C7vYH(9)kK~d z^s2nXTrt>s5^*lrPtEuEmD{hmtFNkxDR$zh+(lnk9=W+_4ur}hs6m%oen@~WJN7(P zb5t`w`ow8(d#ty<@zsqf3cbG<%f5Tu0wcIwN_$H3;GXF`$pcTKX3|q9f}!&>U#HdI z#XJhN53^&`dC*Ab8W6NTW)&ruqR;~wNCDN=-mxJ89aHTjOcaiwFspri-{t~a^qw(B z(KCj7aL<#Cd<}*rj%b}9!B3Bda-CO;=0d0l_#@@OsVkr<{)bc`DM29~yV7HWe5CfU zkIVGmQ4?$%%}~pkIBU$~hD?HIHvc!1z%*00v1glWt|i+@v&D+po8pASFUreK|BO(5 zlc8WXHN2fotK}Mf&{L5W)<&E2n6?+U#TU;fs9a*E$cY=cIzJWCL7vv=ssv?7ro=J7 zs@kfn{wwy70!QP0tg3^ye`zG!NPF^n&&n&khiRVy!3w(5Oz#SM^5Jh=&wBV>_t(&` zJ}!QFHAr&12=ouH9%`GlTAXtK$|o#~ppCNHWup7II3H!H9dwxvbjTj;CH32Q+J`lH zcmn$DbKe#8nPv8IMy23Bnvc^bhpL`GSI#d5m+BLx zr@X)}S<5_RQdG%e_qh7@KOY+8&0w?-!NhAm5!JEu%5JQklIjelS0fF2Hf^x1KP0xb zTV#AshU$u^CrbmUH)0ai?jHvI7}9=PBKSCJ5QxLfUT%yF>>XVmI#^ul(vqP0?G{PX zMILggmo`_3C(fbTY0$ah%;>JEO+R}L$C{wEnu+_E#h~QvW+ZUZY6W8u3@8i-)%DYZ z%HbdPq8JsJPq`Zv%4;eeW+ESexpu`TNZ~J9fdLW zKsMnG`KA$QCOp-_q}4F3-foiB)+#SlPbRkEQC7`lRh5xter<&RU$l?mDO)~y2)!_E zp*C>wg5^XDH`|BZIshg2GZ-ir2Vy*yxb&^y{F3+oJz@R}4OcT}`KbE)>Lb8Q9c8l0 zKl`B!TS;lCC!FG@AsL-*x}m4v9o` z2Z1Zct*j=%M=4)wQ{bepZvp=Os69DJ%{tDxUl}Smu@mxqkN!(!^S7%zc1${{xQ{C) zgkoG2;zjfzYF=LGDBXvYC?C3Tm|kdzV}mBmWV6n_+*jDP4?=TZRGg_mCJnei?`YTd z8K#=eRa<&o`IoRVQFFs(S*vxgZ|A*PE%+FT-Y+_N3k^PNe=}hytw#Ry4v?yTUJX#- z22U_9mHv6J?d9EPzrg;GvZYUQiJb(C>;I*v$6&lDX2@Su<+c^7e?*`{NdC(kShhJPdu13%*K6mWOyUVsb$@-te>TnpYsv#Fuu$oGI!&j!@nRN zyUpV0adL&#U(amlHJk_8%_NcX=12I)Laf11xRvGTI&%mk%9V_GY(x>Pbef0lg{b;z zU?T2gL4vX#R*_J2N)JJ1#@hb<_AtYN9kh)3l?Cd3EGg>NWFFJ+-PG{8jxz5S!Bm^C z=f1>`k-uFDmr7brO>R33?UySru9y8NxOb9Y!A-#y7sGwhn-0CD%`gTw$7ksrGF>KqK;GC1tVP5Fp*|q<^F)8oiknHav{x+GHr98~Q`gv)8 z7!44Y&SNpRyIGEA%fz%mjsqEO~5fd01j4ap!GEu-pd9yc%+@ zIAgWH3##ddFFg!9jB=vLdug9Nq)MdtcC2ugs!f;uSvb-)z(03uxSwRQ!;UfvEeN&= zZysRg9B(myS1m!@jP_*4+AP%hhKQFw7{E(DqoVj_OvtxYb(Gx`q(Oz1wqrv4_z`C} zGtogalkpF0#1!Rf4H52emF%n8#q}kKAse@0_>tqfgBMJ83p=;mxW`dw#4PP@5-8zW zQSy0N;LPI1MUKCzvQM8UY_7r5cF1B{9kU-w-}AmI(i)#?M8>sxVg^|!HK~^He9`;^ z_?DyDK#%Z<_F}y{tJI90u3cxdg2cuws@mOKxLj!gKbx5B9xFfG@z3p=<{xFCKUL-% z)3JzZkW+Tk@11U*j?K`kUTKFQ=zEu?CbbeOzZP958VKjRG8!Kh{-N74-hI+v^nrAP zPVE)N6gSdV%-v&bEU6!AShLe+S7RZ}`o-#kRw-fgB!dxhG6`cNiWvzJfobesc_zUo zR#jU|KTH;@{Cif!a^O|_vU_?$+Q@SDt)+?KO{Ym7azaGW4e9E4^32kc+yX(+$6saJN#wZvSR5APGCX3{0TbHN|34rMmJ+a6h2<(M>f-mBRN(7I{(}hcU zj{uZ$#R^T&De^RKy2ZXWqdlk^ae$33x&pYR1aAyN`qBGhdIke`-Yh?G<|#$- zOCz-?0FveQ1jdLiEF{Hdfh?{NP5c}AcOfd3G|dj^qXjE>kp=d(T--;$vCWt#A}br! zMO4GO6C*a&_&UN|&J}g5r&E_eL#5k|3H#l``z{91Q$(D_J1la=Ah&#_qskUQ3n!j24xsXduTSKiz74DV^&ghcr=tgD*-T(U+-DiRE5aI)aW}7tF&O`)%v0nNS*c9@{P!rI zHKluUu9>I9o}Cy)UdJ+1O4`u%<$nFvLyZ;cZ&9+g4dfnd214`K(3k^l>%x1}TXF62 zs&jX72ei^dzl+JFq1^OS63-V>HxKCKO-5(vT}6kb*D3=D$W@*nXNX*4&?=v*Srjh6 z%knPzH5zRrY1h-eLtu9Jn);@ZVFcfN=Z6HAU3AO_DCH-ed;*+xyy zaPH{T?npHdbSE+`2)S`g4zXh(%%R2&P{j63E3KJmGW?W6oBqA%luHhi6v@NN6Rp%C zoAdlYk&voi7wy_8vqii@i=ASq`%}snl_=TJ6JKD4?{L zFKR9J!_Zj+dvBrlAG7=Trvx39oO&CBm9-6XGL3x9+0s#%wTmV0Z76J5NxO)JYqaZ6fC!t_(L zbGqNkN^C12T9e!B;)2-i~1&T&PE#-IDH(O7tIw3 zo{wBRH15`=A_`(t(q&gm9QNXj3%aq%r|#56wA3O8Y2N*<=+Wt}u3)rV%S?jon7mH> z#h)W>r_xMo2(}HxS~ItY?`hd>8@X#B@L9+V>?ukFt~o@mDW<#oh-ub6Qt-#e)8tnG zlze)GjA`w!Dp|kpscq&+dQEiDJUB|PH_8u>O~T9bBB#h zVDTniX00WG@ttXhQcZmUPvDMC*b%=r@*Cw2TY80+3A;OK0vRzgt|}2!YO^>i%8qY> z(=I`O_T~@?hMxN->P}60?)d6j_p-N;WB(h?cW<8jJ~#?yv0-;eh6Vq$y6sAv0uf7aofMhP!rwPPPQwVgTvH84pRbES9^06jsl~u&m`VoI zqhj~^MHS}R`vbXpY3G!G_bu_tLV+TViZ^sNgeM=S%^DmYYP;WNRo5-Yy) zjXH9}k(!5W35~SnUS-e)0H|txwoPO+OK{)J_SwBglK6^64m8u_C4+|dI<8XEuB`C2 z>bzHkV86&+>3~$QXG6wSV;x&&GS-sf_?Y)_)Ep76jpHQ(z@839zzfr;v$efNrm{#i z3Xld72syGm$r>~uuu26{<}nAAH0F5pjva%v9-8jfEKD}6JqAu`;5dopITLzVB+c>l1j8+>gi5QKe8@!2 zC(dlH0p=a=O&83xB|_mnbh2nmRUEPqMk*Z}B@TK5+i6{ZaCV0#CzbBU@dc1i=T+1X zeY8T)*9x5k)pJ#7f?ETTJL(!s8Z_oPou-4L@kO1_nW#`q+qdTBWDN?OOgD|-2Gv_z zCwEAw?+EOIE>#i%C}ugfRmQDuPF;(Rc67$VG}pCc%c+E#k1Z7KP&Y8U=u^RN^^*J} zejMZ64mqXVVQ1qUPh9O}dHyJBHtaIdvYLbrTc@5R>&v12zml2dsva=x2z#yh&&$n+ zEAEl;u3;`%;T>P7&1$LiT&pApe?p(UnuSZ1 z-9z|)g51WM%vO=wyw+pE?k~3RJr6;`ut4~FsqZ4SWs-=Pj~*}<3sk#H%p?VRg7!@$ zZ1&EH)O_AigR&v$WMn52tN8S`3S_-NWWMa0A!%F@0pCK1XJzk^9eKl_L&oFe@LM!; z@Q$Rj^$Vx|fQjvEq<}F!xJ#kHV`(dU*Vp2A&rKehuXCILmM`$}G-InpY|T-r#fxm^ zl%^g=r75df81A*jgvrjU4Os_&1!vRi8}CTI)z}EL>YQrKxB(Oro^Ks(Cd@1RH{U$- zjiS`7nAq zN6;m>46H2GA{Y|{LCMFNmps+}tJr!YkF>F!{a)`n<5mK&JZgSm;Ql+@#kMp<*62eO?q` z7?L)04X5es1><(R$qf|@E9{JeK$Oeni9qFQo_^1I3Fh>q+n6X2M_{ilUL} zfg_LCHal!)Cs3XY^w<_g)B5=?iFqrqgCMBWv{B`{Bm2b_>D~@j&u{t?ZcXp(KDs7} zmw(UGzO92*%-tu`L1v^0f#0g5$u`Uc9h7t3*>>m~dDOuNRi#5H(@vjW-J#vyBa_=Yz1gBKZ%9TQq& zr~75c3QxU((3xjT*L*)j#EtHNzAJ^ohK*%kE5@+D6W5tnqR| z9)PAt*LFmiu{P&bUmTWsSR2kE9lZQSJ`xAPi6Y^c4g0W9_+J0m zgwpVjD9sL%)ePK6{!bmGG3OQ=9N9g|8M3Tqu-z?>X%!C^=yG0}eOQ8&S>IM4-{EN0 z$jLq}DB@Q-NWF!b5qo||Ar`4bma1f98z}MP3QAQ#KiUSy^vv$>PeNLmtXX@x*;&Q_ zC0~F=zEUKb`>-hKs~h8mMo!cC?sWOtsyj-}hU7O55LKm|j{MXPpaW}wNTq_@A!6Ev zxYX#i81YbQmg=>o8+b3@SdBhZu`ElbBLIe5FuHB2OaAk}JV^oE^g9b624ynX6243T z+V#sgh18F^gmAHUvYd-bK4#XLF5l{}!j_#eNJM__c(%aKCH&w3DrVlBB@iST7k`PE zaJ-rTo>w?ziw==vDpGFYH*?1ht0kQSHcd6?$0~w+Yk+3x}hXamg5*Ik~ z3#jF{M~YS$-sR~|wC=!fx(38+-XH0nBJ{9r>eiFOF90qiy>~00Gb7f%p07p`*w#<- zTbuFe9AyrT(KMosEhUFZN&r5%J*JdEUlAT~- zrF$0GcEor}g-|;9!9wVdDvBQDQ~6lb`%)@s%!RTrTv?_nz9)Ww_U!d=$w4h4=Hl() zl}A7tmVU*6hf-1&u?oHOtK+pb9T9h-a(%g@jIU@d(2jvrO03LBs}>Iq4sjA zO#75AI>t*_f}NmK+)^&es*Lhvv}BluZFqHondC1t1DATdI=9xt0G*U9Vqh>P0kRLT4Zz(f_^$eWk*V@2 zbbaZdFLc%qdhy|vqUQtnYVLfz~PsIHFtFST1935lv4`xkc z>zenqNXYt^&j~`OlzDwruS@1nFqq1W(c|mHDxWDpUYI3|lOz1b&cY>CUrX)imP_Gi z!IMd)rHknOpQow0EWvhNc=|5SVrP-^Qzl|QD4+{~b#ROKNH7smJ+{p?y6?&DZ}dq&Hl zUBJZin94F|Lx)Ai$=R5=)tC~OtK~xaKs6x&A4WA~ZW$eq*Ze2@=1KQiE%&AniUtV< zZXoizh;+TmZ=sDAb;bXz?Uku0oyeO!8ZotZUFN`iz_uNNshducl7n7kp&vzQA+8dO z@&hS$Z6Jpt$O1jT!Y&sOMuN$RK-(CnZwRj!z*u|ic3Bc z>yFvACpdB*RAdTTkAnvtM1zvRr$Dpg>v{9^Sm%`Hh3!ZhmX&2d#xw8Beb+>;xZbDL zPhEWTt10tBfbg?7cXg*t;OO)M|6tZg`?tgKF@?GzkP{qg{8vj&t26qAXVr0ZM_+qJ0rtKUJkxjKDMX~KuF7sKmv z60rY|nUe36JPfgZ+Ls+5$-HJ+)vRr;`KpGw2zuh=e7E``HU{nBYB$mSQ!RV+^ObDQ zD;sm~J0Ou#VC@qA1ncte|7q2?>uf)slhgPH<7_~97X?p{eHgRZ)2@%>-;m@Nfm0!t zWyWO$8_2>c;;D%4y4!((?USP}O#gnIZa!raoS2xPrJtAQjHw6qX0PIebgebpYncV~ zYwYo14l7L5G$(5@C}UI8+5qR?`)b&>WKymC7Umuur+yL2wgt`q&Jn|5hdC=r?oXL- zs=c(p?%p-uaz93880&guX?^}JkQwdZ7@&l|LDR;O1XL)WUc_}r<=gPK5Ip}KLA!01 zribx~1qV5bEKtVU+I zMVM^8SdQAi8NQp6eRzhA#?elA7JsuK(o6S$3U_Vma1(=?=IKWUUd;%P{}Ry`ZJ@^U zJ1_V&q_5K}FeBGdF%$+_&(-4<(e-H4bxgSd6oV|@O77!_c~a%TU0LoIp99@&f4`qwJ5UJJk4*cgeg5{( zr+TzqkyWh#!u~j>dvOmSP&nbLZ=Wr@BFN5v!G}Cq&|?ojky>lFKmo>mDc_2-Lb)Mw zA{Np^6#Iu=px599{TJ2%`=}EMzwU0iRb0UW$uN6xwXEb*4y?4o4IEH_`)C04$t7(1 z>c5Q1wJgSf75;snZFsP_QNtmR3t?vsC&_QI4?|02WNe#+ar6*|&-QO#<|mwz5_$%C zcW#$IV^@!dU}GzjD9#+vk! z?%((pf;c*0keiRP190^|?%H100v+4`y zKw`fAERVH2cvfHuXf{lk1rwZ{@E4OY4l={U2Zk^5fGl+63q>wd?Fg0E51G}OgBRYJ za`9|+r|R4hIoMx9m?BN(vsPVhk6{gk!{W*=W)n<*pj@3NR)@VuxbGFmz_Xu?STU@L zM%(yX1Sc=W4r*W(dz5D!2lmt!0wlGnTl}snk9pEJ{g6;kxl3hi_wB{0OE0yt12Fl< zCJ|1-z&TrSqSf5Z;>IGG@|%La%JzresHneOw9DjW7#|IX*``})(bTjaBar= z!Ec-hNv5Reni!u)Dm7$ts`hz8H!q+eaRV#s6a(xv$2?PgL7O!ebz!E5>gDwoj-1u0 z=>t9KTB?Wk{|=xopKs)zj%go$?4`@dVDLDeGLN+bQZq0-?95-CoI=r3>sXk&pMg>Wu9!Er`p&&p7#JY?^%CW?HF!I?YCp=SpNp82*)|#a zs&ah=#Eu0%OMvNDDANWVwrwHlDh8tSG6?xfYVe`Amh8S1O_%KG6-~~HcjNOq9(Cg9 z(a3z}eGwrnTj}1zJcr8GvhRjA37Sje>FJN>$%rxfXU^&Zkl~i)MjM(+Ka1wcV->IA z5e7v|Q`LKIpQuR+FD>8Ig1g=MGGUCoj9+})^GPSRBe+YlKk%Odi^2B? z5G9#pV2+0b2gE@;WU(nu()w?`O)r-eg&&}u{&!F&_^}x>diph#RD`&zgPJUxj9!3w&G52x-3jsgxS1K)9jX9f*?+8_1;xG&8il5GZ>q216Cca%6%T+ z!8t%BNrYwK^gCEu zN&TSf=h?=kT2*CV36~Qo6y4bGouLLKv+|!j10cJTo=HV-Mw|b)=#+H>6)+ZZ#CyMv zIB@oNWUc_0I<||N-Wg;=c()D~^jO7}4nC*ZV8U3vvdp{_VYH%sSj(qZt!s|1FFk^DxU=jp{H=4O6$)?2Kz+GLR#-+=jPLECzfis$Rr+{5@<86RsnV}YY!^hxnJDChjOBlY6I%spQ3xgsPYWoZtnfJzX06{ z=iI$7Dtq(`V5CfUJ)~@kmTB24k0v}KGh=(jX5^;d;GbhLZpi*r6W&B`+3{4TWUf+P z0D!@7y;(EZyfZ5&2i4>p>sX;7?lzXWS{SSYJ%z5a8FnnN8#+16ZP8afUvd91Tuv7( z6ha|lrI7m>d57u7i%7KNCRYo4b=+OUQbGcBJ~A;$ys#^i76^3CU!@Pe$>bk5J&@`n z?)ctO>~3RZPeKE+Mkao27S^Y?%h|u zY=@0zlKV9Kx2z_>{`EBRtABQyRK%unl(4^O3^w0f)X^;cAC3^+ya0cqWKhO=OVKma+< z$}OM;mAB>L^5?uhn4?wimyrbP(Fmt|vw%2Ov zhkEK*aVE?i5dZ3;7bT1BkB+?iQkK%SLMzl{k!ROj>L)l)t9>!!m8=6+cEIG3O6WxY zuGLcXXp0AFSy^)crr?iMx{*|VsneMUo>6LrDCY%k`Z2fEOy;}CoQ$)t3}6fFav#U{ zU48PE>`|i?J8L?bt0W7rwEA8qG#XnMI^Mf*Y=$S~!jC`jwppFbES#Mi%H`U)9SQkr`lMNuA zoB}?^Bz7$~o~&y_;IG61=-ybV_wC9)kFgM)i@jW!?7B@-w@zU4erk_AWl?>}Z>d>9 zl?5#pqB@(83NOC~3E&9gajHI&hiZh6}+uD}e6 zZ#*KpqCcG7RH04=kZF;{s>R&U@x0(}aqHZLPx6*a&O?~#%X1tq8drg4z={S02Bao7&1Tkm)%O3U;K44HSdQ;=`XV(Cu&lBXt<^mxsAiT5XA6|rM{|NrtiPGlcADrm zK5{0Z5@2|9Jla!NKVhQEJJH zAsg976<$gB)K7TWINhm`hZP31ImabPtNsuO1~)_Xt~LN5&$;paKz!dfG!klEcgRjj7x3aUUJMY+BpOhtdV=esfS(^%~j>- zhuz*a6YL+ciqj(D{!^cpR1lwz8a+U6#k^*wTXMi`+P?89#>l#G-UNdIzd*rOk1Yp%wb$JmqZ!(&WQp3p@ zDACsJNNx&rs~zos1!0uj%2R3mwO^xNmne(wsQ( z0FtP*VJ}q#(Q1gTCvu@KAbB@{kdo>8FFT|oR1>LA6mt$B=IZL0AH4S(JB;e)(3E@P zwomZC$|&>Lhi6NRJ6~IXM@_Of(tX<#XE*+$ykIlH43(Ab!2n$Q<~c6NSb`(#qW%$h zsB`wBLmQYNRch^FbLx*$rC2u zouV@41)TzY>7(?Lei~r@%_%2YC(da~*;w^Mg3FV#o&fgUuw5_L{3TdmB!IpU#l0g( z^tkN}8;3Li`$>1Xz8l@;%N{kCBYhheiN?*d3x6`3TSyVI%GF_i-l(i9rv=9-mA#%| zPo~V9BEQM6t*V((IR|u>9y!Xt*;@)w(m#G?I04A5CN|s%@Fg7D8>pZY<}k4O2+ zrp34P*WS^Ag!Sst_6X~!#|6RXBMao`GM&{}#FBkW%PatcF(}{mpo`M8KjsEvL_c>5 z_%6I<#mRA*Qr?3(dj$YzHhBgI!{>kr;(kSu#k3wNm!-TZKhK!1;|T$@_~L<(*crK& z@f4q*`(wWBJmD~Sb&0}RzRqW_?4DX`1pV8)Mqd*q#E)K!=zpX7*Qro{sboH$B$vr#~~z``v5z%9X#R ztAgoTr0a!{2a_ji;P6JN-&PGH?3m?|6qo{EeHL&Ri0qu=CuZ|v;UY+k%g>#Cub!jq zS1UoT7A!w|7GUrbXu6)oI@H%-qmXuwiBE7+eK62*{XaleeIaJ}Xlr~hcAgtJz}`Bo z@iQl0|0=5wH(f#kIoku}J8pc`j^k2GIK>Ssu8AnyNX*>U*`;$`yG>&)6_kSeSe~q} zZ(1S5eklK*D4}HX?>vNb3^TWsjGiR16F9I{YWe5u%Pz%r(lM1oQ<@dsf>Qq{jygHG zkI@dVpu)=HfjS(8TU9$z$jCr-IvSGzvYR-Vos$ZIu0f@&ny$t_ZZC zfXG&9x5|gJrRG|fR6mc5{j;}(1$L9CGGj?!{o?JL2X$^L>JfASMrB0k=#?>pfys+J z>xD-b2IMdCJ!OX?)sRt91xy}a+wEqb1tVJc z5{%Dw8D5l6*apW$dRxco5&W=7T#5Y*Nn_59$A518f*e@7F#?~(Xs3LMB9ybi^l&AW zlgNX_+Q+$Sakg#w@zfy=%6TSK)vi*1mbj_s8?1+giy}^hU~t6aGGjKIC*+p__GjiS zwNIJrg=vuO*pCcqzE8X}Y#-RyaBAEk@TEbO#h5@=slw9hz1N6U6V?Q}67NLMr}!bk zKJC+YUtPBinjNwcUzsXj-xn2f705CcdvBusSu)=nmQa`TaiMDY%WGXyUhi~)nh0jc zp{t??C|YV<61jFK`?pLs0P_+49N^-6yD4#RP$0dgLaqOF=wZ>JJ46;mZ|ViZg@Kq@ z0x}4{R<(!QNiVxT5MBv)$l9W28M$6+VP#8u<^s`Qi%^7}5%W(9LTjn=xS2j?_WC3g z=yD7Hz`Tg;N6Xq@GdLV`{^Eyyd8YcQ10pZ^V6t3Ay{t7u*yNw_^&#KA-IJ!dF#T1> zH1;2s@-1gC%HU<(RqY=q0N0jK03^{my;!YSV3&zV+UNhNF+|$)%VQlLHeAabFEm3* zW2m`Ow^5sW$r4CMP?Zcoxqzj#UWo}DSvG4(z5!vXS^m4!xh`X+i!|&X$K$l(mp3s6 zx1473GJr8tW(olAE;s88!D85X%vJQj9ZUMAey{a^9WEcgJrOT|Q+pcdjPJxHcdf*g zLx>fFug34Ovpv;Q*-u-pzQMLpO~$WOsOFa{sSH%uw(ogJ+Yz$!4-OX7kNA;tD# zi+1m_Fye<6IP+Kir(=b<8kD`&pZr>F9j`MwOgK* zWT*FtyFvTM!C~D-Jjs&}t%84EWN-oS#trB3E~~nKd~Y`OpzKrB)&VNrSwV+SM0c5) zj_Isi^?3C{F}vO zU{4;(1o?EU412o6MRu-bP&ovf&YA$?b-WhS`+wH=UX_}IPT`*&nC>3dYHjhoHkb>R zw9oXv$$c*t08@F6$YUyPVyC>bPP5jvy>lc;P4CEI#KSR=tF%J%%fwM#AsbSt*f{0T zBv%3emFM~rz@0hhygKR&#=hwN&bM?3O0}z6LS(DFMA71mNXdvH%vXf30*w3NtFRH2 zz$uW+f|v$ihs=^9aj8qh>o??b#3IDy+vEJ;}dai8;Js`gXWLI)4A z{9TeNj;6ruTLalhf6~)*N`IOy%58*4=0mz*`XSuU)SBZ?+A~6jtaW~geb^LvM%-B; znK+m+u9T2UcN^~Y40y(6N&fzo=mlQY5JTD$&EOND4Yqq&*^Tr=2S#bn$99-j@mEUdL?&O;-0jWWe`n-CBvi* z@neRNAfBj_3VUoDrE&FhJJ?*$@z~i`iRyMu7)}T)LopNA~%T4%#ST z3rnYYO-6G>0Iq$0-fONn!9j#jAkD0O6%8i|a?S)meOFR`CS_f$3ArNE_NL+#VaT<< zB{$kJ9Bd|UvRC_b`iGma5tkN3QLb#TOLOk_QPSYB{YG=eF8VM#Ps_US<3#p)Y9+JF zbDbxE1nwNn0GDtdC37_0FNam*=D+8&TMK(EQYB2u%XL4U40>$+;Wi982;2f#CQGGX z#_1B)#Fi-0{pZ+62VI}A?$b27#`Ww$bsOgIbQvPTOqB+1*;4>E=O0TQz3)h?h@{e{ zjisazwcW0+7fLGHiB{^h_n0M}IQ_cy+2fZN+X=o4qw1Qd}y+;hyDh%4UTY#ULF48du}SYiJt( zhA7>mO&O)VkzdYwTr9fCZ)@O!o@N_2C56MWy^3k(W?BjW$0X?W7F$x#+}{vVAJW1q zg6WI|D%s78cIblKH({LP+W&wN`~dKOl)`|(_c+3Mp5khDa1Z0Q8b8|15MUifsMH|; zWe?{HGo%W21arKMHgIv6I8N|2zh!+=sFY}0OdRe*>`?zy7;u9+?Z&6a0KtVn8psM4 z00P=j&H+L|zf4iTnIE_~^GP7Bhw5VgT>bws_1#fTFVEX50$veOQBbN45D-vWkSd}g zC8E-ls?wzQ8j8S0RGQKuNRbYbNKfck2)#pqB!m`v=nxXim++@#dEc~*l(Qb&Ipu|V_urYjhQems4FGxzDxBD=wgj5t;lb)TyLY2sP=21b9?|m)+ zU#xdcip*;37&SV&8Y3mYR;>lsPP^r=kg)v}C$n5SWWS$=B3eu4R9u#sfpx>*lL%CM*g&dvd;qF)1JnvHmw(0f&N$vTYFmVm z$JN!tWlh%>#WfadRT^EI4%y>!pEIw#W6Ci~VVx*iv`i~B`3uzff&;G8zy_pXuEpt~ z_*vIqHhbnMOVkN&d_vjJ-Yg+^xr)Dd9`!@%ghxmYFb9yU+XpX2vJ3xowcC%^cmBb< z1RXzZ=G0G#EtgYPgu)yAww=AsgX4Eo2Vtx6nCIICjop6$H4AZ$G`(FQy4fNocR+qv zN!y*HJS(04+!%92avsSP+vwFREz(q_?&djK6x|5d3G&3;+@8ePkoREvzS2IhKLbG` zzJVXJh4WQ=rtO#jCVZb(ZXBi8$6Hq-B(CUw>5Ju?IZp{uoPF5}7WW9bl@9W&w`Q0;&E zK_>dV{wgQ^IyNr#Hbl6=tf!ux^Xwk+W@UgAzMQ5%Q~Q^QL>N0s>M`cpfq-+90U@6c zs*+f6LWL44_bi%3ukTdsITarz?UsqlCQfC8ds!k^$_H;E?2bOLQU9T&q4;~P0pMdI zC-gqK#a-X4vo{1cI8;jN(a@*m9;zqcpYFb|cnZ|rM@b~s_KD0>4U-_RO~WVpW7%au zOL^gPHi6_ZbLX}MR^Tq)v+cI14E@hH%3K79=bui#RMhKUxQ5*hKAE#ICr^meS@bYV z0dV9Zwy{4MK*JW(zN$OC1nJGcj4>KMY*pn zY1mOx=IVade~v16V!XGk0uIls*Z_w1zNY^tzWr<6RL* z!Rat?H9BrC?5e^n{iL5h(VOcgY4g-Jc)wMOUHgtz%5GT3q6(hJOHyqzygd z+f^ZF5ySQ0ZMYs3xG~EhxKn+^O?jjKo*R=>q=3NDnpRzMkK_{aU*_`D*$5FAtSwr@ zbu$(GNbuTUogA64ol-&z8ETrOFZ57;P9 zH{wUDdOc5%k2CCdT)fXf;U||gP4Sk~V?O9NN3;px&^Z0($p5s+F^MaELiLn8i`qkV zLr?~wV82aQe>+0Kv7GXc#^REWsnY9&k1+LQR>aU1kH@u!zaJ(iFavpLN)EeM6m0!- zDX_@I$t`YfD`2vmGF&6Ns`;XJ?qj!0ZUTU(^?WC@tigd&`kf z1K0i`u-22LfcWYbmm96WHBUg$w)srh=KZut)^cE>)a3B!BO~9xcBvQ5r@Jz(7y&5Z zt>E546fmV)Hu?VYC4?+qE&QLn6XZ#;XMaKMaLsXBvZITbv_i3nu=)#&3y^>}d-kI1 z>CA@?V)ceMM&4&n`#c-1UccA+kW0OXVWw=?C1@-uw|C=5O;*Q^$oswjCx?s@|D zvPIh2sz`{F=k+5llve%vHhZdF_CE9>w@GgA>)|T|X>!{`#+up9#`TJiv@$@wTD~}i zqqysnzd1T6eiOY0w2{~7h!oIsKwgRc*X-rmH2N3sd;S0_C-po)!l( z)nj3T5nK3AZpQ{EWA4IVRf{!dpf;~MLw5hcU*dIb(YubgR4p_i)@Ns9CooZg2(N7vmxIwfwp*{It_Vgxp_)o6?u&osY-J(0873tK3Y| z5?CeaD%9k>Dv)^V_pF#8RcNZ_@G4>eL9%sC*<9)Anh0)wTcpdt>0G7ego539ZB`rP!b=!Ysjg*CdfEdO5Xd~VHn^J(kr zXAijr95>0m6{k+B-aq#UZcy7upcN0%%7=zIf`>USMwN$nDfEklJU-cc?P`0@gNy&( zzxw6hPIPtmCJnUsD_TrPccZrhOa2-?TAamek^^?=%epoyq@{@c0D=f)be-k9wmMJQ zKq2z&+mis~dM}ag`rA@Uq52~$!s;wku(8IqOV}P(NIqO4t0+C`FV#5lsIF?!3Ek$^ zvkfY=hbi9Pb<(i*w3ZUsR{y=y%=LbO*anWE&yL#qCox@84M&~(JiQ>FIP?L z^Zv2f#%I2xmwv}(TQNVWxT-$~oai1lY#Vdn421cv8qoOomujr#P2xrUOjyMSam@Ss zME{*#buf1c^vs9Al>}Q3nr2W)^ zTl6Ce$8M+!%>!<9I%V(c=sz{vI-{M9y~5=%^1-R!YwZQWwN007oC5N@_FTII`Kd#C z)|x;nv69u^7yUdXmZ0(fnDb$5)UMj=$CU3TWc2e!#k@1m=ajW@*l-eJMpYq^$uv>xJz1@qc%N=zPuV(rX}(11`AhI zUihSt`{=}&tBDvkKa=BR(z_K;OMWopvO;6pH%XSMvn#o`A%&L5CF0XfWH)-Z!N?3n z8A64_APsCG@k9&MG_{9FV|VUwU%s5`{}}mAsLRtH;fh_XS-u3@%QAja*28cWP&MJD?Ockox<>1*_NMqV_h2DKBt6-(aR!v2|YX=h-Lgia;_% zR&Lt>s9{7^fyuagH5T6|=a+IZ5RGz+dlgeWs`vEt37Am1ATU*h@*DB)(A4-_G{Mx1 zx8I;E4*0_JW}mpzD#47ymmB7mIvp|&R#v;;NZBQIK%-3~lxlnR=06KPh9xgEIv>m_ zn2+1fMRcf`jo3+B5!+S|ezLRGEvElYxpyS%*DLs?6U7VPi{jy+oJ8^zbcKjs9y3(w zwed?Yuq!{7My=J4>O}sS0fL=(vC0}*at0`<8U8!g4WYkW! zlh@dfO(cSX&%Clf^wsHJN3o+DpYe^Ibt$%kRtaxwCPr|-OO{XY)*CpvQK_}2^l;-u ziH1__Sm3V;4fhHX=*t9B8;9SeWUpV13xH!A;3Bydpz2k%Y~p*MBE2kj~cU|{qSIja(U;}FG(J(W^V78 ztUjGi{w7-}yRBdEMaQp?XY;v?ij6X^D7FkKiU>KvwAoH*J_p9hLoGBGsSR| zHy7Jg1oa$V7Q?_z9D26+5vsF-@TVcC> zxCO1=GNSgtt6$&G!+MqDEw`w(o2W=#l&pu(0O2Mo=@JZ9vr6yxEYR*b_X^;|ewm|GQQ zIHrF8EdW2K=@ zQ0*hn4yXvZQDp$*8xN0cJf^w91TP#m?xd0Rc{c-Zj6w#(tycW(0x|S$a$v& zh1?LlWv;qM$fhbyppJ^ekZgR75b(t+QSo`T$1;c@AFQBszK+Jd0_a}k@ z=hI<^{O_p3gOt2*7hUYNSKz4X1%6qZ9?_tBAt^B+cQgO#OK~qiXz^qv` zM1&3AekFYo2yDza5+#z1)SYt`G?l-u%m0>0hSxBi+KkLZ8 zv_0~soSQ{(XA13!fkht_<}gdz!Y}w2zMPt3wszLHP>s663HHvSGIRBMoTF6QoSRI; zPb5-@V+}9eXh^*uWKI*XvX60$NeRq0qepc6w?m8K$)(#FF$7ubBGzFc-qGSY!^`_~ zElzA5Zw}Q;f!@{gwe5^K?{8tHrop@|=QnM}<(e&RW=fkYUu3lflsI4B^F!{0Hf>Ek zW%v32T_-QhvH_rw;@_5H2eA+p{+iTR{wFThUOO!gxz}P}^X1jiRMi6B9KvsMM=L%P z8q>CFL#`DkyV)Wp_O<4E%=(IHO*0b9sP48YSI{xV>&){@!jRFGq#0AEvfosnhsbnu z?}Oi8Bf1V+q8;PjsTQ5!%t>@vM|Cav64DLv+y2&O;KJ#g-I@5My+YJi<~E5q4b2MQ zgrT`n4%P3sHT0aYl*LIIO6v%C0~N9dtN z2In_ZM~d6T*|WPI(dA$;^$Go6BkQAtjO#*Q2Eu0$ngJZ`|#fOLsl!RIj^fRu^97obt33vb4TzFUOB2b0}hsSTZKOLwA zli#)?)xu(DzjxbwPvS|$=tSz)!JTqbb?VL`i}hu_BGg@7NT;{WrS=+F?? z2ZQqkL6!Lmp+nwJx%J%9-g&xWJA9yPQc4}c;IsRvW%GSv&SbhW_E#U$dRR70?1@#gtIh+hkD&b@&`fQ=UH}5cF>gwovPy4CgnyL$`PAE*d#W4u@21 zg2;Y9?Hd}a?#yrbm=dQR27eMLzk%Z9`bNU3WLWj(cX}YNHK|X^cBSm zPJn_9105}eY~dU#4SroU7(beSt$SAxQE)Rn;x=TIjx*2|mmgRjx^BXI2!qm@8Y1YRqF7)gMxl=VX_X?)7}}6MZ8e0i`Op^ zCQ?^!E)Sz`YfM7qx@2pX2off@_Eu|fe4q85B*&+u7x(N`d!3#CH|Sa}gisfwfz*^l z#U#1K87m3uIaoQat!-x=WWB{%EWL-jgxYsv79Qx{lSNrqU8w{uP>uO&RZvq4+vaoH zxLGK=!4NFn=u2t{a0)K-f|}LWKO9~xsTfK*b4t#eY1GB%VfjSYy}l*6f%E~rP2+|AXO-X! za-3`<7W;U^-Wwq5mw#9A#!aR6qgx!AZgvH9aPwcLnD3`p1gRrOhMAE*ess|h)ss+>b zdngjb7T**PyUJrA<#YPEz(4BJ>)X`6wk z#=Kg`>OeJ;p5U9pzd1Issd$5dws54pbsw|%VMbDzUAh=0_tl3L%_Mjy!0;f_R_+Z| zhZL%mTcgJYGSC};C~HQ)W1|;dU2!F_*f?Xu1I(7XY0=*_^GzrBNN+0E*3npK{K4TC zh`xCn{C>xZ#P;%Gc z`(`%b?sRojt;!@HJ>aJsX_G$3A6+-Kzof%*FGk+DYB7Z$O)dWE5- zaRHu8OWdx14E2q7$m%kFU$)zRMMW87U)gh$7td~3^odv2VY%(*n=ix-KRhyEP6jC# zV|Kph5vN$PoUO~eqT!lB+}RGLR&UUzuJWFB-Xun{glPIQH}x#$3{=H?FCQCq`|u#7 zWqCVIY@Nq-PYIhcihr44CrRLO6s9}X(!Wk5ukcC#X5g#e{TV)g=~k$`^YQjyV#!H9 zqxZ~!#`qy@yB%fz@t*=*J=?kjRJ2{5a0n>7*F z#z{eUC=yZ9aPzv-^(ms;hn#c!)pgeHH^P1N%keYGbKg^B7!i4TZ z*-7$$wUI7LhPVnz!)XOxsdAS(+jY3@M6_$C>|9TD&#MlKxQ9&Ffg#^w?VHPib3t2V zg`szHHmZIS2TeM8qZ3bcQVS(kE~h9*8c#LEEe!2;1+Dn)t^+qr7oW%o(vE#eJ-clx z#ny+(UB~M6eOjjzQ~w}^#)fu#w+Y^+?pwlJpZ)7- z)(c*t53AE26}RZkkR@DWuGBp4JV)H6K)6CLieoHh`!mZ`64T;G- zVp>s*S)iw4Bot=^{TOSajO}|p-RI0W3-Zb(+19@a#!AOXi6#y2hZAVbTb~aOFhM+2 zR1VT%Ux(A&f8gnMu&_GZKk)=ypgP;K%1|5&t$DU*Q3pzZeQ#k`@ykzzP3ED-sKBAP z#@%N1-I*e}$tc9cztJrEr1Il64heC1X`KtId?$S;;+qL(!lMno{{bA}sxIVYmfcYE zd*rH2UuVzwx>XN7)QBD5>sIjErcXTLSiHlw{Mwy&s!Yvt%vUi9u5H?=P}{rpu~y}E z88v4uFog)|=c%U#aY-0!#E|(mXS|Dq}647&8v^&#AZveeo6M#Z;bblENzcj)(EBo6N_VTrq$(UOInYIsB4b()|>gfV} zj@Hsm^JN4E+WfY9%{7Tbv;w0h!zsFkfkZ}%Q^%<>X4=k$dB2gUxkdq)MFXw$UvAJC z=ZWX{a4rQICuE=@`qrhn24R*1ozS3Af{3C7upERS`>m-3HZ7erR4R9Ozq4QN*Unb-BsHJy?L!PiCd={Z02~D&Qfq%%oFW%N^ z9}6ADdv^xh&-=%?CfWXb=RRb+m{qc5{K7-LL8^4kf`lw-XW5-Lgas6YoCNEt{!7aC zPND)OU+mFvWJRxmEcn}6lz~DTH=+Ju;xl&*n65bQ*SyQ|A+Vfrr{yK5>06a(A1!F# zwLmK9eUM|SvI95GsM`wD>6g0yMcvu$+qm0_Cl^s-%Ej^HS zGt_pxhveO3gDGB*7~dY9rr+;5_RN4{y7Qe%*nSsVDl<^L{*BLgoPu)>5KaB|^r-)Y zl5KUf()iEqlH=>l18$(Cxs`=^NpU>|#l@DnrA^P)7WaCI*LgB6#?wNdJTuO+IqhAu zfra&ht|97d8;ze2hPL{wlg?yB0JhN;F|O1VmU;GLnksHM1DLOy2qa|)mAW+Kqv6Cc z$V{F6?^inLjYw|6j^%A~%et8`1l`r+v+M51^uCNm{c(^1z(16S^D|S#98mR4Cw;e) zzuCpnACzVN5PF}e`8*reS@`;IyAI*tsuIKfQ39o$cxbTFlQ^l{+j`?i*-M_69gN{^ zW>pc{5}>@e=ohr{BYU)NOopilq|j@#YiEx)vgE|cf9(oUzE!zhCXkF#_Ejgvp z*G3HhTI$GsM0__i^I7q|$g9Tn&;DP76~=xwZyZ)v?_E+gH91P6P2(!_4_~uEc(Jy< zIts~xFmYUz!MY$M$hu2LWg;T;m|jc0eFL2tt@5o61;?O@>VP-2U%!L3lLk#ALKIs{ z==3bK;E;UOw34oqTgP3pxNOadg80Y3)okAgS~#2qGvt-hvEHfsW^+KgEzf*v<8mW! z_crIFlPfzn9K%&^SKwz1kT_Z(5M0q+EbVJct2lrr6~wi2N;Nr#E!$209@V@#(j@s_bT73erK)AZ#`f^nztl?`Jw=A2F{udIAWvcJB7X4%fMvyWNAoX-{27ZhH ztQO+loGZx>KUR>|vYeMA^fso}H?nvUaFD>tkjWk-)7oCuqbW|BsR%etMElDqBUurN zL|{0_IgPbfk3F00qxDGwKdo}hvUacY$FPdrmf!x7AUL_~k~`--K$ER29Z)BQaq0`d zQ}2r;vHkC+ZM@r|BEwTnWv^VGxH%z@19kY@DP_ZNRaXD~OvNh|tgDpWufM9+hSLIQ zoZHdQ+-&zorfn*Z@)AYPv2e3mT=;7GeKzpR1RIV{jk;!;>}CkTy67njGeElE!Q{+U z*^WP(yxMqu%m;BsV&tN+(~EyNcm&};1AQj+x6T1+oPF#EkL$V*-$BpwlQ}#a>$R5V zuO1WOnK4x7^41^Z-1rOHTptQivDUH7cr%6&#Uk>6bB!-Qqx^NJrY^AQAx#9oU-SN2 z&>Tka_)apqu9X#GtHKzy6QfDR&qh2}R(D6?D?lE-C-dsf~h_%lsawl9n-*z67^85$n(;S&Rp3 zuhucWgpS1$OwR^r{HvVx$kz$Sf105yD+ws7W{p>OwV+0z|5pH$#}u#M8|Rwdc;j~( zh};&HTq;xhAFjOY)7 zy%WlcFjxWP3!z(53J$yMjiV9iCqfiOFh9Ir=mW${A}NvlSX7D_o_->;X1b1i3E~oS zFK`w_TxLwGyZGqM@JbpboECu0$_FzPkr!TVuGn;6fEbYiWQ6tZl;3q$rnE5>6fsPH zSm_4`2K~V3-QzF7It)n$jfVtSc|F^DZ%hLU-jVBR5;Q2d#p`khG-n&)S?e?JaN?`Fy!7jS07x%5>%9K_ZMa+9r^d6!mjDJn)uT3NVR&qa zJ=Lt97WU~bW&{|C&bl)s+09pT#p}lRKJfv~5Xs8=fL{3bU1%Z6r7_1*3gylBuLUTC zo(uexVzx=&bOv?n44EQl57(mDJC_F!T85Va;G$p+A~T%w*{3;2R#$U`63Kp6$~H-x ziIP)2nDdHfc}=ddcpctALpCA}RFaNH7-sF3Glj3jtb!Yb&+~$vg3Vr^-R;bufcJf? z(dg%T`YI?!-Ae0#R+&4Dz)&J=nWw#|;G-rxF&ZblE3TFLlLRY&AH2EC$s;Rmi!?RY zTm?r+e_kIM>CgYR4V=n_6W2F}ZrUrMQ=o-I`}C-8hRo%>v)#KkQaFjW_c#_X<9a^E z%F!*pb2HEFSY@=GFt(lV6#_e;f&^_VYn#BeUpR>z&f~X=8R*mLx&kn7Wnlc7uqIX@ zB>hc<2`B+rIDRb9hCk?Ir&q_!;-eqIRf;6RAuqS`yFw7gnkfcO0^P{(!uzs&YoB2; zUqgC2IosyscTuFX!(y{oz z#|`QGLuTcxaOqM~*r%J5C{VCeh*->T01SHBH~s0g4gZdx1fz7AsCxqf2ryu?EV+_F zHrEfIvPfrU?tqBbgZg*t)-i(DggzzBMwJYMtNANi*wX>P^bTZnV}56Pol!dds%Vqr z>Hx}aXG3q=6C9!hzoxEQ{LBcl*)l+qhM`LAFK8u}n0WT7H@Nh3`EkC#&P$)<7W%=_ChFMLfsmjRu4s`z;J?inEf-B>ES?}^Tv-YT+Z zDD70CCdM%^5^)V2u$im;3X#S&Z4V#ext)a%qu_kC;gSJvmXou@?F5-=jstFXL*v{;555m%|mDQ<1TBuqIi zoLVpHWx~qF3^bxST9?239rmss?oDMhl;5S)DEsle|FOK?hht`I*hr_GIT;ru#L}Il z$uYHg*|6HLBye%V-6MVYdGt0hT?!9RZ9(x z)VYXNpCy4Le6LOq!%x7WVn;o%Fp} z#=-b@?_gBLcdX0H?#j$2DpxSu1;1?}vSd)Q3D5c_0 z*`m|O7*B^(YmGTBmmHoTpv6MwQ9s0#K4o9g- z%h%Aqu+G&_9QPCI{~oONbSBg`LS?zXy25KUG1W2#Dm#$}Iavl-wp37}=_KLlmCq(2{HFKZIu7>A zu>-cj>!iIyKdgAD+BVkr8GL%y`HMsA#ay5J?XHj*SDE46S0Ug+aw;6P_8yD~e((%r*ROGsmZ9i(SLt#= zo*JEIs6HIJ-}WXG(n`+dcqvvZ(IdLbg!NyI>Uk5oM zXINJh9TS}QH@<+hqqRcH%=wuJ!UPws9=E^h)Cl^>FNs3}bg~*KwL*OKzek{Ze{ryz zeA#+&VfKJsxq!l}JS^Oy2W9?+GvJ`&-)T=yNOqzp_*M{~W(2lJ;kAyR^r?;c8l7*R z9W2z)2`sp3058kg+s}H_NI~bBxVZq9SG=(+#~8~LgZJAb<(Fh9F%Z^6D8$lY)~7xx zjFlF6j~_Wnsf9?AT*|8n#5@x=8JWNBzGogq^zZasGSD7k1d+K}v@}YcZ$aVtYi6r$ zlFn$rO}s5S74ulMV^$rfnABC>WfV_c6hbdNjQe&=BXrDrW>uWFhZJZmTnIG&`DR9l z|Db0&abPLfpJyH1#9!<%t;;VpFi+$)t!KwJvW(^;cr{u^PO`k;wRm+L%W4r_QmE#i zgCXOr3zQe$SN1>fQv&NOx>^yc_=Hmrr;-$ytxu0L{_vmA9?JNvZ0DzPinWHU=$$yW zGm#AxQx$5Z7E2fTY4z-{^RxwsNhR|XtWSLfj|pkWet^BrvV05OwUPNZNs1&{_4u+k zuqZ>hAOT_%x^#Kk21CKy%Rf2kdv2!B(MkSYN0WRsc;ckb*%CaJ_FSvbYTXQ8xKftg z=@H*~b4Z^;QzvdB%n!ulCF1uUxQm(82a-)QcK<97rSUdBRzEmwOg(>wvHS#!by(S} zShKfz1pjH@%5_DS*pv8pfQCAtHIU$bsCuI~1moptO#v=@P0zvmr>b{-FO!|n8jn)( z?VvOOBswRjx8?$yv^_P#Q5rU-BW|@^g3bRGGLO;oo+%2BgeMKA_w)9$?{UmZq z+bLM^>A09b#Y*K6l#X~01e^wKG7rZ4DvS9Jb}>5sAL9Pecj*jw`X)WaZf*1o7I=B& zS}dxm7(UDAdiqPH73q*t7XAMyh3!N0tMFvX(w z4~my)+-5(WEL=Jyd5j;MhkvvAf&|U^;v*8yM2|`;CeI)|#l;eBzxtvIY>h6WIKqM@ zjLsuahb;W}Y*}r1K5uNakbh71Hg#T|hc6&ftWy{AQewN}{SUjipJm4!Ph7XAZwdI~ zn0$dr0F~uKcL}sU*3GkccsZaadq}iq?1k1d+p+V3&TnH)gju_nDGkr;bT79#m2xa4 zL)-XSO(V4Z{^Y7(+@0zrmo};MdzP3Vd}8Y{`*r2hEo+%T^ya^xWGx2msZW|C?~h5v z@7%ThpiTWyM(c9O9N6P>{!tzuF&7y#y5Y|YiYReWUq>s#rwkiioe}1T*{Y^4&9`g> zVyA|=a{A{OUmYVelcV>jM@B<{FE%K{t+)cdN0Z=Muv+rPQJ z@SSq-HZOlW#WtG8ee~JM=giMbj zV~RI`XVN!vrBeM@)!ky&o%**F&;IPRW^mz&{&0dBSY_)Y6X4ng;w1y_j6v_Q3tnjk zaV4)BJ9eZ70()pyaVLbo{mX7Z?gz3Qd;#Q1A7K9;6*RcI}dUaI`auF`C zq_#*!GD-Fo4gPI4xgGSmqBw|43#WybMe}>~&tMkGp+LiI9sHflmX{l45Jq<~8m|n1?e2UDc2o zI-#)`N6~<7ts>m%^llk(bMXN;bYgAALa9X3sAdw<18ca&7zek2KRC;wZkdxj-+jVR#s}BtWvTbi+{oB8A0O=ot-q{Py(nCNWG!6>MEHR)o3IKQOr6ZvWW)mW`1yg#{R;ECu1;dtAJW%^FB zXk@(fVqTtBk5izMwUL;u+DKl#fTN48XGG>3_=Am>N4q=j!J{*dhj>Ah|9xv2sf;OZ zVnJIhmN2-A_yiB6RdglQL3D0aLXk4_xHJQYVrPNMs8L*1oxSl`lTn3wUb8TWT*J&- zf0hz6E`XqzQVc7=&qN=#+(~=<1%O!u?Tvx&PcH*l{&nwdm^0#u&9%#WoH&(UEa4)fz&NLjZTX!CaK%=ri;-?2WORS;fvz z2V9Fhk5oCeR!XywF|Ffh=plWYI2amzmDNGy-U-{2b&OAB^iy=YW~Ys{Afp^^GHsH+ zN_$V8hX2M4V3e%`qpZTj-n%)&5l#h>fw;#Z+vbmZtgu1XE1`Vkuk)_|R%z@z4y8nu zB#tidc;m$yl&)7mD^5d9zJf^C^vuTi+jH%^*@Qs`d+{NIvgBh^riIJh3HuIe-pb@R z_x#iNvK(IwuZr8eYxh%4T_4&t8M^`6lRk9R4bdS;+H#A67yr((EIL((qfys^+f^eJ zzt56VpzGw)1tDLQ65e`=Zd;aZA-VSa%!QpN*~ZAuK~;kl0*zliCVwS-dG@kv_X5+( zFYasM*N=rIg5%C7p7A6W2%Gf$b8kg9;EkjlOnZo05kGm#jGrFg8ZJ}19e!WGt2drZ zBfLuEC*UTyYOiUcnkxY-(62wtD!=Q_(N^^n?2bDkqG#NKyg8Z+fJI4R&If_c^5yRv zFJE$?3~ykI*K=PUdxV=XLWme9y8K7HFa?nd29-MbOVXC8F~lbxq6i{e)sOu4KM_9f z+U;GR0XW2L9>!PsO)LXYwCuQb7i9GW?FPle^Ew~I>x0G=PSZAKFq!K?#@liL9G&iA zp8@V0XNqsUMpm+fjPN07?3xIVyqMNv3&aB0jGp>&^V>56d?YbQ%4$djpx>?c#H^#6 zD|^GNb^^kAnB>pZv{p(E{rNIVBN*)W#(tJzf2>LK*Cmt%I7K z=Nf&|#gS|A6bhY zcP17Fo&3)i(x+=v)N~^axozFJ4?+LS^QjlMf{$22z8UR|@o+uEv24K9&X#!E0j5Y~ zwB3fF1nop2M>{hAHqvl6e;tq)YTax}xQW!!OHCqUQ! z*wJz*OLx$P_O}VnzFl4Ib`32ic?Nl(W$8FWeF`?JldkzQVb){?)Tw@wKR0%awQ{hN~J|WY+d#-UDq&JWK~@v$vTB zt^@AG6+K+^%oRPxLJzctDC&$=YM2#vb+syTEc^FetqUmdHGB_=L+539)iS7_R6g4d zwfhki;MU2fAd-Pt_SfxwRFX^xoK)+d{-D&&($vsfj&QvLhy`qa(p8Cb+$6dI-pCasV^ye_3a_ zXGo}~CmL$`{JlQaWCYfeu6r3OyPB7gENbfX!k0ia9qx_a4yhO;3C2mh1FrWA+kKy$ zomThbmT3IALE_HGoumNY-I+0D91qwtTj>T^yHOjWTVg`L7N2t=JZce?(_v@?-{qm7 zu~q8uzs}&6YDo%B08B58(eiX1;7KsrqC22P1nSFvx2Nr<0mqJ=-_Urdsuu@8#OEFk z68TC$%z(OAO)GRFy?7>ugzhT>ge&VqS3f`-!c|$tBph*OR~G-xBWElD5tMS|3xF(> zkIB$3s6FsiO*ID(7dNgwC;pr<*Ej};z4d? zV~tZ_{aai_B`fmBC^~4>RhfF{J6j&3Lx`3f>gfAb=5KYId*k1!vR6B5nmG0AriqU# zC7B+68k98!HE@n`TOG|JdQOr_jJAsyUx1bh{rXzzJ~9C~Xd=_GI*l7KU0+?QYWZ|H z(~8WUB;CYzjvNv1|IX>m^wyM`?l4P#B(kO0pW8&r87}VNLO$BE2A&_q86o@ZlkYZV z{5n|p1+E-ny1vx8==vU+jiO#!=`Q=@Ib%CFHmE68F5mzV%4Vmxl8*~byTv&&xY}~$ z0Gh#;BBCW}5wNGPO(cS=EJ0K#7sl@{0$HHDxO>dVeRE$^x(RA&o@;QLQ`?ypPw9Nw z3w^~0q0b~@n6Q8VD|jeZ53p2RP}(?P)dui{<*ihz@5!Pb+kK36{%@XSSyW!*sn>3l zTKJetTKByzRj}Q9qc{~${Axy}OgWy`m<_%B*TJPr@fztRaD_qyJ1B?_a1TJMfLRu< zJjJF2IuR14s!j9}wH{Dmx*lXrF?P zU*&A5*em=eeItzx(_kINcB{n>Qd@`DGQ8W+;0WreRgN_#w%@^t zkM>n~2zp~xQFFm-l!XrFItNuEM6;;DYsygEpH==FeEZ?4qJf7m9w^oT5O}^ww7b#M zYhuS0qEJy$J?OCMU5+Na#?77HN6A5-3GXLzk%DBDi!EAeW%B+2ae}rhMaAohlb2Q; zITLfyT*N|^q6dc4?A7WAcgyDKmun8?zL-n8?Wi`skyWn-Y#r0>Zu@A{HSXHEkG-D3 zwds+5IxgOcwWE#|i*l-@Z4}@wu$#U;LJ}U)yraQmqw7oFNg$!vA>;?jJm)rq-#yNM z83JHAyN4yt+3V`5D>jhBH4^)&^?6xDYqqqq-^$@x=H|hmvL=bxAB|hwCc5FJ9)Jv? zk~A^>7BGL;SP`0T$iO5-i?MQoon~dTe&Rw>sOQo^mZoWx!~zrcuG!MS3cb1S5}R3} zcUoQWD{fFq5yqAtv^37ZVInxXC&-#NJ~8H17UgczF=9GTqTAX+tu))$^q4#95T2;j2w$%MfAV$KHU8{Y=ZDrN4!ov z;$Kb>d(c+MOeEbb<(rT#X!115U+zBAy3p?1hZ#Jw%3hmyNrL4n*5B8EU#L&-ZbXIy zi~f=(NES+5Y51efKl;;dJ!o-iv^XUJP;xKq_8L18vdyXiIL&CCs=RYD5!m!6l_Q|@ z{j-UuoGxQ3z~^xI_0koi9cTh7ti@b717#Y9?wWdspGNZd&ZbB#5!8_u9AIv(O#(q) zYKILloqI~BLcD92KMpgvCLvqYYsQSCi`PG?)y0kz9ry6`SPhx)9Kku-6x`fp7kM!Q zsnwXG-l5%xLk71!VKaweFZ5Ad&Q~fyrGWR3;&r}uGSlAtr6qp)SeKo2SxFTOp!&}F z&mS1uV8!Glq`%o&tL>d!IcU5q1!u&_fjs8CSKNxT3on%dy7zSgVT`)enc{%AW;Nkd zeolKk>;;*cU8{22wn6w{xyF}SrE?kB*k_q7b&R?~XLk-0Qo7w3F_xUs13H3VV^ZWJ zUjd*-@QhrTc@((#^9*-&DVVwt|Gw(M0+``+`RR2u)82Og>(-Ad7;UWIuDVgjmnMw0=vg_1Slp=v_cB&@Z)AEU<_vT?PygH@GV%zD+(3S&5Sn+C^LCSzyjuoR@n-T@+{hG=-zHPbk8-V8@CT$I|Q)B+- z^WgHJj?4g0%FZ$g&?8iy0?wsAaHnA<4lYps=xRH-WI)#7*`VrtU?flnm=(Gs+i&L* zh1Fj5GP8Q!19nE z_CfgtSRn6`HL|kF%)Wop*ZGzzM$o$a+?e^4v&MIYegq{AsoUU;`Cn#MESc*mkN+n|`C)Ag3U^nMwK6rcog1Z(2Ixy*Ry=5{a3Chb z%h7an!q&mVHS5K`j{-|pA}nj52xFP4YBA%DN-ApVEEo-enu+D!&kxg$c_AieRQ4)w zqTpHJmlVcPM#T;R7aQ&wAU>d|mK1OB8d|`_c#)$fE$jtpY+`XG0`UIWeuo8*ew$qM zR51=*_$r$GUvEC6Ro{-1xP8I-tBjSuwVQ84x?;C3q-%o6LshWJL1Rk>ll-5f1 zh}TIAQ-IEFdxEkPG2~`G$q#ykn);c{vRtyu$_d+^-B(DgBY(_KK7Z6(#}^P5vEEI5 zFuwWI*1qRDPn(pR$Z7>MDd<#@Zb3%(rajuB2H?e(ve@rM&(LjY59->1F`!*EYP%hAgtSMD7ite$};|Lkb4G$NnV2-lP!F$qU6_{MIN zIQ}=ayA0k{5exu4WWyMXeUPL*5dOabo5WFHj`P)8G}wc-k#;OKGS56E1Pn+QW;~>;61gd?g(imJC|Y?v&rPvssdm z7O;7y(OHx0KHC$P?M?%3gk=J@%_AQeZvVOaWq$q5kCq_U-ihAo+bA7#{8z1B?~I@G zW43vGa(#Gg!#U-$JuBx{1@MB!pa0&;_5n``FJgP=>mRZYcn_7Ht>VkT>AKVY`0Lf5xg+;^!_SWB zA14m`>;IlCwRv_=4Ct`-MXi6!W6dpM?iaf)_{GDzt$pX&g3EI25|%BIob+wNmVTeF zDTz~nbuP=hC&zRC14kh)Z$0j|aEs%*<-SoeY*lxhbi*EW-}(D7VBZe0TZ{gszx#c; zw)e7|L?P(TJdsy_fIB?Fv8sFV)^EZH`sFtvkhkdXD(X<=L0b z@8|K@Uj?3nbGvuJl-X~>I__UFn|U><|FV4T+SBujz8_b$O?~EVyG1qbvd~WbsfU*D zk+h5Zd{LEu&5w6Nrc&oTz*m?)k}A7*e}7)pid$a{w#54Eo6Wjy_3W~V*}GD9pU&B} z`~9P3u_8oc5K;sZ`zmjk-MJkI|iI~It>akgEsRy|K~28yX?Kun>hJtt<7>-Cq#L)Hzb~H z6aBH_PTSIih-Zi2NlnYVakfqMZBkJDO<;TEcWcm;*;AGT?DJcfs-|0f(`e?joxg#^ z$*np(TYMHyJ9#)YZJ&>??&ewgtL;B*Ru_*e22M&y0dqdXlrwj}|4Z=NY*!dH|0c`l zgrv)_g0mX=Tl0i{?OeIoRDHR8gLOVQo>beJ({&oio%B0pW?RZEkzKyieoi>476?qk zz*+B0sf#DApStDR-D%MeR;#X^`ub+TKCextYHPXf&i{Jg+N>>6i94Jc*A{Nynpm6? z`QqTMeT@lkrQ-M29G0K9w(bLP8sNfZ&`ksk6ZdZ1nD8o!m&Nqzuix&?os*VSSy+bb z&2x<4jtw^Zmy+9bhRtm0&4;}QZ?GRyn4#b)_G`jvc5`|2DN7P&JMNCZbVQcBk$tw) zw(BahH~nm%|JyR#>))GckJ+NtbK{?VD=TU9bP0l+XkK;%y96 diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg new file mode 100644 index 00000000..5c75f1c0 --- /dev/null +++ b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg @@ -0,0 +1 @@ + \ No newline at end of file From 757d5e2666fd5a831e5a35403dbdc24e3b2afdc0 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 17 Dec 2025 06:49:25 -0500 Subject: [PATCH 3/5] use folder details instead of unknown author --- Shared/Services/PlaybackService.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 17d91f36..e368b9c0 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -260,7 +260,7 @@ public final class PlaybackService: PlaybackServiceProtocol { return PlayableItem( title: folder.title, - author: chapters.first?.author ?? "voiceover_unknown_author".localized, + author: chapters.first?.author ?? folder.details, chapters: chapters, currentTime: folder.currentTime, duration: duration ?? folder.duration, From 3ef2d01124b4492f859414471de54a938ca7ba36 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 17 Dec 2025 21:30:18 -0500 Subject: [PATCH 4/5] use author for bound books in now playing --- BookPlayer/Player/PlayerManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 0fb6e32b..207d4724 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -590,7 +590,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.nowPlayingInfo[MPMediaItemPropertyTitle] = chapter.title /// If the chapter title is the same as the current item, show the author instead - if chapter.title == currentItem.title { + if currentItem.isBoundBook || chapter.title == currentItem.title { self.nowPlayingInfo[MPMediaItemPropertyArtist] = currentItem.author } else { self.nowPlayingInfo[MPMediaItemPropertyArtist] = currentItem.title From 9124ed1dbbc825abc7b75fc55011e419a01ef734 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 17 Dec 2025 21:36:33 -0500 Subject: [PATCH 5/5] fix tip jar always using non consumable options --- .../Settings/Sections/SettingsTipView.swift | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Settings/Sections/SettingsTipView.swift b/BookPlayer/Settings/Sections/SettingsTipView.swift index 48ee17d1..61d7c4df 100644 --- a/BookPlayer/Settings/Sections/SettingsTipView.swift +++ b/BookPlayer/Settings/Sections/SettingsTipView.swift @@ -19,9 +19,26 @@ struct SettingsTipView: View { @State private var loadProductTask: Task<(), Error>? @EnvironmentObject private var theme: ThemeViewModel @Environment(\.loadingState) var loadingState + @Environment(\.accountService) var accountService let purchaseCompleted: () -> Void + /// Whether this is the user's first donation (uses non-consumable) or a repeat donation (uses consumable) + private var isFirstDonation: Bool { + return accountService.getAccount()?.donationMade != true + } + + /// Returns the appropriate product ID based on donation history + private var productId: String { + if isFirstDonation { + // First time donation uses non-consumable + return tipOption.rawValue + } else { + // Subsequent donations use consumable + return tipOption.rawValue + ".consumable" + } + } + var buttonBackgroundColor: Color { switch tipOption { case .kind: @@ -93,7 +110,8 @@ struct SettingsTipView: View { func loadProduct() { loadProductTask = Task { self.isLoading = true - let products = await Purchases.shared.products([tipOption.rawValue]) + // Use non-consumable for first donation, consumable for repeat donations + let products = await Purchases.shared.products([productId]) self.product = products.first self.buttonTitle = self.product?.localizedPriceString ?? "" self.isLoading = false @@ -104,7 +122,7 @@ struct SettingsTipView: View { guard AppEnvironment.isPurchaseEnabled else { throw PurchaseError.testFlightPurchasesDisabled } - + _ = await loadProductTask?.result guard let product else {