vd-plugins/ServerDrawer/index.js

2 lines
16 KiB
JavaScript
Raw Normal View History

(function(W,s,B,n,o,Q,te){"use strict";const Ae="[ServerDrawer]";function Me(e){const t=s.findByProps("useIsMobileQuestDockRendered");if(!t?.useIsMobileQuestDockRendered)return console.log(Ae,"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 Qe="[ServerDrawer]";function Te(e){const t=s.findByProps("useIsMobileQuestDockRenderedBase");if(!t?.useIsMobileQuestDockRenderedBase)return console.log(Qe,"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 Ve="[ServerDrawer]";function Fe(e){const t=s.findByProps("useMobileQuestDock");if(!t.useMobileQuestDock)return console.log(Ve,"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 Ge="[ServerDrawer]";function He(e){const t=s.findByProps("getQuestAsset");if(!t?.getQuestAsset)return console.log(Ge,"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 We=s.findByStoreName("GuildStore"),Le=s.findByProps("colors","unsafe_rawColors")?.colors;function ne({id:e,size:t=48}){const r=We?.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:[oe.fallback,{width:t,height:t,borderRadius:i,backgroundColor:Le?.BG_ACCENT??"#5865f2"}]},n.createElement(o.Text,{style:[oe.letter,{fontSize:Math.max(10,t*.4)}]},r.name?.split(" ").map(function(l){return l[0]}).join("").slice(0,2).toUpperCase()||"?"))}const oe=o.StyleSheet.create({fallback:{alignItems:"center",justifyContent:"center"},letter:{color:"#fff",fontWeight:"700"}}),re=s.findByProps("TextStyleSheet")?.TextStyleSheet,_e=s.findByStoreName("ThemeStore"),se=s.findByProps("colors","unsafe_rawColors"),Oe=se?.internal??se?.meta,ie=s.findByProps("triggerHapticFeedback","HapticFeedbackTypes");function T(e){const t=_e?.theme;return e&&Oe?.resolveSemanticColor(t,e)||"#000000"}const k=12,L=12,le=42,_=220,ue=4,I=16,V=20,de={tension:200,friction:20};function je({visible:e,items:t,title:r,anchorX:i,anchorY:l,onClose:c}){const{width:a,height:S}=o.Dimensions.get("window"),E=(r?L+20+ue:0)+t.length*le;let g=i,f=l+48+10;g+_>a-k&&(g=a-_-k),g<k&&(g=k),f+E>S-k&&(f=l-E-10),f<k&&(f=k);const C=T(Q.semanticColors?.BACKGROUND_SURFACE_HIGHEST),u=T(Q.semanticColors?.BORDER_SUBTLE),h=T(Q.semanticColors?.TEXT_STRONG),Z=T(Q.semanticColors?.BACKGROUND_MOD_SUBTLE),w=n.useRef(new o.Animated.Value(0)).current,R=n.useRef(new o.Animated.Value(.5)).current,p=n.useRef(new o.Animated.Value(0)).current,[v,N]=n.useState(!1),A=n.useRef(!1);n.useEffect(function(){e&&!A.current&&(N(!0),w.setValue(0),R.setValue(.5),p.setValue(0),o.Animated.parallel([o.Animated.timing(w,{toValue:1,duration:150,useNativeDriver:!0}),o.Animated.spring(R,{toValue:1,useNativeDriver:!0,...de}),o.Animated.spring(p,{toValue:1,useNativeDriver:!0,...de})]).start())},[e]);const M=n.useCallback(function(){A.current||(A.current=!0,o.Animated.parallel([o.Animated.timing(w,{toValue:0,duration:120,useNativeDriver:!0}),o.Animated.timing(R,{toValue:.8,duration:120,useNativeDriver:!0}),o.Animated.timing(p,{toValue:0,duration:120,useNativeDriver:!0})]).start(function(){A.current=!1,N(!1),c()}))},[c]);return v?n.createElement(o.Modal,{transparent:!0,visible:v,onRequestClose:M,statusBa