From 3de3e6f35a2a3179ecd47747ad6b285c0eeb7841 Mon Sep 17 00:00:00 2001 From: UltraLionFr Date: Wed, 20 Aug 2025 16:05:24 +0200 Subject: [PATCH] Update --- app/[id]/page.tsx | 50 ++++++++++++++++++++++++++++------------------ prisma/altbin.db | Bin 65536 -> 73728 bytes 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/app/[id]/page.tsx b/app/[id]/page.tsx index 948cea3..b3a3e9f 100644 --- a/app/[id]/page.tsx +++ b/app/[id]/page.tsx @@ -4,11 +4,6 @@ import { useRouter } from 'next/navigation'; import Prism from 'prismjs'; import { use, useEffect, useState } from 'react'; -import 'prismjs/components/prism-bash'; -import 'prismjs/components/prism-javascript'; -import 'prismjs/components/prism-json'; -import 'prismjs/components/prism-python'; -import 'prismjs/components/prism-typescript'; import 'prismjs/plugins/line-numbers/prism-line-numbers.css'; import 'prismjs/plugins/line-numbers/prism-line-numbers.js'; import 'prismjs/themes/prism-tomorrow.css'; @@ -19,6 +14,15 @@ import LoadingPaste from '@/components/paste/LoadingPaste'; import PasswordForm from '@/components/paste/PasswordForm'; import PasteSidebar from '@/components/paste/PasteSidebar'; + +async function loadLanguage(lang: string) { + try { + await import(`prismjs/components/prism-${lang}.js`); + } catch (err) { + console.warn(`[Prism] Language '${lang}' introuvable. Fallback -> plaintext`); + } +} + export default function PastePage({ params, }: { @@ -54,29 +58,38 @@ export default function PastePage({ const data = await res.json(); setPaste(data); - if (data.content.includes('function') || data.content.includes('const')) { - setLanguage('language-javascript'); - } else if (data.content.includes('import') || data.content.includes('export')) { - setLanguage('language-typescript'); - } else if (data.content.includes('{') && data.content.includes('}')) { - setLanguage('language-json'); + const content = data.content.toLowerCase(); + + let detected = 'javascript'; + if (content.includes('select ') || content.includes('insert into')) { + detected = 'sql'; + } else if (content.includes('function') || content.includes('const')) { + detected = 'javascript'; + } else if (content.includes('import ') || content.includes('export ')) { + detected = 'typescript'; + } else if (content.includes('{') && content.includes('}')) { + detected = 'json'; + } else if (content.includes('#include') || content.includes('int main')) { + detected = 'cpp'; + } else if (content.includes('arduino')) { + detected = 'arduino'; } else { - setLanguage('language-bash'); + detected = 'bash'; } + await loadLanguage(detected); + setLanguage(`language-${detected}`); + setLoading(false); }; useEffect(() => { fetchPaste(); - // eslint-disable-next-line react-hooks/exhaustive-deps }, [id]); useEffect(() => { - if (paste?.content) { - Prism.highlightAll(); - } - }, [paste]); + if (paste?.content) Prism.highlightAll(); + }, [paste, language]); if (loading) return ; @@ -91,5 +104,4 @@ export default function PastePage({ ); - -} \ No newline at end of file +} diff --git a/prisma/altbin.db b/prisma/altbin.db index cbb331b54ad590a1ef7d55e183d96b1ee94ae875..9fba8ffd7ac587da8ebb6d759abbcfb16da743a6 100644 GIT binary patch delta 6028 zcmeHLO>7&-6{aZ44pwqEZj!dB;9^Y0B8f^OY1vUM$&qM@wv|#pAt^boYedW4A+^$S zm)@C`Oh*Q7pa%MLX|t6bpe^74%0VcKMAaefp+N(|ZGjw$o_cAE!k4r_(V~a;;zRr1 z?oyOQ(dMN$Ego<)t(2*j_BhSWafb z*4nf&Dzy4<`2tS@ANg->-qrk-Zw?CWoxX2{e7+WcTik;ds7_6Z8zzx8mFk?lEf7*N zjb&A#COJ=nB~xWZsn;FtU1UMwwjd}HmzZIhG9^l`ZVJ1hshkFZ$TBtJJU~>*s~R2b zi%J^Lsd}H1bC`;TLNziYF-{#GRdFW}lHsPR7vR?@^o=SsFIgH7%a*EyBN5={D%Yq3 zc9A2{CmT9PBdW8}7KyPH!&FGcV?f6hI5L9rM@_0p zTs8D?UZtAC2FW#V+Vvh{(mXY(E>rAQmFp2)6W5at!){Mj-8h;!*p1*HPMNy`*RBh< zJN(C5-u=ybxpMl|cs$;J=Ip?${r#^DoF0h1vh~pq-e|Xf_JG-+8u6AP`_#iO`{Vb* zTc5uBUw9Oq9nIu`@MJ*H|tDUP=zP&&kx25&qL{T!A ztWqd4L_pKa*~wJ&&B>G_%@M2eePUU zu^O1(M6e61A5|eX&AcR2)W`ntM<*`TV`L4&l>kF`_l`X^{*sl`RGEM$IJ}k(Ska=S z>cH3iHL&d2)^vGX4Fy1q@;vJIy4(~YCVa}^!>9nv>0ysOc{c* zID|7}GFy<$<|Yr1lom>k_V8{>92_g?ZCKX&wSbdP=V7Evm&$y>(3@h+>&}{lBaLV^ z%1P0(=hwU5G%W_v(u7y?mM%Yowj{|*xW~MJ2wo}}O;MLD?gZR{E}*)C_8X>^D?f#e z8!2Ojnqv~9;YeRCUK!QkEZFDZMqpKE6m}Z;+(4O^;1+p`$la$w*FFg~1?K1HkxRzS zuNW)Mt>B=y|4!D2#89J+^9|gD!Bkno)2N9BU6!;1rWheaY7uha z>47ql^y-qqHMKckc*oyG!_wi9hEu&!R67xh>?&JP^G}QFM(dw9jiTrIs^c3$6+>R4 zCQ3WvHQ#>!Oa~t9c}df9uoLVL-hXH7pFjR^30!F#XWH$5y!FMcwhy07 zzcU{YS_86AIC}J2K;FDN8>rl~jzMj47K>K;V-WfTNf_yhKfYu4JBQ_K zo^()S=aCeJ4B&iMWPBeGRdyc)#$z?)=^Ao}%tKZH+FwJu!iR^4N$)-+Q7B|JMa;75 zOc$;Ts4wZ;KL=Av*w`d=IfRG<0F@mG4GFHp>xn!PEhHQu!I4=*pcf88c?iQ%qy_=` zJC6q;Apz{K>VkZ38(2NW6_;eskjGLJgQHJT#0&|&@Kk!i)B9l_3D}DeK)~N#jE7Jf zxpha?lOe(H|1E5TM}>HOW_K_0^$v*s??73CwSiY&fV44ld&AlHL9Na+boean zl&R?~nVLFG&VFX77NWI9Q98T^`SAjAr2pGGXIqO)gyBjUP{D#!wLm zuSpe7p6!QZ5$ZN)HFqzgFgr7jtLUtskV$4;KR^NKn%$?9KFDb)WR= zj~OgiNeT)M3$h_bCfxiTDi8bPwV?g;wQ!4UKg_+{3JEE`kGSb2Htl)&3-<5Ujt3Md zG@LQ-a)B{_!EhjdSqpgYxi;q-wU6IFb<|5Qpxy0<1oUBUDu5XiBB8+?vNq=`$F5e$ zZ1COY+?3d|=kK3D$;8PYz=L~?nbE8QBu7|1+1mY$m%PC-15DH59CkcUaB2#qMD>=X^feRlyuq fbG2gXu$pW1k?63Rt1JEgf7M*)m#XDleUk7$5*c{M delta 122 zcmV-=0EPd6zyyGR1dtmASpWb45Ro810a>wNq%RT$59a^?000UP`w#XH@ek||=dppv z0khsQ1P%oXeF_2zljlDj5D5>J01w>{#SftmtqcZ$JnF1h)VL c`vkYKfvW_wx0F!}1ONa43bPAv^bex2P%OYG6951J