From 5ac9842cf3d6e79f6cbe365ee732616f47c0d778 Mon Sep 17 00:00:00 2001 From: rainxchzed Date: Sun, 8 Mar 2026 10:40:29 +0500 Subject: [PATCH 1/3] Add "Support GitHub Store" feature and SponsorScreen - Created a new `SponsorScreen` component providing options for financial support (GitHub Sponsors, Buy Me a Coffee) and community engagement (voting, starring, reporting bugs). - Integrated the sponsor section into the profile presentation layer by adding `SponsorCard` to the options list. - Added `OnSponsorClick` action to `ProfileAction` and updated `ProfileViewModel` and `ProfileRoot` to handle navigation. - Configured app navigation to include `SponsorScreen` in `AppNavigation` and `GithubStoreGraph`. - Added new string resources for the sponsor page, including specific messaging for the Golden Kodee Awards. - Cleaned up imports in `SortOrderMapper`. --- .../baselineProfiles/0/composeApp-release.dm | Bin 11093 -> 11185 bytes .../baselineProfiles/1/composeApp-release.dm | Bin 11074 -> 11159 bytes .../app/navigation/AppNavigation.kt | 11 + .../app/navigation/GithubStoreGraph.kt | 3 + .../composeResources/values/strings.xml | 27 + .../profile/presentation/ProfileAction.kt | 1 + .../profile/presentation/ProfileRoot.kt | 5 + .../profile/presentation/ProfileViewModel.kt | 4 + .../profile/presentation/SponsorScreen.kt | 497 ++++++++++++++++++ .../components/sections/Options.kt | 80 +++ .../presentation/utils/SortOrderMapper.kt | 3 +- 11 files changed, 630 insertions(+), 1 deletion(-) create mode 100644 feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/SponsorScreen.kt diff --git a/composeApp/release/baselineProfiles/0/composeApp-release.dm b/composeApp/release/baselineProfiles/0/composeApp-release.dm index 3201f86e19eb0339a10c291426cd3f4253dde717..2ace6b2636aee4f482e519cf522195a13ba7cccf 100644 GIT binary patch literal 11185 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 literal 11093 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 diff --git a/composeApp/release/baselineProfiles/1/composeApp-release.dm b/composeApp/release/baselineProfiles/1/composeApp-release.dm index afd8543f2208ca1bff774a37a2d602e4cf4a10a9..af7fb489b930be3e1bea997cb683b54cb71ab6df 100644 GIT binary patch literal 11159 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 rul*+*`@b{)v+BPp_CFT%TCf9Ch}|E~TIj+-wG literal 11074 zcmZ{~Wl$SV*zS!KQlOBww552lQlxl`6WpER5Q-NI?gVX-;#S;>ySuvtcL?qf+#wK7 z|L>RcoM+~}cXsyPS((`nd+oI|KV>=0XK&D+KYxx!8)mA9_CMmqzueBj!p6|SoyE?< z)(riM4tMcig2u+qhK8~58Xawm4h_u>{RoPm`mHzK_Nw2Bn{8ZyjpzCB|uLzCsiC~?hnD#JJ75R;KlJ2Dtqtd!VG1}?qJCB+jRi4DzW+)9IkE*Qjyrpk&MLM zT&`7?<6cQnj_Jr@x^sdxXNr4@oX>fJJF~lPFj>IF50jP3u7;3jK#k~O==ym-FVATd zkc)Vz%PmWB(T$;6k&J3l3|>-=e@zTU!}ppNp;+6;j9UPlce})OjtThzn)3N>e_|HK zdRk5X~Hs*5QPndZ{e45t9K3a+U@ zDG-~GVy#U@z?>}9hDX~4p9qv%f~rabTDC9vP^PE0t|;HTR~R+qI|o^*DLn@B&w-Dv z8uM>r7;?v!iCmZE5=ir574p*HawNv&QdCv0waW#0_e+PiDbSF+^u_lDCqw(?V^bFbXOEl6{zyN+-i|@7{&DP43bd;) zwcp@c*-2Mtbf7H73m9f7=Bf|GG74X+`e)fpi zdeBY4s2cAd4|u-A$mG%cL-v_5Tx_`;<+M^@E+uyHNn5&~K0I*J=P^8EWy>QQ0o~wF z^8&j@=)u?l{0A+fl|u7rQIUVEgjpX(MvbHFw$V@zHBwf2=^IJpM&+T^^t5CAzb| zOO_ZW>uKhV=~MU34ppSQ=fch%0Y#0BVp7|dhth&ac)}yyGo`{>4Ie4^5#T^*nX1pU z;nFbEb76ftVSPhwHG*)CZJ9opxV&NCqV0xT@#>3IeO9W2ZB?e{RW{kOU@1)SE{kkA zU~tpayih2i3z#P;xG#!)PZ*)g;3<8gps94}H~E9qChKS%*4ir!|0LBm?c6}N&~}qSMQ=1SeV+C!Cx6v7@c#6F zC4ns1c9Jetqht^EWKH&$Py}-JzlkkI-`U1=S}&0eS)u%o0?DfYzL~L1Y-Ho2-EYeK z#IKFe<+;|FImdVPPnYaF7r1qD&pn5r*Z)K_f^Q*TwL(v5s2Pbauo8XIr4~4DLv!Z4 zJ%D)F{=@!md+#_TpS~GZ+r3NLbaftZ2v@yGuzI(-Xr;in{Lt67=i<5U& zk-RMg4L1$BM!xnVwPTOz_-BIQwPh&}d}XZL42pVGD?*G5a@WNqC<=ylXK(g*6O<;8 z$ln$EW0?k@lIkV_w@3asF~rS>ocq25ahpQ(BLMf)?*aob?+Su}%D)0`nUt%I)CBec z9Gq8C3C=ZxC+6r<-t*5%4h{i}W|WveESgS)-UhtSEj?NsD20VDAnGUca+VL@) zP|Z{YY9RPd(@!_-v`2}gO-150CyG9_y<5c;7CA6$@D(`+8K@&t4%@aCQw2pxRdLj< zigs*uj*g;>p^WCR^VqSSYOtArPu(@LP(`o<_kd;WKSE9SI$UY8NQobU>DP!UJM3+Q z`62vTLExH@CX~MNo@ie9I4})D=8QOcE#+Ni4S=*?mH^_oI1l z3Ok*+*y2WD92U6V{_nIs5Dlb8W_W*@`B=34zHP$r3SGL4)tZ<2VR|cQP@ywI% zTa<=E;C=vtI;z+)a@G#aej$(jES7^kyy>fWCIE4(ZTGU-Ede4?^NCGLE{**F@p4WJ z+G6&b`9y_y&KlFkVO5%}Upr{cnA{7z$*ypk=?82B9}D+A+leX*Foo)MgdYCd)cZ-s zG5cKjRMf1<ShrI&DI|`wPnJA1Gd9Rncp0*>pftPua#K@w z^fThR8Ej6>G3=q+5e;x_4QomvAcOuzFyxmY+9WRKLGT5?7hbvFT39@g?4J3SA6bE zKbBj>BH6bV3;Lu+fXdGB3jj_47BN;BVr&xx)Wbx`J)a4?=7m>aHlb;o>DPyPW;*_i zv?6p81#+0E1PPL{u1N>WGKZ}gwmRjOefK!4Aiy1x%YCm;u^Eq;z(YTQ zOHmN?IT&i&#gjv^+_%sr=fxo1EMv|;-d$%%blMReS%*=t9NdFEeMI1mzAAA{kTH9N zFg)d&ggw3)43_C3*u--5J;Qk58VugArbC?hH_%gVl02;Wv9!M6I}Ou3$WmA{&wF6* z%+f#iRvcGA$2~TaLpkshaH#>*pYn_d(3243lx9| z>~%x~P0wHN2J(Tn{Vu8iZr5*3?*sX+yj5*&kHi3d%Og_m2Rjs$ZYJm1CGgJoe?R|B zHA6MvF6mKRI#HuG&Ni>y-yZV>P_Xgtcl|8U`BijK}YG!WO_BA!$!-vSI3B6(r( zUEX7|d*0>Z^5gD~xjv&d0s6dE$pdnehi^(V50bu6)LO+f#36O{$a?4 zeXbs&`3hocFatzdeR%|Eo6HhtDDky4;cErlb7*KaJGqxv!ChD>DCe3fgPJ3Ss46qd zu|7G5ix01(R>)TiHe1lxyB;}=Ubf5!oGlKtiP7Jx#`rZ4`Q^~Kv@VWc#U`9OMBDeX z+vGzbX_=cOz=1peHtK8wflJ3SbRcOkApF9g?*qX5FkDMWcW4a@c#qHTtlJU9x3$I{ zmqlcSzCAyy@4xA$mpPG@;n zjb#weJ-H`c9hT=hw?1I#l+|sXa?;s5P6m+U;{jgLs^{$%&iUA6F1?C${>Tnq8xk&FTI;pwduRH`buLLw@QMF`fucg2>=zJ!(1hhXoI*F!%yhBl= zeAe^^lk1!F=o{dl-g(2{MITYVsGmnQe%F6Tt5$?;=Ipn!U)&FH+{q3`A7fciniQT; zGh~+`il_FbtCj6OMJ51+Zyt;fV=`WP(&}@c@i`$TEdo>|Q}F}SJEzyT%ME^~)x2eo zbT(syUpn8R{yMr+=%@v&_vv~|Kgvmm@(r$}g`Ti(+rw{mP;BWhdn;rb8bQ zKlVbv_Uezpw+=wEDDNKHpd2ohQcYkn|8!cB2%AW!I!}xtgUI63u4l)M?+N-UW*Z=I z5|awy@slY+-$=K?p>m1vnWlTHpvBqWg|B`bT=%Vu%#=hmW$;r~-gG0NH3W=+*_P5P z9$fEOynG6e@u6C96yFMW7CQ{*<^9kc6FnIjEKrC$03k}2#D#=)yrO;;&n2*FiG$VSiWh%E%W#sK2vnWc8BxKUm`mwhe31ezuv)O9*;NumFEv24I zeZ*;0BIDd4?wPtc`HQXum$5^u;MR}pmJ#vK-+0O&#gJ2au&!C@&4sqq33){jl|bE8QO zcyx-CZ7AaCgt}yzAzP3?s%+qZuOK03=ygd}TV|7RTeo9Ex5`%az67+_!!`YwtT&lR zbAo0I;e8@eV#8`i_T=u~UQpWnZtZCHDBVb)a92z*RSkqe>QF!deN>{HSt?o}}&&K6xUCm{V2%eU<+ImSR;gj`q zUW5g#^!^n)o^3y?-6s*9o4=1-*>U)45>`tw%%%$=Zn~h|$q*;jVXZq2UmL2zLpnr7 z;}1Hyp0_j|kk(IFrC(iD@`5YjWQO~SflXr`d%;@Z+^?1$9@1o^#=o~6WNA$G31Cau zCrPS#FKVQ=LcSm#{q{t@NiuH@ha6iu_;97OaNN%?SY--HE_=R8IIG?ju}D9Dt+n2A z6Q0NV@o=Bxc=-$fp7_55^p zg*zb*uvMKJ?A+cl-mgDXn)LLLNanrKYg%uTuM`6&*X!G^cZ~s!ZflRfu$qf0fYYBg zVF&K+zE2KY30aN0=JJ%3ZI?r|4b(;JrS`;kW&zUCknviPMxA`?`(xqHz~!^jke zFK*%M2!+PCW}b7Ebu(rHYHKe-+(Ipi82$LK69MuUD2&p4(Ug~S0;^xH=cfks&nTBLv0_~3wlFuMAx_^W&2)9h zz@{C|GA*yxX^YpRhUUf4Om^zboJSf*KaGoRyoA!8s!E)jPg8YU>Da1l871zYrLT?TAaw=Cscev!x6>p+F;73U=TYedD~qAqhd{0s4|e*oo3%7mNLCxcjnyuTc_;#^tOdBd2VsZ)I( z#60n`CiN78*q<%BxokfdFuj?aeZM%9j8W&AW#)R*q#vvDSV**DeGmuM`*lSs#w7A` zK!(*S=TR+sG(hS;>aXlY@W8fcxUiNG*GN>QaVfFBc54x5oK>t$HE-L*ArJL!cSc{H*ftffP|AaOhLlYJ=jl4X=w!q3TyRTQ!X5V3op43|{XyVd@yY$Lda3J(#i;n0_wM&h+0O>F4339J=8M(!HHq})cLFG}B zo92-JW+N0PmcRl1mexTRS-8ed?G#L8q9jkeB(~=IID@@FUpSC@n%dEKYMf+pAaQ5< z@M;0p9XnR)S#ULDvCjX~Li~J?N&LIcL3Q6i(`sNq*7xOYw+Fg?zc(%@4TrBkJDSvB zQ%{fEOmQ9uQa7lJGoTfBHA~ypkN8_k8|{m~!Y)Az;}$}16IOr5dhYsK3a090^D%xa zJ1R6uxFhi8Z~pW=o!iP?wR} zmfQB#HupU^2TKuUtgY8wG*n_-CPG(@xC`7)UJdHRcl4}(>O*L36USO(TA8nAx5um( zy_C2#NEP1?{!CuhS+eHwJY*l+8X0x^usrUv67<&+R!$`1at+e!og2QbMAL}e;z!K0J86ZB{IwG zbFLFgt+*pSNnOd|p0rWO2QM{eMU=bI)LY~YB_D*vJI@6L&(gaZWp5t2aoKv>A194Mal%9Lg*1hPE&XXCC?niCbPp#XvvrMjV_7PQ)f9?>NJ&*QwJDj}tUIuQ>DgVi}uxKe#Hf>L#n6YtwUk zH~NH^KBMLYWc0=@zI4kr1wX#YEmNcE$6!74y5jB%u@fE%_4=CP;qsV867L3?@;mWC z?;>hnaHGj0Mv>co4ZMKLV7VcR3Fw7O-_ zONk9>OB8AhCvFXIlD|;i|GRE>Rf18`*qRDY&723@UbnTqU6u4a8%qVj%$8ixJj-ApJzYv7?Qct1 zZl{@Wcd*G^SrT-nYTF>~t|1%XMz$wQQvEz*D5^55`b*rq+$}f4|N>QLQBP`Tengz>>(}$DjiTUucvi6@IwMGo!wFwBu?; zc}amJIrGWm0#-IuhFM6cNq~Uc3vs)R?HA>S%p7DC0W=Wtj11C00Xj^-G8BFf@6Pz| zh~Mf~pQNWJmK&*w5XVc0X%i{RS1y!{g-n0n?D~_1R}aoZ9U`+`DVhxkY}BwIo=tCx zn8h8LXpGg3re!z3_rf}@CB&Ro1}M{NA3)?ysb>sUI@sTqwJo=&s5bkGc39y(J>8Wh z93-yg={5y3jPDh3Hvh~)ps7WVjzS(An1EPUVxH_o`+Zw;nvYMf3@+k4CwyNedv^Pj zCRda*rS)=ui@#61vRE^pOPwATwa`jfCbWsCCpL>UNm|Z5fe?KRAZu_FC3M-b`F;e`!ZWNbFPNjIJ2X{x%?(r+tEF1DW`=* zj>Vg)tPCc2-7R+GjN_wI=7Uk?fO~P>BqgXxQ$P;JSuR0hQrPiA|GM@hdQmoBIYC~RZ)Y{EVF+Ay zJ@9_D?RxE?Kl#b~pq1JT56K<{kR&)xOVl-xuYX&VA3zm~@AJer977Puv! zw-LpVYn}PMq5q=u01=calre3<$WiFAbhG9ZB4%c&Z!&d=k1EaW`bcnbSL&NhoLFNmui zNS=5wq0PZaeH&rgel%6G0Ga!paZ~?g2j8*!7OC&3i+_p$uA7D?wXej#JN<>jQ8oE_ z-{%{#|F{~`^Nd-ie$^=YmV2aD#ohS>WRydcN`2WP&)BlGbs`Wmg#*4NR_mQjg9I>r zw`)ZiG)Xou92PDTu6g|1622XkE}{4(9s$H^62^-FIKsaH~2w@J5L4tWDy#_B8!^ zcA^Prlm5Touov)_Vy_rbhEp``e7o>D-a~q2lkhemXbuaEl%&2MY}D;r7QAr1Mn5I|ldf~D0XF~|bGDO#y zUYs;3jb%41)Nv<(v7TE$joToks4_4$pQ(0@X>g&4vw&~0d^J(&34Glu=`c#eR0q0m zw7lxwUDamaKZcr3^)l9PG@7bsb^p1acBMTO)vfuVv+X54{4xbSOjPJ9oF@e0HMn#_Dsw#Gw_Y z+nu!f4e$r&yWof`&g%X#1?^^+v{tPZE#^O(vT^+y1alyAgxkqt8h~$=H}B7wmq6*c zF(l+Dx#e&`P=9B5jxe&FNQ@v!)BCN^?!hwQH&`2u{Y(P_gi+aS8qi=h z)R&e$Gd*Hlb!Z6dp*LYxH~U562sh%qTzX}%d$1_(EL!?)$KdC?Aq%K1WOFN}3?F%v z;s_sypTeEMg~t)A;?zaz5yRbo`osAXusEq3mzpj(2((>&I;};VsEqidp_iWUSx^mg z#wa&d-}KVuB>ROHUx^0YHwaOB{wk!Be!E&0^6FbftUpN&-~64JB|6nt zEL~!1>?R>>8ez+?W(sbV`BEJ&yRXVIqkPjJV%|nRPomgcqTuw~1W%{+IPi?=zq^(y z59EUND1mPCH8o)zw453!qsatT=v9iOETci((E_jB>vhYw{KY$YanU8E+@gT9)AtPU zH$H6ap8d!l1elx*9D zo@cQ#AAP)3Z7gx~aqF->O7&MvOvSC6SwIYuIWjKfBVY1$O=EUj$KAgZ$$bNC$1g`& zzj_fAHN=&dYSib)NVup*dgx@?IR;a4vCd1@Ai_gYFYtiVFN4n3rVE05|2q1!BbG%| z=5CoRE3&+B)F*FJ=!@_SA`THtD%t+ESOouh4#m#rpKbL>)kqmh)K0K%fm{A5qH4$b zT=&`w-P$-O!0$RFRa7LUBnEgU2aNS=tW7eDr)PGdvNL3Hb5Y@OxX)s{8cuH#ycY9x z3>-`+f+(4Rv}U<>lJ-s;SsFcC=BFbzNnVWAP1k?l+QbK4DDd)A9NkE&-Y#3vYs+yn ztyC~3;2l9?2p>oWIhy5Gm-`NAKkBQ!p?*|!Yf+QuY@_*|%m+MDU>!ijnN{Tcj_fJf zDM7q>9{4a)oj=#B>KHa`>Y$a*UTp?9L)f>ePIb$E#<%r4u$ykkG`_KofEds{I0%EJ zwjBOBk8NI7?N~C8K-Vss;wc`PB`rM4HQGTA7Toj`hJbuBp#xt?IfuP(Fi9&oB5d?T zJ&%BV<7--rH6gTf2?Jl3X%gL@coHF|ohN7=;8G37J@E2qeDh@2)qPR}*kn`WKz6)0 zPV>4XJY7S77U4x^JU$@zoP4cYoAJCiW-Pu%l|zwd9{UcBLGIC-kgN6cw1`+nN9c{O zucNshM@86Q!PI;C=oj8zo&kJl&g2mI5?@di0Z7HCP^eRCU=QSu4kufR>42ZBqYycD zg00J5#&eM)*JqIt;aJ;B>}wm>C3k_)vj$nz``zDXPZiF))b_wPJW@$66GfXe(a0{> zdW}*7muEdPlF!=nY`D{w5!H^SII7A~EBCLu@$}ldy4bT8q@9Be8XFr28V1@O85$b*@og`guzS(aZ32%<}NTlpFUrzpWc8{@C*M62V$o5;maz8a2`lU?+nOdBhV1}0w(*b&FkD1zkx|<>sm%G+9`(3HW~eZcUka(8 z2o&SIXKMdF3WG5F;=}l7InVUe9bV}j?Z+D@E~_@&cdl>5BaXaq&Vy9%Ts1a<52Z%lsxQ$1!X*R)-S1H}-d+H?&L@2_tjcIZkQ za?kQ+OWM0p7SG;Wpvq<@z*pe#JK=Zdy0vBtjtZYw{CR^&SPCyxIF%G9Iu%}hXBi5! zJM#6g?|o?gBz25wd7h8&`lalv1#GQc$+$V^I?0r|CGn#{JCT}!yx;vg{8W4Kqk#k2 zccGp>y>F&#@3xC$wBfgOL_CYG?*=hTzsnLpBIx%oapc}z8JOu=GD;;xUz}I~AIVm$ zcdu7gu2kd(ME8Mguf80L@f-yZOw&mT9pqc$f|8b_FE%MeWKF%82C+-q+R*w&(BFOP zp2i0c%+94%P6;m#l#(v62AN$i9>Yn42oB>{)vw8Ptk+bRKaa+5KFI4OWkgnGyi$#` zgE2H-Ohh;WA0V`P6r}=_$p(j%eDrQPrKxi-{!W=;IRx|T4lZ!T_{7mJ+;;V)cB)Ns z+0#U>9gem32D{YjQpPw8<^*Zn_8xK)bSydOiF47S4duphp8LUV>7KW&1Qq0eu6EU5bw7hg?C@f%VtR^aRHMA|=$Q zO5e|EDtu*L)nVUVO)Z_8G};r|r`*{4C|l?h-RGTJSF}LEd47+;tEDA>wF^Tc_DkH= zz)B(a`>jUW7rZH8oJ8|08lRfT*J80NHW)O^Zv2d-KNhG(q4hsCWV*(WbAANJaB#`t z(P{o;Yv#EVP}QnCfo=C+fF31sW%dhU+Jc-xDY{AJsezNlCQsuo`bd#hQ7M9e*Rz56 zi!{E(b9KJB@1_WZ$?O$WT*^4tEK2c&6a;mENQ<zKAfN^{J zy-o&}1+y?{RUo?zAWo;t5XZ90iJS=_K6+o`_}wJL!=p3Wjw;0K@_0qKX}bEOy5XrB zC+w;|&3j{P`3@{KG9@<@T^G>Pe<9wGGIvrZZq9TxzAZDeBY1P3w@?t5D51Z$AfP5F zQvLiaul7i9k=L6R=PDy*?DS;kW~fD!-aDdn(YBh2!R0>*vM}{wl>R3kV*jeL96H7u zwEqjP{!e-O4_y6!<9}kT|9j>C-1R^C`oF>T@&5&2ZItD(u>Tvz_*b0&we^hu_5KfV CLoNvb diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt index 805bc8b2..8011415b 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/AppNavigation.kt @@ -238,6 +238,17 @@ fun AppNavigation( }, onNavigateToDevProfile = { username -> navController.navigate(GithubStoreGraph.DeveloperProfileScreen(username)) + }, + onNavigateToSponsor = { + navController.navigate(GithubStoreGraph.SponsorScreen) + } + ) + } + + composable { + zed.rainxch.profile.presentation.SponsorScreen( + onNavigateBack = { + navController.navigateUp() } ) } diff --git a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/GithubStoreGraph.kt b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/GithubStoreGraph.kt index 77901662..462bf370 100644 --- a/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/GithubStoreGraph.kt +++ b/composeApp/src/commonMain/kotlin/zed/rainxch/githubstore/app/navigation/GithubStoreGraph.kt @@ -37,4 +37,7 @@ sealed interface GithubStoreGraph { @Serializable data object AppsScreen : GithubStoreGraph + + @Serializable + data object SponsorScreen : GithubStoreGraph } \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values/strings.xml b/core/presentation/src/commonMain/composeResources/values/strings.xml index 8284599b..45552202 100644 --- a/core/presentation/src/commonMain/composeResources/values/strings.xml +++ b/core/presentation/src/commonMain/composeResources/values/strings.xml @@ -463,4 +463,31 @@ Clear Cache Current size: Clear + + + Support GitHub Store + Support the Project + Built with love,\nmaintained with coffee + GitHub Store has reached 130,000+ downloads and 7,700+ GitHub stars — 100% free, no ads, no tracking. + I built and maintain this entirely on my own while finishing high school. Your support — even a small amount — helps keep the app bug-free, fund infrastructure costs, and ship the features you request. + Vote for GitHub Store! + GitHub Store is nominated for the Golden Kodee Awards at KotlinConf 2025. Your vote takes just 2 minutes and means the world. + 1. Register + 2. Vote + Voting closes March 22 + 1. Register on the awards platform (Continue with Google) + 2. Tap Vote below to open the voting page + 3. Find Usmon Narzullayev and click Vote + GitHub Sponsors + Recurring or one-time via GitHub + Buy Me a Coffee + Quick one-time support + OTHER WAYS TO HELP + Star the repository + Helps others discover GitHub Store + Report bugs + Makes the app better for everyone + Share with friends + Spread the word to other developers + Every bit of support — financial or not — keeps this project alive. Thank you! \ No newline at end of file diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileAction.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileAction.kt index 5ce3cd85..3bc9dd72 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileAction.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileAction.kt @@ -27,4 +27,5 @@ sealed interface ProfileAction { data object OnProxyPasswordVisibilityToggle : ProfileAction data object OnProxySave : ProfileAction data class OnAutoDetectClipboardToggled(val enabled: Boolean) : ProfileAction + data object OnSponsorClick : ProfileAction } \ No newline at end of file diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt index 56928c01..f89171cf 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileRoot.kt @@ -47,6 +47,7 @@ fun ProfileRoot( onNavigateToAuthentication: () -> Unit, onNavigateToStarredRepos: () -> Unit, onNavigateToFavouriteRepos: () -> Unit, + onNavigateToSponsor: () -> Unit, viewModel: ProfileViewModel = koinViewModel() ) { val state by viewModel.state.collectAsStateWithLifecycle() @@ -119,6 +120,10 @@ fun ProfileRoot( onNavigateToDevProfile(action.username) } + ProfileAction.OnSponsorClick -> { + onNavigateToSponsor() + } + else -> { viewModel.onAction(action) } diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileViewModel.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileViewModel.kt index 7d75685e..41a8cf73 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileViewModel.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/ProfileViewModel.kt @@ -281,6 +281,10 @@ class ProfileViewModel( /* Handed in composable */ } + ProfileAction.OnSponsorClick -> { + /* Handed in composable */ + } + is ProfileAction.OnFontThemeSelected -> { viewModelScope.launch { themesRepository.setFontTheme(action.fontTheme) diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/SponsorScreen.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/SponsorScreen.kt new file mode 100644 index 00000000..bed2fae2 --- /dev/null +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/SponsorScreen.kt @@ -0,0 +1,497 @@ +package zed.rainxch.profile.presentation + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.EmojiEvents +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.IosShare +import androidx.compose.material.icons.filled.BugReport +import androidx.compose.material.icons.filled.Star +import androidx.compose.material.icons.filled.Coffee +import androidx.compose.material.icons.filled.VolunteerActivism +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.ElevatedCard +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import androidx.compose.material3.FilledTonalButton +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import org.jetbrains.compose.resources.stringResource +import zed.rainxch.githubstore.core.presentation.res.* + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) +@Composable +fun SponsorScreen( + onNavigateBack: () -> Unit, +) { + val uriHandler = LocalUriHandler.current + val onOpenUrl: (String) -> Unit = { url -> + runCatching { uriHandler.openUri(url) } + } + Scaffold( + topBar = { + TopAppBar( + title = { + Text( + text = stringResource(Res.string.sponsor_title), + style = MaterialTheme.typography.titleMediumEmphasized, + fontWeight = FontWeight.SemiBold, + color = MaterialTheme.colorScheme.onSurface + ) + }, + navigationIcon = { + IconButton(onClick = onNavigateBack) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(Res.string.navigate_back) + ) + } + } + ) + }, + containerColor = MaterialTheme.colorScheme.background + ) { innerPadding -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(innerPadding) + .verticalScroll(rememberScrollState()) + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + // Hero section + HeroSection() + + // Golden Kodee voting CTA - the highlight + GoldenKodeeCard( + onRegisterClick = { + onOpenUrl("https://golden-kodee.awardsplatform.com/") + }, + onVoteClick = { + onOpenUrl("https://golden-kodee.awardsplatform.com/entry/vote/mNKjQxkX") + } + ) + + // Financial support options + SponsorOptionCard( + icon = Icons.Filled.Favorite, + title = stringResource(Res.string.sponsor_github_sponsors), + description = stringResource(Res.string.sponsor_github_sponsors_desc), + onClick = { + onOpenUrl("https://github.com/sponsors/rainxchzed") + } + ) + + SponsorOptionCard( + icon = Icons.Filled.Coffee, + title = stringResource(Res.string.sponsor_buy_me_coffee), + description = stringResource(Res.string.sponsor_buy_me_coffee_desc), + onClick = { + onOpenUrl("https://buymeacoffee.com/rainxchzed") + } + ) + + Spacer(Modifier.height(8.dp)) + + // Other ways to help + OtherWaysSection(onOpenUrl = onOpenUrl) + + // Thank you note + Text( + text = stringResource(Res.string.sponsor_thank_you), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp) + ) + + Spacer(Modifier.height(16.dp)) + } + } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun HeroSection() { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Icon( + imageVector = Icons.Filled.VolunteerActivism, + contentDescription = null, + modifier = Modifier + .size(64.dp) + .clip(CircleShape) + .background( + Brush.linearGradient( + listOf( + MaterialTheme.colorScheme.primary, + MaterialTheme.colorScheme.tertiary, + ) + ) + ) + .padding(14.dp), + tint = MaterialTheme.colorScheme.onPrimary + ) + + Spacer(Modifier.height(16.dp)) + + Text( + text = stringResource(Res.string.sponsor_hero_title), + style = MaterialTheme.typography.headlineSmallEmphasized, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onBackground, + textAlign = TextAlign.Center + ) + + Spacer(Modifier.height(8.dp)) + + Text( + text = stringResource(Res.string.sponsor_hero_subtitle), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center, + modifier = Modifier.padding(horizontal = 8.dp) + ) + + Spacer(Modifier.height(8.dp)) + + Text( + text = stringResource(Res.string.sponsor_personal_note), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center, + modifier = Modifier.padding(horizontal = 8.dp) + ) + } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun GoldenKodeeCard( + onRegisterClick: () -> Unit, + onVoteClick: () -> Unit, +) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.primaryContainer + ), + shape = RoundedCornerShape(28.dp) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(20.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Icon( + imageVector = Icons.Filled.EmojiEvents, + contentDescription = null, + modifier = Modifier.size(48.dp), + tint = MaterialTheme.colorScheme.onPrimaryContainer + ) + + Spacer(Modifier.height(12.dp)) + + Text( + text = stringResource(Res.string.sponsor_kodee_title), + style = MaterialTheme.typography.titleLargeEmphasized, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onPrimaryContainer, + textAlign = TextAlign.Center + ) + + Spacer(Modifier.height(8.dp)) + + Text( + text = stringResource(Res.string.sponsor_kodee_subtitle), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.8f), + textAlign = TextAlign.Center + ) + + Spacer(Modifier.height(16.dp)) + + // Steps + Column( + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(16.dp)) + .background(MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.08f)) + .padding(12.dp), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + Text( + text = stringResource(Res.string.sponsor_kodee_step1), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.8f) + ) + Text( + text = stringResource(Res.string.sponsor_kodee_step2), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.8f) + ) + Text( + text = stringResource(Res.string.sponsor_kodee_step3), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.8f) + ) + } + + Spacer(Modifier.height(16.dp)) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + FilledTonalButton( + onClick = onRegisterClick, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(16.dp), + colors = ButtonDefaults.filledTonalButtonColors( + containerColor = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.15f), + contentColor = MaterialTheme.colorScheme.onPrimaryContainer + ) + ) { + Text( + text = stringResource(Res.string.sponsor_kodee_register), + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.SemiBold + ) + } + + ElevatedButton( + onClick = onVoteClick, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(16.dp), + colors = ButtonDefaults.elevatedButtonColors( + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary + ) + ) { + Icon( + imageVector = Icons.Filled.EmojiEvents, + contentDescription = null, + modifier = Modifier.size(18.dp) + ) + Spacer(Modifier.width(6.dp)) + Text( + text = stringResource(Res.string.sponsor_kodee_vote), + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.Bold + ) + } + } + + Spacer(Modifier.height(8.dp)) + + Text( + text = stringResource(Res.string.sponsor_kodee_deadline), + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.6f), + fontWeight = FontWeight.Medium + ) + } + } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun SponsorOptionCard( + icon: ImageVector, + title: String, + description: String, + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + ElevatedCard( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + colors = CardDefaults.elevatedCardColors( + containerColor = MaterialTheme.colorScheme.surfaceContainerHigh + ), + shape = RoundedCornerShape(24.dp) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp) + ) { + Icon( + imageVector = icon, + contentDescription = null, + modifier = Modifier + .size(44.dp) + .clip(CircleShape) + .background( + Brush.linearGradient( + listOf( + MaterialTheme.colorScheme.primary, + MaterialTheme.colorScheme.secondary, + ) + ) + ) + .padding(10.dp), + tint = MaterialTheme.colorScheme.onPrimary + ) + + Column(modifier = Modifier.weight(1f)) { + Text( + text = title, + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.SemiBold, + color = MaterialTheme.colorScheme.onSurface + ) + Text( + text = description, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun OtherWaysSection( + onOpenUrl: (String) -> Unit, +) { + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Text( + text = stringResource(Res.string.sponsor_other_ways_title), + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.secondary, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(start = 8.dp) + ) + + Spacer(Modifier.height(4.dp)) + + ElevatedCard( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.elevatedCardColors( + containerColor = MaterialTheme.colorScheme.surfaceContainerHigh + ), + shape = RoundedCornerShape(24.dp) + ) { + Column(modifier = Modifier.padding(4.dp)) { + OtherWayItem( + icon = Icons.Filled.Star, + title = stringResource(Res.string.sponsor_star_repo), + description = stringResource(Res.string.sponsor_star_repo_desc), + onClick = { + onOpenUrl("https://github.com/OpenHub-Store/GitHub-Store") + } + ) + + OtherWayItem( + icon = Icons.Filled.BugReport, + title = stringResource(Res.string.sponsor_report_bugs), + description = stringResource(Res.string.sponsor_report_bugs_desc), + onClick = { + onOpenUrl("https://github.com/OpenHub-Store/GitHub-Store/issues") + } + ) + + OtherWayItem( + icon = Icons.Filled.IosShare, + title = stringResource(Res.string.sponsor_share), + description = stringResource(Res.string.sponsor_share_desc), + onClick = { + onOpenUrl("https://github.com/OpenHub-Store/GitHub-Store") + } + ) + } + } + } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun OtherWayItem( + icon: ImageVector, + title: String, + description: String, + onClick: () -> Unit, +) { + FilledTonalButton( + onClick = onClick, + modifier = Modifier.fillMaxWidth(), + shape = RoundedCornerShape(20.dp), + colors = ButtonDefaults.filledTonalButtonColors( + containerColor = MaterialTheme.colorScheme.surfaceContainerHigh, + contentColor = MaterialTheme.colorScheme.onSurface + ) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 4.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + Icon( + imageVector = icon, + contentDescription = null, + modifier = Modifier.size(24.dp), + tint = MaterialTheme.colorScheme.primary + ) + + Column(modifier = Modifier.weight(1f)) { + Text( + text = title, + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.Medium, + color = MaterialTheme.colorScheme.onSurface + ) + Text( + text = description, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + } +} diff --git a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/Options.kt b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/Options.kt index 29ae2734..4a2d6e88 100644 --- a/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/Options.kt +++ b/feature/profile/presentation/src/commonMain/kotlin/zed/rainxch/profile/presentation/components/sections/Options.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.Star +import androidx.compose.material.icons.filled.VolunteerActivism import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -27,6 +28,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource @@ -58,6 +60,14 @@ fun LazyListScope.options( onAction(ProfileAction.OnFavouriteReposClick) } ) + + Spacer(Modifier.height(4.dp)) + + SponsorCard( + onClick = { + onAction(ProfileAction.OnSponsorClick) + } + ) } } @@ -135,4 +145,74 @@ private fun OptionCard( } } } +} + +@OptIn(ExperimentalMaterial3ExpressiveApi::class) +@Composable +private fun SponsorCard( + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + Card( + modifier = modifier, + onClick = onClick, + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + contentColor = MaterialTheme.colorScheme.onPrimaryContainer + ), + shape = RoundedCornerShape(32.dp), + border = BorderStroke( + width = 1.dp, + color = MaterialTheme.colorScheme.primary.copy(alpha = 0.3f) + ) + ) { + Row( + modifier = Modifier.padding(horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + Icon( + imageVector = Icons.Default.VolunteerActivism, + contentDescription = null, + modifier = Modifier + .size(36.dp) + .clip(CircleShape) + .background( + Brush.linearGradient( + listOf( + MaterialTheme.colorScheme.primary, + MaterialTheme.colorScheme.tertiary, + ) + ) + ) + .padding(6.dp), + tint = MaterialTheme.colorScheme.onPrimary + ) + + Column( + modifier = Modifier + .weight(1f) + .padding(12.dp), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.Start + ) { + Text( + text = stringResource(Res.string.sponsor_button), + maxLines = 1, + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.SemiBold, + overflow = TextOverflow.Ellipsis, + color = MaterialTheme.colorScheme.onPrimaryContainer + ) + + Text( + text = stringResource(Res.string.sponsor_hero_subtitle), + maxLines = 2, + style = MaterialTheme.typography.bodySmall, + overflow = TextOverflow.Ellipsis, + color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.7f) + ) + } + } + } } \ No newline at end of file diff --git a/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/utils/SortOrderMapper.kt b/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/utils/SortOrderMapper.kt index bd530efc..f3b089cf 100644 --- a/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/utils/SortOrderMapper.kt +++ b/feature/search/presentation/src/commonMain/kotlin/zed/rainxch/search/presentation/utils/SortOrderMapper.kt @@ -5,7 +5,8 @@ import zed.rainxch.domain.model.SortOrder import zed.rainxch.domain.model.SortOrder.Ascending import zed.rainxch.domain.model.SortOrder.Descending import zed.rainxch.githubstore.core.presentation.res.Res -import zed.rainxch.githubstore.core.presentation.res.* +import zed.rainxch.githubstore.core.presentation.res.sort_order_ascending +import zed.rainxch.githubstore.core.presentation.res.sort_order_descending fun SortOrder.label(): StringResource = when (this) { Descending -> Res.string.sort_order_descending From 3040ce10c05fabe4c8f3a7e0dd2f99e6acb1a129 Mon Sep 17 00:00:00 2001 From: rainxchzed Date: Sun, 8 Mar 2026 10:48:59 +0500 Subject: [PATCH 2/3] Add sponsorship and KotlinConf 2025 voting strings across multiple localizations - Added comprehensive string resources for a new sponsorship and "Golden Kodee Awards" voting feature. - Included localized strings for various languages: Korean, Polish, Italian, Japanese, French, Hindi, Bengali, Spanish, Arabic, Chinese (Simplified), Russian, and Turkish. - Defined strings for hero titles, personal notes, GitHub Sponsors/Buy Me a Coffee links, and alternative support methods (starring repo, reporting bugs, sharing). - Added step-by-step instructions for the KotlinConf 2025 voting process. - Updated the base `strings.xml` with organized sections and consistent keys. --- .../composeResources/values-ar/strings-ar.xml | 39 ++++++++++++++++++ .../composeResources/values-bn/strings-bn.xml | 39 ++++++++++++++++++ .../composeResources/values-es/strings-es.xml | 35 ++++++++++++++++ .../composeResources/values-fr/strings-fr.xml | 36 +++++++++++++++++ .../composeResources/values-hi/strings-hi.xml | 39 ++++++++++++++++++ .../composeResources/values-it/strings-it.xml | 38 ++++++++++++++++++ .../composeResources/values-ja/strings-ja.xml | 37 +++++++++++++++++ .../composeResources/values-ko/strings-ko.xml | 39 ++++++++++++++++++ .../composeResources/values-pl/strings-pl.xml | 40 +++++++++++++++++++ .../composeResources/values-ru/strings-ru.xml | 38 ++++++++++++++++++ .../composeResources/values-tr/strings-tr.xml | 40 +++++++++++++++++++ .../values-zh-rCN/strings-zh-rCN.xml | 37 +++++++++++++++++ .../composeResources/values/strings.xml | 9 +++++ 13 files changed, 466 insertions(+) diff --git a/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml b/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml index e8cf40b2..a451702d 100644 --- a/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml +++ b/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml @@ -463,4 +463,43 @@ مسح ذاكرة التخزين المؤقت الحجم الحالي: مسح + + ادعم GitHub Store + ادعم المشروع + صُنع بحب،\nويستمر بالقهوة + + وصل GitHub Store إلى أكثر من 130,000 تنزيل و 7,700 نجمة على GitHub — مجاني 100٪، بدون إعلانات أو تتبع. + + أقوم ببناء وصيانة هذا المشروع بالكامل بمفردي أثناء إنهاء دراستي الثانوية. + + صوّت لـ GitHub Store! + تم ترشيح GitHub Store لجوائز Golden Kodee في KotlinConf 2025. + + 1. التسجيل + 2. التصويت + + ينتهي التصويت في 22 مارس + + 1. سجل في منصة الجوائز (المتابعة عبر Google) + 2. اضغط على زر التصويت أدناه + 3. ابحث عن Usmon Narzullayev واضغط تصويت + + GitHub Sponsors + دعم متكرر أو لمرة واحدة عبر GitHub + + Buy Me a Coffee + دعم سريع لمرة واحدة + + طرق أخرى للمساعدة + + ضع نجمة للمستودع + يساعد الآخرين على اكتشاف GitHub Store + + الإبلاغ عن الأخطاء + يجعل التطبيق أفضل للجميع + + شارك مع الأصدقاء + انشر الخبر بين المطورين + + كل دعم — مالي أو غير ذلك — يساعد في إبقاء هذا المشروع حيًا. شكرًا لك! diff --git a/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml b/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml index d3fd0536..83a87a2e 100644 --- a/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml +++ b/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml @@ -462,4 +462,43 @@ ক্যাশে পরিষ্কার করুন বর্তমান আকার: পরিষ্কার করুন + + GitHub Store সমর্থন করুন + প্রকল্পকে সমর্থন করুন + ভালোবাসা দিয়ে তৈরি,\nকফি দিয়ে চালিত + + GitHub Store 130,000+ ডাউনলোড এবং 7,700+ GitHub স্টার অর্জন করেছে — ১০০% ফ্রি, কোনো বিজ্ঞাপন নেই, কোনো ট্র্যাকিং নেই। + + আমি উচ্চ বিদ্যালয় শেষ করার সময় একাই এই প্রকল্পটি তৈরি ও রক্ষণাবেক্ষণ করছি। আপনার সমর্থন — ছোট হলেও — অ্যাপটিকে বাগমুক্ত রাখতে, অবকাঠামো খরচ চালাতে এবং নতুন ফিচার আনতে সাহায্য করে। + + GitHub Store এর জন্য ভোট দিন! + GitHub Store KotlinConf 2025 এর Golden Kodee Awards এর জন্য মনোনীত হয়েছে। + + 1. নিবন্ধন করুন + 2. ভোট দিন + + ভোট ২২ মার্চ পর্যন্ত + + 1. পুরস্কার প্ল্যাটফর্মে নিবন্ধন করুন (Google দিয়ে চালিয়ে যান) + 2. নিচে Vote চাপুন + 3. Usmon Narzullayev খুঁজে Vote চাপুন + + GitHub Sponsors + GitHub এর মাধ্যমে একবার বা নিয়মিত সমর্থন + + Buy Me a Coffee + দ্রুত একবারের সমর্থন + + সহায়তার অন্যান্য উপায় + + রিপোজিটরিতে স্টার দিন + অন্যদের GitHub Store খুঁজে পেতে সাহায্য করে + + বাগ রিপোর্ট করুন + অ্যাপটিকে আরও ভালো করে + + বন্ধুদের সাথে শেয়ার করুন + অন্যান্য ডেভেলপারদের জানাতে সাহায্য করে + + যে কোনো সমর্থন — অর্থনৈতিক হোক বা না হোক — এই প্রকল্পটিকে বাঁচিয়ে রাখে। ধন্যবাদ! diff --git a/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml b/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml index d34d5071..f836c11f 100644 --- a/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml +++ b/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml @@ -427,4 +427,39 @@ Borrar caché Tamaño actual: Borrar + + Apoya GitHub Store + Apoyar el proyecto + Creado con amor,\nmantenido con café + GitHub Store ha alcanzado más de 130,000 descargas y 7,700 estrellas en GitHub — 100% gratis, sin anuncios ni rastreo. + Construí y mantengo esto completamente por mi cuenta mientras termino la secundaria. Tu apoyo — incluso una pequeña cantidad — ayuda a mantener la app sin errores, pagar la infraestructura y lanzar las funciones que solicitan. + + ¡Vota por GitHub Store! + GitHub Store está nominado a los Golden Kodee Awards en KotlinConf 2025. Tu voto toma solo 2 minutos y significa mucho. + 1. Registrarse + 2. Votar + La votación cierra el 22 de marzo + + 1. Regístrate en la plataforma de premios (Continuar con Google) + 2. Toca Votar abajo para abrir la página + 3. Busca a Usmon Narzullayev y pulsa Votar + + GitHub Sponsors + Apoyo recurrente o único mediante GitHub + + Buy Me a Coffee + Apoyo rápido de una sola vez + + OTRAS FORMAS DE AYUDAR + + Dar estrella al repositorio + Ayuda a otros a descubrir GitHub Store + + Reportar errores + Mejora la app para todos + + Compartir con amigos + Corre la voz entre otros desarrolladores + + Cada forma de apoyo — financiera o no — mantiene vivo este proyecto. ¡Gracias! \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml b/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml index f8dbefe4..50b6a307 100644 --- a/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml +++ b/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml @@ -427,4 +427,40 @@ Vider le cache Taille actuelle : Vider + + Soutenir GitHub Store + Soutenir le projet + Créé avec amour,\nmaintenu avec du café + GitHub Store a dépassé 130 000 téléchargements et 7 700 étoiles GitHub — 100 % gratuit, sans publicité ni suivi. + J’ai construit et je maintiens ce projet seul tout en terminant le lycée. Votre soutien — même petit — aide à garder l’application sans bugs, payer l’infrastructure et livrer les fonctionnalités demandées. + + Votez pour GitHub Store ! + GitHub Store est nommé aux Golden Kodee Awards de KotlinConf 2025. Votre vote prend seulement 2 minutes. + + 1. S’inscrire + 2. Voter + Vote jusqu’au 22 mars + + 1. Inscrivez-vous sur la plateforme (Continuer avec Google) + 2. Appuyez sur Voter ci-dessous + 3. Trouvez Usmon Narzullayev et cliquez sur Voter + + GitHub Sponsors + Mensuel ou ponctuel via GitHub + + Buy Me a Coffee + Soutien rapide en une fois + + AUTRES FAÇONS D’AIDER + + Mettre une étoile au dépôt + Aide d’autres personnes à découvrir l’app + + Signaler des bugs + Améliore l’application pour tous + + Partager avec des amis + Parlez-en aux développeurs + + Chaque soutien — financier ou non — maintient ce projet en vie. Merci ! \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml b/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml index c19891cd..2b147b90 100644 --- a/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml +++ b/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml @@ -462,4 +462,43 @@ कैश साफ़ करें वर्तमान आकार: साफ़ करें + + GitHub Store का समर्थन करें + प्रोजेक्ट को समर्थन दें + प्यार से बनाया,\nकॉफी से चलाया + + GitHub Store ने 130,000+ डाउनलोड और 7,700+ GitHub स्टार प्राप्त किए हैं — 100% मुफ्त, बिना विज्ञापन और बिना ट्रैकिंग। + + मैं इस प्रोजेक्ट को पूरी तरह अकेले बनाता और संभालता हूँ जबकि मैं हाई स्कूल पूरा कर रहा हूँ। + + GitHub Store के लिए वोट करें! + GitHub Store KotlinConf 2025 Golden Kodee Awards के लिए नामांकित है। + + 1. रजिस्टर करें + 2. वोट करें + + वोटिंग 22 मार्च को बंद होगी + + 1. प्लेटफॉर्म पर रजिस्टर करें (Google से जारी रखें) + 2. नीचे वोट बटन दबाएँ + 3. Usmon Narzullayev खोजें और वोट करें + + GitHub Sponsors + GitHub के माध्यम से एक बार या नियमित समर्थन + + Buy Me a Coffee + त्वरित एक-बार समर्थन + + मदद करने के अन्य तरीके + + रिपॉजिटरी को स्टार दें + दूसरों को GitHub Store खोजने में मदद करता है + + बग रिपोर्ट करें + ऐप को बेहतर बनाता है + + दोस्तों के साथ साझा करें + अन्य डेवलपर्स तक बात फैलाएँ + + हर तरह का समर्थन — चाहे आर्थिक हो या नहीं — इस प्रोजेक्ट को जीवित रखता है। धन्यवाद! diff --git a/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml b/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml index 3b66aebd..98cd1ac0 100644 --- a/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml +++ b/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml @@ -463,4 +463,42 @@ Pulisci cache Dimensione attuale: Pulisci + + Supporta GitHub Store + Supporta il progetto + Costruito con amore,\nmantenuto con il caffè + GitHub Store ha raggiunto oltre 130.000 download e 7.700 stelle su GitHub — 100% gratuito, senza pubblicità né tracciamento. + + Ho costruito e mantengo questo progetto completamente da solo mentre finisco il liceo. Il tuo supporto — anche piccolo — aiuta a mantenere l'app senza bug e a finanziare l'infrastruttura. + + Vota GitHub Store! + GitHub Store è nominato ai Golden Kodee Awards al KotlinConf 2025. + + 1. Registrati + 2. Vota + Le votazioni chiudono il 22 marzo + + 1. Registrati sulla piattaforma (Continua con Google) + 2. Tocca Vota qui sotto + 3. Trova Usmon Narzullayev e premi Vota + + GitHub Sponsors + Supporto ricorrente o singolo via GitHub + + Buy Me a Coffee + Supporto rapido una tantum + + ALTRI MODI PER AIUTARE + + Metti una stella al repository + Aiuta altri a scoprire GitHub Store + + Segnala bug + Rende l'app migliore per tutti + + Condividi con amici + Diffondi la parola tra gli sviluppatori + + Ogni supporto — finanziario o meno — mantiene vivo questo progetto. Grazie! + \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml b/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml index 0697e1fc..d8024d81 100644 --- a/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml +++ b/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml @@ -426,4 +426,41 @@ キャッシュをクリア 現在のサイズ: クリア + + GitHub Store を支援 + プロジェクトを支援 + 愛を込めて作り、\nコーヒーで維持 + GitHub Store は 13万以上のダウンロードと 7700 以上の GitHub スターを達成しました。完全無料、広告なし、追跡なし。 + + 私は高校を卒業しながら、このプロジェクトを一人で開発・維持しています。小さな支援でも、バグ修正やインフラ費用、機能開発に役立ちます。 + + GitHub Store に投票! + KotlinConf 2025 の Golden Kodee Awards にノミネートされています。投票は2分で完了します。 + + 1. 登録 + 2. 投票 + 投票締切:3月22日 + + 1. 賞のプラットフォームに登録(Googleで続行) + 2. 下の「投票」をタップ + 3. Usmon Narzullayev を見つけて投票 + + GitHub Sponsors + GitHub 経由の定期または一回支援 + + Buy Me a Coffee + 簡単な一回支援 + + 他の支援方法 + + リポジトリにスター + 他の人が GitHub Store を見つけやすくなります + + バグを報告 + アプリをより良くします + + 友達と共有 + 他の開発者に広める + + 金銭的であれそうでなくても、すべての支援がこのプロジェクトを支えています。ありがとうございます! \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml b/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml index 78881b2e..8ec09740 100644 --- a/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml +++ b/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml @@ -459,4 +459,43 @@ 캐시 지우기 현재 크기: 지우기 + + GitHub Store 지원 + 프로젝트 지원하기 + 사랑으로 만들고,\n커피로 유지합니다 + + GitHub Store는 130,000+ 다운로드와 7,700+ GitHub 스타를 달성했습니다 — 100% 무료, 광고 없음, 추적 없음. + + 저는 고등학교를 마치면서 이 프로젝트를 혼자 개발하고 유지하고 있습니다. + + GitHub Store에 투표하세요! + GitHub Store가 KotlinConf 2025 Golden Kodee Awards 후보에 올랐습니다. + + 1. 등록 + 2. 투표 + 투표 마감: 3월 22일 + + 1. 플랫폼에 등록 (Google로 계속) + 2. 아래에서 투표 버튼 누르기 + 3. Usmon Narzullayev를 찾아 투표 클릭 + + GitHub Sponsors + GitHub를 통한 정기 또는 일회 지원 + + Buy Me a Coffee + 빠른 일회 지원 + + 다른 도움 방법 + + 저장소에 스타 주기 + 다른 사람들이 GitHub Store를 발견하도록 도움 + + 버그 신고 + 앱을 더 좋게 만듭니다 + + 친구와 공유 + 다른 개발자에게 알려주세요 + + 금전적이든 아니든 모든 지원이 이 프로젝트를 계속 유지하게 합니다. 감사합니다! + \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml b/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml index fe80c455..4005efe5 100644 --- a/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml +++ b/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml @@ -425,4 +425,44 @@ Wyczyść pamięć podręczną Aktualny rozmiar: Wyczyść + + Wesprzyj GitHub Store + Wesprzyj projekt + Zbudowane z pasją,\nutrzymywane kawą + + GitHub Store osiągnął ponad 130 000 pobrań i 7 700 gwiazdek na GitHub — 100% darmowy, bez reklam i śledzenia. + + Tworzę i utrzymuję ten projekt samodzielnie podczas kończenia szkoły średniej. + + Głosuj na GitHub Store! + GitHub Store został nominowany do Golden Kodee Awards na KotlinConf 2025. + + 1. Zarejestruj się + 2. Głosuj + + Głosowanie kończy się 22 marca + + 1. Zarejestruj się na platformie (Kontynuuj z Google) + 2. Kliknij Głosuj poniżej + 3. Znajdź Usmon Narzullayev i kliknij Głosuj + + GitHub Sponsors + Wsparcie jednorazowe lub cykliczne przez GitHub + + Buy Me a Coffee + Szybkie jednorazowe wsparcie + + INNE SPOSOBY POMOCY + + Dodaj gwiazdkę repozytorium + Pomaga innym odkryć GitHub Store + + Zgłoś błąd + Poprawia aplikację dla wszystkich + + Udostępnij znajomym + Powiedz o tym innym programistom + + Każde wsparcie — finansowe lub nie — utrzymuje ten projekt przy życiu. Dziękuję! + \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml b/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml index 0e723608..78c838a7 100644 --- a/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml +++ b/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml @@ -427,4 +427,42 @@ Очистить кэш Текущий размер: Очистить + + Поддержать GitHub Store + Поддержать проект + Создано с любовью,\nподдерживается кофе + GitHub Store достиг более 130 000 загрузок и 7 700 звёзд на GitHub — 100% бесплатно, без рекламы и отслеживания. + + Я разработал и поддерживаю этот проект полностью самостоятельно, заканчивая школу. Ваша поддержка — даже небольшая — помогает оплачивать инфраструктуру и развивать приложение. + + Голосуйте за GitHub Store! + GitHub Store номинирован на Golden Kodee Awards на KotlinConf 2025. + + 1. Зарегистрироваться + 2. Проголосовать + Голосование до 22 марта + + 1. Зарегистрируйтесь на платформе (Войти через Google) + 2. Нажмите «Голосовать» ниже + 3. Найдите Usmon Narzullayev и нажмите «Голосовать» + + GitHub Sponsors + Регулярная или разовая поддержка через GitHub + + Buy Me a Coffee + Быстрая разовая поддержка + + ДРУГИЕ СПОСОБЫ ПОМОЧЬ + + Поставить звезду репозиторию + Помогает другим найти GitHub Store + + Сообщить об ошибке + Делает приложение лучше + + Поделиться с друзьями + Расскажите другим разработчикам + + Любая поддержка — финансовая или нет — помогает проекту жить. Спасибо! + \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml b/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml index 4c5ea2e9..67e61a4d 100644 --- a/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml +++ b/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml @@ -459,4 +459,44 @@ Önbelleği Temizle Geçerli boyut: Temizle + + GitHub Store'u Destekle + Projeyi destekle + Sevgiyle yapıldı,\nkahveyle sürdürüldü + + GitHub Store 130.000+ indirme ve 7.700+ GitHub yıldızına ulaştı — %100 ücretsiz, reklamsız ve izleme yok. + + Bu projeyi liseyi bitirirken tamamen tek başıma geliştiriyorum ve sürdürüyorum. + + GitHub Store için oy ver! + GitHub Store KotlinConf 2025 Golden Kodee Awards için aday gösterildi. + + 1. Kayıt ol + 2. Oy ver + + Oylama 22 Mart'ta kapanıyor + + 1. Platformda kayıt ol (Google ile devam et) + 2. Aşağıdan Oy Ver'e dokun + 3. Usmon Narzullayev'i bul ve Oy Ver'e tıkla + + GitHub Sponsors + GitHub üzerinden tek seferlik veya düzenli destek + + Buy Me a Coffee + Hızlı tek seferlik destek + + YARDIM ETMENİN DİĞER YOLLARI + + Depoya yıldız ver + Başkalarının GitHub Store'u keşfetmesine yardımcı olur + + Hata bildir + Uygulamayı herkes için daha iyi yapar + + Arkadaşlarınla paylaş + Diğer geliştiricilere duyur + + Her destek — finansal olsun ya da olmasın — bu projeyi yaşatır. Teşekkürler! + diff --git a/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml b/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml index a92979ca..ee56dc55 100644 --- a/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml +++ b/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml @@ -427,4 +427,41 @@ 清除缓存 当前大小: 清除 + + 支持 GitHub Store + 支持项目 + 用爱构建,\n用咖啡维护 + GitHub Store 已达到 130,000+ 下载和 7,700+ GitHub 星标 —— 100% 免费,无广告,无跟踪。 + + 我在完成高中学业的同时,完全独立开发并维护这个项目。你的支持——哪怕很小——都能帮助保持应用无 bug、支付基础设施费用,并实现你们请求的功能。 + + 为 GitHub Store 投票! + GitHub Store 已被提名为 KotlinConf 2025 Golden Kodee Awards。 + + 1. 注册 + 2. 投票 + 投票截止:3月22日 + + 1. 在奖项平台注册(使用 Google 登录) + 2. 点击下方“投票” + 3. 找到 Usmon Narzullayev 并点击投票 + + GitHub Sponsors + 通过 GitHub 的一次性或持续支持 + + Buy Me a Coffee + 快速一次性支持 + + 其他帮助方式 + + 为仓库加星 + 帮助更多人发现 GitHub Store + + 报告问题 + 让应用变得更好 + + 分享给朋友 + 向其他开发者传播 + + 任何形式的支持——无论是否金钱——都让这个项目继续存在。谢谢! \ No newline at end of file diff --git a/core/presentation/src/commonMain/composeResources/values/strings.xml b/core/presentation/src/commonMain/composeResources/values/strings.xml index 45552202..2b8fe3be 100644 --- a/core/presentation/src/commonMain/composeResources/values/strings.xml +++ b/core/presentation/src/commonMain/composeResources/values/strings.xml @@ -470,24 +470,33 @@ Built with love,\nmaintained with coffee GitHub Store has reached 130,000+ downloads and 7,700+ GitHub stars — 100% free, no ads, no tracking. I built and maintain this entirely on my own while finishing high school. Your support — even a small amount — helps keep the app bug-free, fund infrastructure costs, and ship the features you request. + Vote for GitHub Store! GitHub Store is nominated for the Golden Kodee Awards at KotlinConf 2025. Your vote takes just 2 minutes and means the world. 1. Register 2. Vote Voting closes March 22 + 1. Register on the awards platform (Continue with Google) 2. Tap Vote below to open the voting page 3. Find Usmon Narzullayev and click Vote + GitHub Sponsors Recurring or one-time via GitHub + Buy Me a Coffee Quick one-time support + OTHER WAYS TO HELP + Star the repository Helps others discover GitHub Store + Report bugs Makes the app better for everyone + Share with friends Spread the word to other developers + Every bit of support — financial or not — keeps this project alive. Thank you! \ No newline at end of file From 17c87772c28b95829ea39f02f4f75a2628a22063 Mon Sep 17 00:00:00 2001 From: rainxchzed Date: Sun, 8 Mar 2026 10:49:35 +0500 Subject: [PATCH 3/3] Update Golden Kodee Awards year in localization resources - Updated the `sponsor_kodee_subtitle` string to change the KotlinConf Golden Kodee Awards year from 2025 to 2026 across all supported languages (ko, pl, it, ja, fr, hi, bn, es, ar, en, zh-rCN, ru, tr). --- .../src/commonMain/composeResources/values-ar/strings-ar.xml | 2 +- .../src/commonMain/composeResources/values-bn/strings-bn.xml | 2 +- .../src/commonMain/composeResources/values-es/strings-es.xml | 2 +- .../src/commonMain/composeResources/values-fr/strings-fr.xml | 2 +- .../src/commonMain/composeResources/values-hi/strings-hi.xml | 2 +- .../src/commonMain/composeResources/values-it/strings-it.xml | 2 +- .../src/commonMain/composeResources/values-ja/strings-ja.xml | 2 +- .../src/commonMain/composeResources/values-ko/strings-ko.xml | 2 +- .../src/commonMain/composeResources/values-pl/strings-pl.xml | 2 +- .../src/commonMain/composeResources/values-ru/strings-ru.xml | 2 +- .../src/commonMain/composeResources/values-tr/strings-tr.xml | 2 +- .../composeResources/values-zh-rCN/strings-zh-rCN.xml | 2 +- .../src/commonMain/composeResources/values/strings.xml | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml b/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml index a451702d..0c86d719 100644 --- a/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml +++ b/core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml @@ -473,7 +473,7 @@ أقوم ببناء وصيانة هذا المشروع بالكامل بمفردي أثناء إنهاء دراستي الثانوية. صوّت لـ GitHub Store! - تم ترشيح GitHub Store لجوائز Golden Kodee في KotlinConf 2025. + تم ترشيح GitHub Store لجوائز Golden Kodee في KotlinConf 2026. 1. التسجيل 2. التصويت diff --git a/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml b/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml index 83a87a2e..8fa853b4 100644 --- a/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml +++ b/core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml @@ -472,7 +472,7 @@ আমি উচ্চ বিদ্যালয় শেষ করার সময় একাই এই প্রকল্পটি তৈরি ও রক্ষণাবেক্ষণ করছি। আপনার সমর্থন — ছোট হলেও — অ্যাপটিকে বাগমুক্ত রাখতে, অবকাঠামো খরচ চালাতে এবং নতুন ফিচার আনতে সাহায্য করে। GitHub Store এর জন্য ভোট দিন! - GitHub Store KotlinConf 2025 এর Golden Kodee Awards এর জন্য মনোনীত হয়েছে। + GitHub Store KotlinConf 2026 এর Golden Kodee Awards এর জন্য মনোনীত হয়েছে। 1. নিবন্ধন করুন 2. ভোট দিন diff --git a/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml b/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml index f836c11f..fe25a4d6 100644 --- a/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml +++ b/core/presentation/src/commonMain/composeResources/values-es/strings-es.xml @@ -435,7 +435,7 @@ Construí y mantengo esto completamente por mi cuenta mientras termino la secundaria. Tu apoyo — incluso una pequeña cantidad — ayuda a mantener la app sin errores, pagar la infraestructura y lanzar las funciones que solicitan. ¡Vota por GitHub Store! - GitHub Store está nominado a los Golden Kodee Awards en KotlinConf 2025. Tu voto toma solo 2 minutos y significa mucho. + GitHub Store está nominado a los Golden Kodee Awards en KotlinConf 2026. Tu voto toma solo 2 minutos y significa mucho. 1. Registrarse 2. Votar La votación cierra el 22 de marzo diff --git a/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml b/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml index 50b6a307..c2872c4a 100644 --- a/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml +++ b/core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml @@ -435,7 +435,7 @@ J’ai construit et je maintiens ce projet seul tout en terminant le lycée. Votre soutien — même petit — aide à garder l’application sans bugs, payer l’infrastructure et livrer les fonctionnalités demandées. Votez pour GitHub Store ! - GitHub Store est nommé aux Golden Kodee Awards de KotlinConf 2025. Votre vote prend seulement 2 minutes. + GitHub Store est nommé aux Golden Kodee Awards de KotlinConf 2026. Votre vote prend seulement 2 minutes. 1. S’inscrire 2. Voter diff --git a/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml b/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml index 2b147b90..3937fc12 100644 --- a/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml +++ b/core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml @@ -472,7 +472,7 @@ मैं इस प्रोजेक्ट को पूरी तरह अकेले बनाता और संभालता हूँ जबकि मैं हाई स्कूल पूरा कर रहा हूँ। GitHub Store के लिए वोट करें! - GitHub Store KotlinConf 2025 Golden Kodee Awards के लिए नामांकित है। + GitHub Store KotlinConf 2026 Golden Kodee Awards के लिए नामांकित है। 1. रजिस्टर करें 2. वोट करें diff --git a/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml b/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml index 98cd1ac0..69dc9485 100644 --- a/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml +++ b/core/presentation/src/commonMain/composeResources/values-it/strings-it.xml @@ -472,7 +472,7 @@ Ho costruito e mantengo questo progetto completamente da solo mentre finisco il liceo. Il tuo supporto — anche piccolo — aiuta a mantenere l'app senza bug e a finanziare l'infrastruttura. Vota GitHub Store! - GitHub Store è nominato ai Golden Kodee Awards al KotlinConf 2025. + GitHub Store è nominato ai Golden Kodee Awards al KotlinConf 2026. 1. Registrati 2. Vota diff --git a/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml b/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml index d8024d81..507f2d00 100644 --- a/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml +++ b/core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml @@ -435,7 +435,7 @@ 私は高校を卒業しながら、このプロジェクトを一人で開発・維持しています。小さな支援でも、バグ修正やインフラ費用、機能開発に役立ちます。 GitHub Store に投票! - KotlinConf 2025 の Golden Kodee Awards にノミネートされています。投票は2分で完了します。 + KotlinConf 2026 の Golden Kodee Awards にノミネートされています。投票は2分で完了します。 1. 登録 2. 投票 diff --git a/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml b/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml index 8ec09740..7baa4348 100644 --- a/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml +++ b/core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml @@ -469,7 +469,7 @@ 저는 고등학교를 마치면서 이 프로젝트를 혼자 개발하고 유지하고 있습니다. GitHub Store에 투표하세요! - GitHub Store가 KotlinConf 2025 Golden Kodee Awards 후보에 올랐습니다. + GitHub Store가 KotlinConf 2026 Golden Kodee Awards 후보에 올랐습니다. 1. 등록 2. 투표 diff --git a/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml b/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml index 4005efe5..b94db7e9 100644 --- a/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml +++ b/core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml @@ -435,7 +435,7 @@ Tworzę i utrzymuję ten projekt samodzielnie podczas kończenia szkoły średniej. Głosuj na GitHub Store! - GitHub Store został nominowany do Golden Kodee Awards na KotlinConf 2025. + GitHub Store został nominowany do Golden Kodee Awards na KotlinConf 2026. 1. Zarejestruj się 2. Głosuj diff --git a/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml b/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml index 78c838a7..0f760fec 100644 --- a/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml +++ b/core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml @@ -436,7 +436,7 @@ Я разработал и поддерживаю этот проект полностью самостоятельно, заканчивая школу. Ваша поддержка — даже небольшая — помогает оплачивать инфраструктуру и развивать приложение. Голосуйте за GitHub Store! - GitHub Store номинирован на Golden Kodee Awards на KotlinConf 2025. + GitHub Store номинирован на Golden Kodee Awards на KotlinConf 2026. 1. Зарегистрироваться 2. Проголосовать diff --git a/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml b/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml index 67e61a4d..5fcc8299 100644 --- a/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml +++ b/core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml @@ -469,7 +469,7 @@ Bu projeyi liseyi bitirirken tamamen tek başıma geliştiriyorum ve sürdürüyorum. GitHub Store için oy ver! - GitHub Store KotlinConf 2025 Golden Kodee Awards için aday gösterildi. + GitHub Store KotlinConf 2026 Golden Kodee Awards için aday gösterildi. 1. Kayıt ol 2. Oy ver diff --git a/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml b/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml index ee56dc55..cb35f40c 100644 --- a/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml +++ b/core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml @@ -436,7 +436,7 @@ 我在完成高中学业的同时,完全独立开发并维护这个项目。你的支持——哪怕很小——都能帮助保持应用无 bug、支付基础设施费用,并实现你们请求的功能。 为 GitHub Store 投票! - GitHub Store 已被提名为 KotlinConf 2025 Golden Kodee Awards。 + GitHub Store 已被提名为 KotlinConf 2026 Golden Kodee Awards。 1. 注册 2. 投票 diff --git a/core/presentation/src/commonMain/composeResources/values/strings.xml b/core/presentation/src/commonMain/composeResources/values/strings.xml index 2b8fe3be..4ae7791e 100644 --- a/core/presentation/src/commonMain/composeResources/values/strings.xml +++ b/core/presentation/src/commonMain/composeResources/values/strings.xml @@ -472,7 +472,7 @@ I built and maintain this entirely on my own while finishing high school. Your support — even a small amount — helps keep the app bug-free, fund infrastructure costs, and ship the features you request. Vote for GitHub Store! - GitHub Store is nominated for the Golden Kodee Awards at KotlinConf 2025. Your vote takes just 2 minutes and means the world. + GitHub Store is nominated for the Golden Kodee Awards at KotlinConf 2026. Your vote takes just 2 minutes and means the world. 1. Register 2. Vote Voting closes March 22