vd-plugins/ServerDrawer/index.js

2 lines
17 KiB
JavaScript
Raw Normal View History

(function(L,s,k,n,o,Q,ne){"use strict";const Qe="[ServerDrawer]";function Me(e){const t=s.findByProps("useIsMobileQuestDockRendered");if(!t?.useIsMobileQuestDockRendered)return console.log(Qe,"WARN: useIsMobileQuestDockRendered not found"),!1;const r=t.useIsMobileQuestDockRendered;return t.useIsMobileQuestDockRendered=function(...i){return r.apply(this,i),!0},e.push(function(){t.useIsMobileQuestDockRendered=r}),!0}const Fe="[ServerDrawer]";function Ve(e){const t=s.findByProps("useIsMobileQuestDockRenderedBase");if(!t?.useIsMobileQuestDockRenderedBase)return console.log(Fe,"WARN: useIsMobileQuestDockRenderedBase not found"),!1;const r=t.useIsMobileQuestDockRenderedBase;return t.useIsMobileQuestDockRenderedBase=function(...i){return r.apply(this,i),!0},e.push(function(){t.useIsMobileQuestDockRenderedBase=r}),!0}const Ge="[ServerDrawer]";function He(e){const t=s.findByProps("useMobileQuestDock");if(!t.useMobileQuestDock)return console.log(Ge,"WARN: useMobileQuestDock not found"),!1;const r=t.useMobileQuestDock;return t.useMobileQuestDock=function(...i){return r.apply(this,i)||{id:"server-drawer",config:{quest_content_type:0,assets:{questBarHeroVideo:null,questBarHero:null},features:[]},userStatus:{enrolledAt:"2099-01-01",claimedAt:null},benefits:{rewards:[]},guildId:"0",tasks:[]}},e.push(function(){t.useMobileQuestDock=r}),!0}const We="[ServerDrawer]";function Le(e){const t=s.findByProps("getQuestAsset");if(!t?.getQuestAsset)return console.log(We,"WARN: getQuestAsset not found"),!1;const r=t.getQuestAsset;return t.getQuestAsset=function(...i){try{return r.apply(this,i)}catch{return{url:null,isAnimated:!1}}},e.push(function(){t.getQuestAsset=r}),!0}const Oe=s.findByStoreName("GuildStore"),_e=s.findByProps("colors","unsafe_rawColors")?.colors;function oe({id:e,size:t=48}){const r=Oe?.getGuild(e);if(!r)return null;const i=t>=40?16:8;return r.icon?n.createElement(o.Image,{source:{uri:`https://cdn.discordapp.com/icons/${r.id}/${r.icon}.png?size=${t*2}`},style:{width:t,height:t,borderRadius:i}}):n.createElement(o.View,{style:[re.fallback,{width:t,height:t,borderRadius:i,backgroundColor:_e?.BG_ACCENT??"#5865f2"}]},n.createElement(o.Text,{style:[re.letter,{fontSize:Math.max(10,t*.4)}]},r.name?.split(" ").map(function(l){return l[0]}).join("").slice(0,2).toUpperCase()||"?"))}const re=o.StyleSheet.create({fallback:{alignItems:"center",justifyContent:"center"},letter:{color:"#fff",fontWeight:"700"}}),se=s.findByProps("TextStyleSheet")?.TextStyleSheet,je=s.findByStoreName("ThemeStore"),ie=s.findByProps("colors","unsafe_rawColors"),ze=ie?.internal??ie?.meta,le=s.findByProps("triggerHapticFeedback","HapticFeedbackTypes");function M(e){const t=je?.theme;return e&&ze?.resolveSemanticColor(t,e)||"#000000"}const w=12,O=12,ue=42,_=220,ae=4,P=16,F=20,de={tension:200,friction:20};function Ue({visible:e,items:t,title:r,anchorX:i,anchorY:l,onClose:d}){const{width:c,height:S}=o.Dimensions.get("window"),E=(r?O+20+ae:0)+t.length*ue;let g=i,f=l+48+10;g+_>c-w&&(g=c-_-w),g<w&&(g=w),f+E>S-w&&(f=l-E-10),f<w&&(f=w);const C=M(Q.semanticColors?.BACKGROUND_SURFACE_HIGHEST),u=M(Q.semanticColors?.BORDER_SUBTLE),h=M(Q.semanticColors?.TEXT_STRONG),Z=M(Q.semanticColors?.BACKGROUND_MOD_SUBTLE),R=n.useRef(new o.Animated.Value(0)).current,B=n.useRef(new o.Animated.Value(.5)).current,p=n.useRef(new o.Animated.Value(0)).current,[N,$]=n.useState(!1),A=n.useRef(!1);n.useEffect(function(){e&&!A.current&&($(!0),R.setValue(0),B.setValue(.5),p.setValue(0),o.Animated.parallel([o.Animated.timing(R,{toValue:1,duration:150,useNativeDriver:!0}),o.Animated.spring(B,{toValue:1,useNativeDriver:!0,...de}),o.Animated.spring(p,{toValue:1,useNativeDriver:!0,...de})]).start())},[e]);const T=n.useCallback(function(){A.current||(A.current=!0,o.Animated.parallel([o.Animated.timing(R,{toValue:0,duration:120,useNativeDriver:!0}),o.Animated.timing(B,{toValue:.8,duration:120,useNativeDriver:!0}),o.Animated.timing(p,{toValue:0,duration:120,useNativeDriver:!0})]).start(function(){A.current=!1,$(!1),d()}))},[d]);return N?n.createElement(o.Modal,{transparent:!0,visible:N,onRequestClose:T,statusBa