vd-plugins/ServerDrawer/index.js

2 lines
17 KiB
JavaScript
Raw Normal View History

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