From a945005e762fa0ac157152db37c786f7ae3344b2 Mon Sep 17 00:00:00 2001 From: mr-shortman Date: Sat, 3 May 2025 15:06:07 +0200 Subject: [PATCH] production test --- Dockerfile | 15 +++ capacitor.config.ts | 9 -- docker-compose.yml | 39 ++++++++ public/icon-192x192.png | Bin 0 -> 3046 bytes public/icon-512x512.png | Bin 0 -> 7336 bytes public/sw.js | 2 +- src/app.config.ts | 2 + src/app/(router)/expense/page.tsx | 21 +---- src/app/(router)/group/[id]/page.tsx | 4 +- src/app/(router)/page.tsx | 4 +- .../expense/create-expense-page.tsx | 19 +--- src/app/_components/expense/expense-split.tsx | 89 +----------------- .../expense/paid-by-custom-split.tsx | 2 - .../{split-to.tsx => split-between-input.tsx} | 9 +- src/app/_components/group/group-card.tsx | 48 +++++----- src/app/_components/group/group-page.tsx | 28 +++--- src/app/manifest.ts | 8 +- src/lib/hooks/use-expense-params.tsx | 12 +++ 18 files changed, 123 insertions(+), 188 deletions(-) create mode 100644 Dockerfile delete mode 100644 capacitor.config.ts create mode 100644 docker-compose.yml create mode 100644 public/icon-192x192.png create mode 100644 public/icon-512x512.png rename src/app/_components/expense/{split-to.tsx => split-between-input.tsx} (81%) create mode 100644 src/lib/hooks/use-expense-params.tsx diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..97c5bae --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:18-alpine + +RUN npm install -g pnpm + +WORKDIR /app + +COPY package.json pnpm-lock.yaml ./ + +RUN pnpm install --frozen-lockfile + +COPY . . + +RUN pnpm build + +CMD ["pnpm", "start"] diff --git a/capacitor.config.ts b/capacitor.config.ts deleted file mode 100644 index 06b490a..0000000 --- a/capacitor.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { CapacitorConfig } from "@capacitor/cli"; - -const config: CapacitorConfig = { - appId: "bettersplit.shrt.solutions", - appName: "bettersplit", - webDir: "out", -}; - -export default config; diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3cd1ee9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,39 @@ +services: + nextapp: + build: . + container_name: bettersplit + restart: always + ports: + - "3000:3000" + expose: + - "3000" + labels: + - "traefik.enable=true" + - "traefik.http.routers.bettersplit.rule=Host(`bettersplit.shortman.me`)" + - "traefik.http.routers.bettersplit.entrypoints=websecure" + - "traefik.http.routers.bettersplit.tls.certresolver=myresolver" + networks: + - bettersplit_network + - webproxy + db: + image: postgres:latest + container_name: bettersplit-db + restart: always + shm_size: 128mb + env_file: + - .env.production + volumes: + - pgdata:/var/lib/postgresql/data + ports: + - "5432:5432" + networks: + - bettersplit_network + +volumes: + pgdata: + driver: local +networks: + bettersplit_network: + driver: bridge + webproxy: + external: true diff --git a/public/icon-192x192.png b/public/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fb8939f6e82b3313afc71625f11f5ab253272d GIT binary patch literal 3046 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 JsFXy#|6k}LUOxZ; literal 0 HcmV?d00001 diff --git a/public/icon-512x512.png b/public/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..dce2069179b4b06a7fd2616c87648dd3b173183d GIT binary patch literal 7336 zcmeHMi91y9+kei?V32){L_674UqWWcRv}83tl6_GS+dNL$}*x=Dn)!tMOk9VHlvIZ zk{0_QO3I!vnB{%E@B3H$uHQA+ne(jodCvXZ&*%Q!_erz0u@DlF6951R9kMh%1^@;Y zF#yjCZ+~OHtil_AxTW)100br0F9h7pm4%JS*<%(a;KheczhDLDZ)|N0KzWuR>l66>`&+7$H8yi_XK`r%=Y~ZdZgY}>Oq}37nW7m!=70zi+gV4G2LtcGWxP+&P9&0 zk1Vgs&8n)Z68f)~R2uA6XWC8Z*7cYl|BgJFZu`6VP!PK|EzCFsCIq-+GaAoh+&p$wdS6x_rAu^A}gt%8y@JIDFVNUFAeVJj6F-$-wk5X*COET*)I*8=?k>b zdoN${qA!>hWUlp|Y7wvy`DJ`iEa%9&;K1c2ibClGACTVGjjx}$K(niRMD15UMz6ZAP?43t0VR7cS14C<58M9864P*Lk$?#V0t^!?g-QVMp3`=0-v(}53g!wt@vmYir`aP7dQEa z8%odzpI>p;d&LDY+zAY;3(;ETLn{*_6;RSDiCK#MD8+qi4PUcl#yW`I+^T|3!@-oV z+!3k@sv#90Cd@(5c8<#iy@%qW-$UD zvAzQI3=RNgOE}}ge+&OHO5pSeoOE_R9scR}@85TpW1c^MUKO`IQ4GvRLH?wu zQ%1lnA@+~YAODiMH_jNKW|v`8Xn99ECl7CbG|%Wh>($+{6f!?3^I=!g$TFH4_F=z< zN!*aE%?Iw5%<*aL0yN^(%#2O?ZIz@xdY*FzGmk*hFm2k$544o*-eq|DON4Nkdp^&k z^x=V)miC1!`=@#-Ek8y(mCZTkY%K!|HhQ@bVM3c)f1TrI)tip+^BKCW`6*{>;5@yJsQ}$fn_u6EeK!^VPi~<40g; z+CC(r*Lp`fLG3aC+ayvL_RgS3ak7~Ch6UGUVkh~s^ODOPA9)9$;TP9NUZxM{jf$+- zEa`(Wu1YuU)S~QJr^=z^@*1M@zL7my0I>ts6;38z!$gaH|@k{ugd zuxn-{8bcH)CCTo4dl%Iv4=2ZxY78)7yY@IwQpEdjLqqP^nM?oNd;=Mm znafK3TyJWHtj>zZwoCtilqi9#4d0h;dZ?w(bay+rP#)s0J#=z&V~^dhljuBxL-!Ui zNi1gh3F%83?sfs2wATh~%^A12HU%TWp`nz;#YK41yv_2AomRe{rk9kIR0fYeJaz!& zN-hl9g}d&HbB%8#afh;1IKrC^V?I7hoBgr06gAM>tM%I_yaZ8t6w}+1ygWBo){wA9 z`J1Zx`eVhxk3FRxE<5I9$;8d2If-_xjaw1)?^gU@k@^4ahYvPutd#|y zzaj^B0$Y=eccTG=6TJ4Dt|Y82Jy$<|NthV_Vst@jmxA2<9$pN1WU8xV?*H{ME_*+Z z=yB1$YOYyRmd5e;Mo%>yc>n9Czv?B_mlqX?I|NeCFFy0FZU<#kJgH=H1RjOk zLM?|uetk@;f1ZGoA9z>Gt3+Ab-<72;0rHRg?jCvJd*G6`0JWRoy$cYbUk(p%WBCdJ zBUK+IK(k+38T6GLgG%b>YDHmy75$0E0)J>5v%%LD$WD_6IPZu6mC(uiPRRge?er9K z0sAQ2>D)33r8`Fv0hghnOH>#Q-riR=&t6;3?tp*t>yr7ksrMojXcdV^2_#N%U+>!g zPP?uRlus^IZoxMe@h8 z0BEJNxD}6q4zGxtP=zQMxf$Hkqfd!y6c!ei`@iSaw*B+^>={P9uVCsIcs}_zD$Yz! zPKG#hIBT=n9UM+#@&@?OZ*NjW)NkY@d-(B<Vv2w0fY>Zp}5DLs8raWaZ7}>2A1KcfRa;PYsyN+{Oei%?W z_Qq{#Y3bz7gHG(c6;R+<>fR?td%_PsW-5;N)yJPPqiI8 z&ADwuYowEpic<@j5Y4wU?uws*>v%*W`m1qHrPgiCj+JTBY4#6}i;MdtB#M*OK~SAh z){;fm=0}XW1I=Be)G<``9CE%W8GVXe9w!N1C-a46WW3C3F-m0hUfwOe!_VOKeC?`| zsMi70iw|R{BrYf5g5AZM8=7ZCfu*WBE8^8rNzPPCRWpUUMdn6TRaMJ;g2cSs+N0z1 z&XaG5EQa~*LXo{Eq!awg{uF;scZUACui2q^OBR?lkz9$X*}Q3!RXXXGs>|5JwUvdR z##!y7vpdJW(sD~@Bb(2vU`#GO&-dOAwu^~ypS2pKAE|UM-rRaVCPpva;fz{iiTHax zRTE;pm)#Sh)&_{mPPxm3?6?i1OZ7iH^K>Wbu=4Wq$@-Pgh6| zR7}VAh`o)n2>2qFLx2m(*W_%ZoNsv_mU9A^lp`0zUOne+WQEXZzPmXG$jGZJiRB}r zvyHM63P83jgHCA9)flv=I(@99t-C~9wgWX|m*G;;>!y(AN@C;<*Sh#U@Qm3?vdcA@ zb?F*lAzwcHENrnFoYEbCp4cO$0M6F59~l;c5e2mOq|_Bob=WWkn!SUW+V?Y5!v%3V zfwG~cLBiDaK$ zuVn>N3UP~Ej`Z^Zz3+6frgoS3POrc#FX7uLkfTT?b6F|ZM@jAWfGkeNdZz&YUx22N z_B^30vy#j9(sZv^uEJlhE0hS&76yaYG(8%vgw?cr63QnqK8DQHA7mRM&MFbAb4RKM zF~f2ynV{N@?d|L+Xzo7#+4?PfcmW=xt?v0{t!N_K6kn!%)hsm>ol^%irCzac2di7A zcr=zgT`grZP@ldJXn`4hf@5y`Km-DAna2K1Lr_FctX=3hP3UO6CyqJ6;5_o#% z`g3*-R6E`5JyT1i4nKp#5b~(ZHc6TB%GP9keMFj9=jc2`-_THPMFB1jne5^174PXE zAAkH*Y+M85`?X3}A829h{ti(|VRfEoZ2(#9TSdRh{q0Pd z%^~y)w8L%ynuzv&lwc+^^6PWajVO&l(?=SpFgyr2Ac!SR%HUg?j46U=ByQCLeQ=dX zSGVdBLr#Z-e^-fqJOu1^dMX9_hs1uJCG zZ@d-6+-rbb5RZmZ^?8?=&9Gf)`JFe|8Krfc?)!fgqNeexk0mc|o z&F6fDKSTB*walxhN-`?gCVC%A6BCZa|9;0hAP%mlUX)A83$MRaM1r0>L`R&nx){`& z62%&F+hRzX?@RAIUca38oEdQuYp~(WudKTtEP-Xg>+D+tzXxh>QIb|%)hyy0S4I1| z3x~w4Ql5zD^f^*HcXuN`xi%8u`dogVwc*GpXI8*1$*Gr8RrPhGc2%^DN+me+*(C^> zcF$f7L2pVXJ$-*?K0@w+S#bMS^SbgAIszUUiQdBXe;is%usjI*Y1A`kBG+g07K^pM zJ}_vmc9A@LsNV7Bxx>wpMDfQURMY%@xsg)gVaMDGCo$zb!`Ne?<=!pl;2vp7AxfF4 z9ZuU--6Gz5E&5wEOB(Okh=pEr*I$cfKgoqxS|VcCx2e5VC!c7J>I`1@y-OYbhQ}Wc z^YSl~!iP6!(NrI70<$79U$?B7GeA&CA@b)#)uO)%x_4y`;Z|TQp+^zV0hIc9h zqV~p4(3wbAiPr4K`4G}w0qW&-fY^T4Pn?V>Y-p}Gt5#b$k7f*SM8J!(moIMw26>XM z3AMXS3A~H%Hl=8w063=doupjrfLu2@wvFl5Y6Z|BcwTo#vuC^!;d=C z`0yX9Wbxr!z2=18N>aikO`y3;}~tk?|R<6OKFh z^|8YG{xozJSZqgT^_1@ZmREP_8ma0Z|!e>*1H>&|t0d?~+S;##v>%CgtkAfbz??hPW(iQi=761R?@0(6o7zq4 ze#KRSgV%94;>3#;QmCrQneJ{7#t;Kd#l9#ifgMLSdPRt z?%_BN4+wpBY`#;U2TCw#l-BLf`Rc&(9~@{Or7v%9)RcO06Tr4YzF7m;dsJmo%ohlfhlSW`Wq2ce070UZ1nEK0*u&scR^Y{d)PHW z0UDKn%l_^D+)O+;WUp5hDm@Ib7g|rQA#Jqt@t=cJTMs$|*=_B5XYTw+oi*pO!+$L1 zQ7Dv?eyUXc=Q+1--QvAPA0%D;cT4KX-4)6GEh;CuDJd!Hd+I>G(ln`NaN%dC3uM)j zH)De&+TXOan72Wed11HV;K<{xN{)Ivj>D5P`pu6^a8+9yr9J?FZXa9IWZnFZ`d;!5 zG(7wBux8(XZ7bXW2ksj>ob>xDKd^n*c3V?EyfN^n9kj4!80@6o>Ij$kYR-l6`_>H3 zH!rE9g_0m26q0J3=v^dex9i2;w^@oVX6s=ZeRx9ggX1fMoq*^y?^zuFlz-4Pp0GO_ zdPhq&>3{Yw$$XF*&U(*)*@){<;ohWg@r{ZY@UMMC760vdwjP{k^3~;D_#MazRuf?k z;Zs-tMKb-}@O{~J5!=o8g$>o8ra4DQ_|YY}8gTjI<^2TVz2(0ZKct6mdQM7&(9h4u zp{MhNZlV7EZ|isF9-ODnG*Ek9S($Rxxw z%OZ@{saZO=E_zmOZWo<<9!B3==!zeDG?~X)r8@!bU2`sVRK#C}^HL0WntD}H_mlKg zZI)p)_mYRSM-+JCylnOeYnS)K<#-0?ai=&vsPW{$UGsnDijNO)xuOv+!Aba9{tYd0~*;>6IPfrQN`IC*&V@Vj6TAiaIFU&PK> z59Wcv5ht~nE3;;jq@UP>7cES`Qz}UN1deQJq)(d=8{A zCf%{1VzsM^%S}_Xg314L;4uP}s=4}{U0ImK9)Pwlttyt}vid@ID^aj_c>x-qS)0jC z<|x{D@cs?M0-f{c{wUf+12tY88qbksr>uWMprf?_Ty4A4-*{$q*JC%dlMz&f0PkqO zzlt`c$V45`l!KoniWd^k{3!5XoWmGJg=N9d77l9+8s}Fmm+p&rRw*3iaT3LYF$o2> zg&WY*pQW-U3rIn$n)RW8CVPPTgqcFsSktW|MO61m0pPt5=J;k=V~t03THv!AQoecQ z6c${bIpWAtbXz2IYJbaEMe{UcEFz~&xD#PFB9ha4!gvLpLza88W_(NR)B z?dy-y#=t4_Nt5nw*rtMhu2o5zo|(2j>!kz+FZJGEK7Zb!^9n;BT>Mpw;*onokl-9; zO!iq@uy-*61V$=<-6T#K#CPY)0I(4CrQtzT)l#b=T)`2(k;)g_=IY}HPDcpK zVSF{Zh;N~z!vsSNt2G+&mB0Z{X+c$1!zEtST?V%~I&6RuROqaR2S3wHsKX6QwFO-G zDeXQEy-}+rD#$Zd)$OWk66UC*IHk4Q53D&H}9{ pi(NxwQYp*vlkRyl6(e~|BzbAG7&SKiAjBGQ$jrv{g^A~d{{dv~C%FIs literal 0 HcmV?d00001 diff --git a/public/sw.js b/public/sw.js index 535f4b4..72f7e79 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const t=(t,n)=>(t=new URL(t+".js",n).href,s[t]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=t,e.onload=s,document.head.appendChild(e)}else e=t,importScripts(t),s()})).then((()=>{let e=s[t];if(!e)throw new Error(`Module ${t} didn’t register its module`);return e})));self.define=(n,a)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let c={};const o=e=>t(e,i),r={module:{uri:i},exports:c,require:o};s[i]=Promise.all(n.map((e=>r[e]||o(e)))).then((e=>(a(...e),c)))}}define(["./workbox-e9849328"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"0820c38a85c862052596b67a14fe8157"},{url:"/_next/static/7ZHts89Qmk_UFK8ov_QqN/_buildManifest.js",revision:"01b09b3e9dda7539be2313c35bd1b563"},{url:"/_next/static/7ZHts89Qmk_UFK8ov_QqN/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1-af1f1e25dae140be.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/200-1def31964b2356b0.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/23-54b4ab21f3550ebc.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/283-d8ce32dab0aedc01.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/315-7943c6e46aec5d5e.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/323-cfe0cbab1e5ba15a.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/369-b616bc8f00fc0b77.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/427-8d8c459025f4dcb9.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/47edcb22-e33a29a5fce76af4.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/748-db3977eb7f9230bd.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/75-789b1b8b478cf3fd.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/add/page-54de27b56a2dc618.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/expense/page-c5772adc1910fa74.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/friend/page-aeacac438903a352.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/group/page-ce470f9cffb07e38.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/layout-4c08d82a2e792b42.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/(router)/page-623140009262c78d.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/_not-found/page-50a202315221fd62.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/api/auth/%5B...nextauth%5D/route-c76daf5c74849c0b.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/api/trpc/%5Btrpc%5D/route-3f6b1acc32fca989.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/layout-8e88f1db16e0189d.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/app/manifest.webmanifest/route-1cba1848fd15aa6a.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/framework-289b5a20f31bf2b1.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/main-094812ef791a00bb.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/main-app-aff18f84bb4c7dff.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/pages/_app-7e5d4a60281b6427.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/pages/_error-77fa64d81664a8ec.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-69c67d16c363604a.js",revision:"7ZHts89Qmk_UFK8ov_QqN"},{url:"/_next/static/css/64d9c3c8374914ad.css",revision:"64d9c3c8374914ad"},{url:"/_next/static/media/569ce4b8f30dc480-s.p.woff2",revision:"ef6cefb32024deac234e82f932a95cbd"},{url:"/_next/static/media/ba015fad6dcf6784-s.woff2",revision:"8ea4f719af3312a055caf09f34c89a77"},{url:"/favicon.ico",revision:"7f98bbc43ba0d1dbf3564adf0821a304"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:t,state:n})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")})); +if(!self.define){let e,s={};const t=(t,n)=>(t=new URL(t+".js",n).href,s[t]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=t,e.onload=s,document.head.appendChild(e)}else e=t,importScripts(t),s()})).then((()=>{let e=s[t];if(!e)throw new Error(`Module ${t} didn’t register its module`);return e})));self.define=(n,a)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let c={};const u=e=>t(e,i),r={module:{uri:i},exports:c,require:u};s[i]=Promise.all(n.map((e=>r[e]||u(e)))).then((e=>(a(...e),c)))}}define(["./workbox-e9849328"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"6affb59fb8c2df7b190802cad930aa5b"},{url:"/_next/static/Cm2jYt9uNjK8uPIIvDWBI/_buildManifest.js",revision:"15df7dc5351f5b94edd2b1a20a45d20b"},{url:"/_next/static/Cm2jYt9uNjK8uPIIvDWBI/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/27-b938a8f5be0d2f65.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/323-208a97957e66363a.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/374-85daa37976c80ce0.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/398.da4f45f6283a8297.js",revision:"da4f45f6283a8297"},{url:"/_next/static/chunks/404-bf75935b3eed64c8.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/411-fea7c64a77d7efa3.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/453-b5d952cb4d29e3b4.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/47edcb22-53c213bb67da8598.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/545-7aa7673ff80b6c70.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/579-82307ffc8ffc58ff.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/595-2e6f88d496f5c04d.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/638.37b898530794b952.js",revision:"37b898530794b952"},{url:"/_next/static/chunks/659-e1309d1d4e255fcb.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/660-a91e7856f810ff30.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/748-9d5644ce89f9506a.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/75-eb83b6b9a39598dc.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/846-f2b6981fa389b3bc.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/910-7e83ac56c1b6a3c2.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/add/page-474b4b41b3983355.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/analytics/page-d397853fbaad83f3.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/expense/page-c5e054c19a00b8e2.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/friend/page-317e7086c179127c.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/group/%5Bid%5D/page-141f2237db4e113a.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/group/page-cdaa4a4a507fcb4b.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/layout-e77c9a475f367069.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/page-1799bc7fcb465857.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/(router)/sign-in/page-f593adfc0074e628.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/_not-found/page-4d03dbbd09ffec58.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/api/trpc/%5Btrpc%5D/route-2b30b565f09670de.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/api/webhooks/route-f238f351315e1f85.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/layout-2d41694e70f603ba.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/app/manifest.webmanifest/route-691c283953c54b58.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/framework-04d66b2debeeab83.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/main-727bb79e63f7e56f.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/main-app-5e13f19d51c2f970.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/pages/_app-bc68a6350feecfd0.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/pages/_error-19bbda1bbbe490f7.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-f93f9518d22d2188.js",revision:"Cm2jYt9uNjK8uPIIvDWBI"},{url:"/_next/static/css/cec5fe637ccb3eea.css",revision:"cec5fe637ccb3eea"},{url:"/_next/static/media/569ce4b8f30dc480-s.p.woff2",revision:"ef6cefb32024deac234e82f932a95cbd"},{url:"/_next/static/media/8d697b304b401681-s.woff2",revision:"cc728f6c0adb04da0dfcb0fc436a8ae5"},{url:"/_next/static/media/ba015fad6dcf6784-s.woff2",revision:"8ea4f719af3312a055caf09f34c89a77"},{url:"/favicon.ico",revision:"7f98bbc43ba0d1dbf3564adf0821a304"},{url:"/icon-192x192.png",revision:"cd37f6d09683174331b06fc5b0f113e7"},{url:"/icon-512x512.png",revision:"b66ee9b60265ffb938f289a64b1fcea9"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:t,state:n})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;const s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.startsWith("/api/")}),new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")}),new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute((({url:e})=>!(self.origin===e.origin)),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")})); diff --git a/src/app.config.ts b/src/app.config.ts index d4d5c76..90bbca3 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,10 +1,12 @@ type AppConfig = { name: string; + shortName: string; navigator: Array; }; export const appConfig: AppConfig = { name: "Bettesplit", + shortName: "BS", navigator: [ { name: "Home", diff --git a/src/app/(router)/expense/page.tsx b/src/app/(router)/expense/page.tsx index b1c06b6..40e3252 100644 --- a/src/app/(router)/expense/page.tsx +++ b/src/app/(router)/expense/page.tsx @@ -12,6 +12,7 @@ import React from "react"; export default async function Page() { const splits = await api.expense.getAll(); const sessionUser = await currentUser(); + return ( <>
@@ -20,26 +21,6 @@ export default async function Page() {
- {/* STATS */} - {/*
-
-

Expenses

- {splits.length} -
- -
-

Expenses

- {splits.length} -
- -
-

Balance

- - {getAmount(812.47)} - -
-
*/} - {/* FILTER BAR */}
- ) : null} -
-

{splits[user.id!]}

-
- - - ))} - -

Paid from

-
    - {participants.map((user) => ( -
  • - - {session.user.id !== user.id ? ( - - ) : null} -
    -

    {splits[user.id!]}

    -
    -
    -
  • - ))} -
*/}
); } diff --git a/src/app/_components/expense/paid-by-custom-split.tsx b/src/app/_components/expense/paid-by-custom-split.tsx index 2449049..de70064 100644 --- a/src/app/_components/expense/paid-by-custom-split.tsx +++ b/src/app/_components/expense/paid-by-custom-split.tsx @@ -10,10 +10,8 @@ import { } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { DialogClose } from "@radix-ui/react-dialog"; -import type { PublicUser } from "next-auth"; import Avatar from "@/components/avatar"; import React from "react"; -import { Input } from "@/components/ui/input"; import { NumberInput } from "@/components/number-input"; import { EuroIcon } from "lucide-react"; import { cn } from "@/lib/utils"; diff --git a/src/app/_components/expense/split-to.tsx b/src/app/_components/expense/split-between-input.tsx similarity index 81% rename from src/app/_components/expense/split-to.tsx rename to src/app/_components/expense/split-between-input.tsx index 02516d2..e8756a0 100644 --- a/src/app/_components/expense/split-to.tsx +++ b/src/app/_components/expense/split-between-input.tsx @@ -10,8 +10,11 @@ import { } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { useExpenseStore } from "@/lib/store/expense-store"; -function SplitTo() { + +function SplitBetweenInput() { + const participants = useExpenseStore((state) => state.participants); const splitType = useExpenseStore((state) => state.splitType); + return ( @@ -25,7 +28,7 @@ function SplitTo() { >
- Who paid? + Split between @@ -36,4 +39,4 @@ function SplitTo() { ); } -export default SplitTo; +export default SplitBetweenInput; diff --git a/src/app/_components/group/group-card.tsx b/src/app/_components/group/group-card.tsx index 50b4a77..d4e52cb 100644 --- a/src/app/_components/group/group-card.tsx +++ b/src/app/_components/group/group-card.tsx @@ -23,33 +23,29 @@ function GroupCard({ group }: { group: Group }) { {group.name} -
    - {group?.members?.slice(0, 4)?.map(({ user }, idx) => ( -
  • - -
  • - ))} - {Number(group?.members?.length) > 4 && ( -
  • - +{Number(group?.members?.length) - 4} -
  • - )} -
+
    + {group?.members?.slice(0, 4)?.map(({ user }, idx) => ( +
  • + +
  • + ))} + {Number(group?.members?.length) > 4 && ( +
  • + +{Number(group?.members?.length) - 4} +
  • + )} +

{group.description}

diff --git a/src/app/_components/group/group-page.tsx b/src/app/_components/group/group-page.tsx index c4a4b04..d1bdbaf 100644 --- a/src/app/_components/group/group-page.tsx +++ b/src/app/_components/group/group-page.tsx @@ -13,10 +13,15 @@ import { Button } from "@/components/ui/button"; import { Icons } from "@/components/icons"; import ExpenseCard from "../expense/expense-card"; -function GroupPage({ groupId }: { groupId: string }) { +function GroupPage({ + groupId, + sessionUserId, +}: { + groupId: string; + sessionUserId: string; +}) { const [group] = api.group.get.useSuspenseQuery({ id: groupId }); if (!group) return ; - const groupExpenses = group?.groupBadges?.map(({ expense }) => expense); return ( <> @@ -63,21 +68,12 @@ function GroupPage({ groupId }: { groupId: string }) {
    {groupExpenses.map((expense) => ( - + ))} - {/* {group.members.map((member) => ( -
  • - - - {member.role} - - - -
  • - ))} */}
diff --git a/src/app/manifest.ts b/src/app/manifest.ts index 8d1d85d..7c58665 100644 --- a/src/app/manifest.ts +++ b/src/app/manifest.ts @@ -4,12 +4,12 @@ import type { MetadataRoute } from "next"; export default function manifest(): MetadataRoute.Manifest { return { name: appConfig.name, - short_name: "NextPWA", - description: "A Progressive Web App built with Next.js", + short_name: appConfig.shortName, + description: "Split your expenses with friends", start_url: "/", display: "standalone", - background_color: "#ffffff", - theme_color: "#000000", + background_color: "#000000", + theme_color: "#ffffff", icons: [ { src: "/icon-192x192.png", diff --git a/src/lib/hooks/use-expense-params.tsx b/src/lib/hooks/use-expense-params.tsx new file mode 100644 index 0000000..12e84a0 --- /dev/null +++ b/src/lib/hooks/use-expense-params.tsx @@ -0,0 +1,12 @@ +"use client"; + +import { useSearchParams } from "next/navigation"; +import { useEffect } from "react"; +import { useExpenseStore } from "../store/expense-store"; + +export default function useExpenseParticipantsParams() { + const searchParams = useSearchParams(); + const addParticipants = useExpenseStore((state) => state.addParticipants); + // groupId =nmiqj2qgbmi923rqpgu4ngod; + useEffect(() => {}, []); +}