1 line
24 KiB
JavaScript
1 line
24 KiB
JavaScript
(function(Q,Z,f,i,a,n,o,$,M,N,v,Xe){"use strict";function Je(e){const t=i.findByProps("useIsMobileQuestDockRendered");if(!t?.useIsMobileQuestDockRendered)return!1;const r=t.useIsMobileQuestDockRendered;return t.useIsMobileQuestDockRendered=function(...s){return r.apply(this,s),!0},e.push(function(){t.useIsMobileQuestDockRendered=r}),!0}function Ke(e){const t=i.findByProps("useIsMobileQuestDockRenderedBase");if(!t?.useIsMobileQuestDockRenderedBase)return!1;const r=t.useIsMobileQuestDockRenderedBase;return t.useIsMobileQuestDockRenderedBase=function(...s){return r.apply(this,s),!0},e.push(function(){t.useIsMobileQuestDockRenderedBase=r}),!0}function Ye(e){const t=i.findByProps("useMobileQuestDock");if(!t?.useMobileQuestDock)return!1;const r=t.useMobileQuestDock;return t.useMobileQuestDock=function(...s){return r.apply(this,s)||{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 Ze="[ServerDrawer]";function $e(e){const t=i.findByProps("getQuestAsset");if(!t?.getQuestAsset)return console.log(Ze,"WARN: getQuestAsset not found"),!1;const r=t.getQuestAsset;return t.getQuestAsset=function(...s){try{return r.apply(this,s)}catch{return{url:null,isAnimated:!1}}},e.push(function(){t.getQuestAsset=r}),!0}function E(e){let t,r=!1;return function(){if(r)return t;const s=e();return s!=null&&(t=s,r=!0),s??void 0}}const he=i.findByStoreName("GuildStore"),Ne=i.findByProps("useStateFromStores"),et=i.findByProps("colors","unsafe_rawColors")?.colors;function ge({id:e,size:t=48}){const r=Ne?.useStateFromStores?.([he],function(){return he?.getGuild?.(e)},[e])??null;if(!r)return null;const s=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:s}}):n.createElement(o.View,{style:[pe.fallback,{width:t,height:t,borderRadius:s,backgroundColor:et?.BG_ACCENT??"#5865f2"}]},n.createElement(o.Text,{style:[pe.letter,{fontSize:Math.max(10,t*.4)}]},r.name?.split(" ").map(function(l){return l[0]}).join("").slice(0,2).toUpperCase()||"?"))}const pe=o.StyleSheet.create({fallback:{alignItems:"center",justifyContent:"center"},letter:{color:"#fff",fontWeight:"700"}}),tt=i.findByStoreName("ThemeStore"),nt=i.find(function(e){return e?.default?.internal?.resolveSemanticColor})?.default?.internal?.resolveSemanticColor??i.find(function(e){return e?.meta?.resolveSemanticColor})?.meta?.resolveSemanticColor??function(){};function rt(e,t=tt?.theme){if(e)try{return nt(t,e)}catch{return}}const ye=i.findByProps("TextStyleSheet")?.TextStyleSheet,me=i.findByProps("triggerHapticFeedback","HapticFeedbackTypes");function L(e,t){return rt(e)??t}const I=12,ee=12,be=42,te=220,Se=4,A=16,O=20,Ce={tension:200,friction:20};function ot({visible:e,items:t,title:r,anchorX:s,anchorY:l,onClose:u}){const{width:d,height:R}=o.Dimensions.get("window"),B=(r?ee+20+Se:0)+t.length*be;let b=s,p=l+48+10;b+te>d-I&&(b=d-te-I),b<I&&(b=I),p+B>R-I&&(p=l-B-10),p<I&&(p=I);const D=L(M.semanticColors?.BACKGROUND_SURFACE_HIGHEST,"#1e1f22"),c=L(M.semanticColors?.BORDER_SUBTLE,"#3f4147"),g=L(M.semanticColors?.TEXT_STRONG,"#f2f3f5"),x=L(M.semanticColors?.BACKGROUND_MOD_SUBTLE,"rgba(255,255,255,0.06)"),P=n.useRef(new o.Animated.Value(0)).current,F=n.useRef(new o.Animated.Value(.5)).current,y=n.useRef(new o.Animated.Value(0)).current,[ue,ce]=n.useState(!1),V=n.useRef(!1);n.useEffect(function(){e&&!V.current&&(ce(!0),P.setValue(0),F.setValue(.5),y.setValue(0),o.Animated.parallel([o.Animated.timing(P,{toValue:1,duration:150,useNativeDriver:!0}),o.Animated.spring(F,{toValue:1,useNativeDriver:!0,...Ce}),o.Animated.spring(y,{toValue:1,useNativeDriver:!0,...Ce})]).start())},[e]);const H=n.useCallback(function(){V.current||(V.current=!0,o.Animated.parallel([o.Animated.timing(P,{toValue:0,duration:120,useNativeDriver:!0}),o.Animated.timing(F,{toValue:.8,duration:120,useNativeDriver:!0}),o.Animated.timing(y,{toValue:0,duration:120,useNativeDriver:!0})]).start(function(){V.current=!1,ce(!1),u()}))},[u]);return ue?n.createElement(o.Modal,{transparent:!0,visible:ue,onRequestClose:H,statusBarTranslucent:!0},n.createElement(o.Pressable,{style:ne.root,onPress:H},n.createElement(o.Animated.View,{style:[ne.backdrop,{opacity:P}]}),n.createElement(o.Animated.View,{style:[ne.container,{left:b,top:p,backgroundColor:D,borderColor:c,minWidth:te,opacity:y,transform:[{scale:F}]}]},r?n.createElement(o.View,null,n.createElement(o.Text,{style:[ye?.["text-md/bold"],{color:g,paddingHorizontal:ee,paddingTop:13,paddingBottom:12}]},r),n.createElement(o.View,{style:{borderBottomWidth:Se,borderBottomColor:c}})):null,t.map(function(S,C){const de=C===0&&!r,fe=C===t.length-1,nn=!!(S.iconSource||S.IconComponent);return n.createElement(o.Pressable,{key:C,style:function({pressed:rn}){return{paddingHorizontal:ee,paddingVertical:10,minHeight:be,flexDirection:"row",justifyContent:"space-between",alignItems:"center",gap:8,backgroundColor:rn?x:"transparent",borderTopLeftRadius:de?A:0,borderTopRightRadius:de?A:0,borderBottomLeftRadius:fe?A:0,borderBottomRightRadius:fe?A:0,borderBottomWidth:!de&&!fe?1:0,borderBottomColor:c}},onPress:function(){me?.triggerHapticFeedback?.(me.HapticFeedbackTypes.IMPACT_LIGHT),H(),S.action?.()}},n.createElement(o.Text,{style:[ye?.["text-md/medium"],{flexShrink:1,color:g}]},S.label),nn?n.createElement(o.View,{style:{width:O,height:O,alignItems:"center",justifyContent:"center"}},S.IconComponent?n.createElement(S.IconComponent,{size:"sm",color:g}):S.iconSource?n.createElement(o.Image,{source:S.iconSource,style:{width:O,height:O,tintColor:g}}):null):null)})))):null}const ne=o.StyleSheet.create({root:{flex:1},backdrop:{...o.StyleSheet.absoluteFill,backgroundColor:"rgba(0,0,0,0.55)"},container:{position:"absolute",borderWidth:1,borderRadius:A,overflow:"hidden",elevation:20,shadowColor:"#000",shadowOffset:{width:0,height:12},shadowOpacity:.24,shadowRadius:24}}),j=48,Ee=i.findByProps("useStateFromStores"),_=i.findByStoreName("GuildReadStateStore"),st=i.findByStoreName("GuildStore"),it=i.findByStoreName("SortedGuildStore"),ke=i.findByProps("triggerHapticFeedback","HapticFeedbackTypes");function lt({guildId:e}){$.useProxy(f.storage);const t=Ee?.useStateFromStores?.([_],function(){return _?.getMentionCount?.(e)??0},[e])??0,r=Ee?.useStateFromStores?.([_],function(){return _?.hasUnread?.(e)??!1},[e])??!1;return f.storage.showUnreadBadges?t>0?n.createElement(o.View,{style:T.outline},n.createElement(o.View,{style:T.badge},n.createElement(o.Text,{style:T.text},t>99?"99+":String(t)))):r?n.createElement(o.View,{style:T.dotOutline},n.createElement(o.View,{style:T.dot})):null:null}function we({node:e,onPick:t}){const r=n.useRef(null),s=n.useRef(new o.Animated.Value(1)).current,l=function(){return o.Animated.spring(s,{toValue:.85,useNativeDriver:!0}).start()},u=function(){return o.Animated.spring(s,{toValue:1,useNativeDriver:!0}).start()},[d,R]=n.useState({visible:!1,items:[],title:"",x:0,y:0}),B=n.useCallback(function(){const D=e.id,c=st?.getGuild?.(D),g=i.find(function(y){return y?.default?.name==="getGuildsBarGuildMenuItems"})?.default??i.find(function(y){return typeof y?.default=="function"&&y.default.length<=2&&/guild/i.test(y.default.name??"")})?.default;if(!c||!g)return;const x=it?.getGuildsTree?.()?.version,P=g(D,x);if(!P?.length)return;const F=r.current;F?.measure&&F.measure(function(y,ue,ce,V,H,S){R({visible:!0,items:P.map(function(C){return{label:C.label??C.title??"Unknown",action:C.action,danger:C.variant==="destructive",iconSource:C.iconSource,IconComponent:C.IconComponent}}),title:c.name,x:H,y:S})})},[e.id]),b=n.useCallback(function(){ke?.triggerHapticFeedback?.(ke.HapticFeedbackTypes.IMPACT_MEDIUM),B()},[B]),p=e.id;return n.createElement(n.Fragment,null,n.createElement(o.Pressable,{onPressIn:l,onPressOut:u,onPress:function(){return t(p)},onLongPress:b,delayLongPress:500},n.createElement(o.View,{ref:r,style:Re.outer,collapsable:!1},n.createElement(o.Animated.View,{style:[Re.icon,{transform:[{scale:s}]}]},n.createElement(ge,{id:p})),n.createElement(lt,{guildId:p}))),n.createElement(ot,{visible:d.visible,items:d.items,title:d.title,anchorX:d.x,anchorY:d.y,onClose:function(){return R(function(D){return{...D,visible:!1}})}}))}const Re=o.StyleSheet.create({outer:{width:j,height:j},icon:{width:j,height:j,borderRadius:16,overflow:"hidden"}}),T=o.StyleSheet.create({outline:{position:"absolute",bottom:-3,right:-3,minWidth:23,minHeight:23,borderRadius:12,backgroundColor:"#1a1a2e",alignItems:"center",justifyContent:"center"},badge:{minWidth:19,height:19,borderRadius:9,backgroundColor:"#ed4245",alignItems:"center",justifyContent:"center",paddingHorizontal:5},text:{color:"#fff",fontSize:10,fontWeight:"700",lineHeight:19},dotOutline:{position:"absolute",bottom:-2,right:-2,width:14,height:14,borderRadius:7,backgroundColor:"#1a1a2e",alignItems:"center",justifyContent:"center"},dot:{width:10,height:10,borderRadius:5,backgroundColor:"#ed4245"}}),at=i.findByProps("useStateFromStores");i.findByProps("colors","unsafe_rawColors")?.colors;const Be=i.findByStoreName("ExpandedGuildFolderStore");function ut(e){return at?.useStateFromStores?.([Be],function(){const t=Be?.getExpandedFolders?.();return t instanceof Set?t.has(e):!1},[e])??!1}const ct=i.findByProps("toggleGuildFolderExpand"),dt=i.findByProps("useStateFromStores"),De=i.findByStoreName("GuildReadStateStore"),k=48,re=16,ft=[{top:6,left:6},{top:6,right:6},{bottom:6,left:6},{bottom:6,right:6}],Ie=N.getAssetIDByName("FolderIcon");function Pe(e){return e==null?"#5865f2":`#${e.toString(16).padStart(6,"0")}`}function ht({node:e}){const t=dt?.useStateFromStores?.([De],function(){let r=0;for(const s of e.children)r+=De?.getMentionCount?.(s.id)??0;return r},[e.children])??0;return t>0?n.createElement(o.View,{style:se.outline},n.createElement(o.View,{style:se.badge},n.createElement(o.Text,{style:se.text},t>99?"99+":String(t)))):null}function gt({node:e}){$.useProxy(f.storage);const t=Pe(e.color);return n.createElement(o.View,{style:z.outer},n.createElement(o.View,{style:[z.icon,{backgroundColor:t}]},f.storage.hideFolderIcons?n.createElement(o.View,{style:z.plainIcon},n.createElement(o.Image,{source:Ie,style:oe.folderImg,tintColor:"#fff"})):e.children.slice(0,4).map(function(r,s){return n.createElement(o.View,{key:r.id,style:[z.cell,ft[s]]},n.createElement(ge,{id:r.id,size:re}))})),n.createElement(ht,{node:e}))}const z=o.StyleSheet.create({outer:{width:k,height:k},icon:{width:k,height:k,borderRadius:16,overflow:"hidden"},cell:{position:"absolute",width:re,height:re,borderRadius:8,overflow:"hidden"},plainIcon:{width:k,height:k,alignItems:"center",justifyContent:"center"}});function pt({children:e}){const t=n.useRef(new o.Animated.Value(0)).current;return n.useEffect(function(){o.Animated.timing(t,{toValue:1,duration:180,useNativeDriver:!0}).start()},[]),n.createElement(o.Animated.View,{style:{opacity:t}},e)}function yt({node:e,onPick:t}){const r=ut(e.id),s=function(){ct?.toggleGuildFolderExpand?.(e.id)};return r?n.createElement(n.Fragment,null,n.createElement(o.Pressable,{onPress:s},n.createElement(o.View,{style:[oe.openIcon,{backgroundColor:Pe(e.color)}]},n.createElement(o.Image,{source:Ie,style:oe.folderImg,tintColor:"#fff"}))),e.children.map(function(l){return n.createElement(pt,{key:l.id},n.createElement(we,{node:l,onPick:t}))})):n.createElement(o.Pressable,{onPress:s},n.createElement(gt,{node:e}))}const oe=o.StyleSheet.create({openIcon:{width:k,height:k,borderRadius:16,alignItems:"center",justifyContent:"center"},folderImg:{width:24,height:24}}),se=o.StyleSheet.create({outline:{position:"absolute",bottom:-3,right:-3,minWidth:23,minHeight:23,borderRadius:12,backgroundColor:"#1a1a2e",alignItems:"center",justifyContent:"center"},badge:{minWidth:19,height:19,borderRadius:9,backgroundColor:"#ed4245",alignItems:"center",justifyContent:"center",paddingHorizontal:5},text:{color:"#fff",fontSize:10,fontWeight:"700",lineHeight:19}}),W=48,mt=N.getAssetIDByName("ChatIcon"),Fe=i.findByProps("triggerHapticFeedback","HapticFeedbackTypes"),xe=i.findByProps("selectPrivateChannel"),bt=i.findByName("SelectedChannelStore"),St=i.findByProps("useStateFromStores"),Ae=i.findByProps("getGuildId"),Ct=i.findByProps("colors","unsafe_rawColors")?.colors;function Et(){if(Fe?.triggerHapticFeedback(Fe.HapticFeedbackTypes.SOFT),xe?.selectPrivateChannel){const e=bt?.getLastSelectedChannelId?.();xe.selectPrivateChannel(e)}}function kt(){const e=St?.useStateFromStores?.([Ae],function(){return Ae?.getGuildId?.()==null})??!1;return n.createElement(o.Pressable,{onPress:Et,style:Te.outer},n.createElement(o.View,{style:[Te.icon,{backgroundColor:e?Ct?.BG_ACCENT??"#5865f2":"rgba(128,128,128,0.24)"}]},n.createElement(o.Image,{source:mt,style:{width:24,height:24,tintColor:"#fff"}})))}const Te=o.StyleSheet.create({outer:{width:W,height:W},icon:{width:W,height:W,borderRadius:16,alignItems:"center",justifyContent:"center"}}),Ge=48,wt=N.getAssetIDByName("CheckmarkLargeIcon"),Rt=i.findByStoreName("SortedGuildStore"),U=i.findByStoreName("GuildChannelStore"),Bt=i.findByStoreName("ChannelStore"),Dt=E(function(){return i.findByProps("triggerHapticFeedback","HapticFeedbackTypes")}),It=E(function(){return i.findByProps("bulkAck","ackChannel")}),Pt=E(function(){return i.findByProps("ReadStateTypes","UnreadSetting")?.ReadStateTypes});function Ft(){const e=(Rt?.getGuildsTree?.()?.root?.children??[]).filter(function(s){return s?.type!=="root"}),t=[],r=function(s){for(const l of s)l.type==="folder"?r(l.children??[]):l.id!=null&&t.push(String(l.id))};return r(e),t}function xt(){const e=It(),t=Pt();if(!e?.bulkAck||t?.CHANNEL==null||!U?.getSelectableChannelIds||!U?.getVocalChannelIds){v.showToast("Couldn't find Discord's read-state action - this may be unavailable on your version.",void 0);return}const r=Ft();if(r.length===0){v.showToast("Nothing to mark as read.",void 0);return}const s=[];for(const l of r){const u=[...U.getSelectableChannelIds(l)??[],...U.getVocalChannelIds(l)??[]];for(const d of u)s.push({channelId:d,readStateType:t.CHANNEL,messageId:Bt?.getChannel?.(d)?.lastMessageId??null})}if(s.length===0){v.showToast("Nothing to mark as read.",void 0);return}e.bulkAck(s),v.showToast(`Marked ${s.length} channel${s.length===1?"":"s"} as read`,void 0)}function At(){const e=n.useCallback(function(){const t=Dt();t?.triggerHapticFeedback?.(t.HapticFeedbackTypes.SOFT),xt()},[]);return n.createElement(o.Pressable,{onPress:e,style:Tt.outer},n.createElement(o.Image,{source:wt,style:{width:24,height:24,tintColor:"#80848e"}}))}const Tt=o.StyleSheet.create({outer:{width:Ge,height:Ge,alignItems:"center",justifyContent:"center"}}),Gt=i.findByProps("useStateFromStores"),Ve=i.findByStoreName("SortedGuildStore"),Vt=E(function(){return i.findByProps("getRootNavigationRef")}),He=E(function(){return i.findByProps("triggerHapticFeedback","HapticFeedbackTypes")}),Ht=E(function(){return i.findByProps("transitionToGuild")}),Qt=E(function(){return i.find(function(e){return typeof e?.handleCreateJoinGuildPress=="function"})}),Mt=E(function(){return i.find(function(e){return e?.CirclePlusIcon})?.CirclePlusIcon}),vt=E(function(){return i.findByProps("colors","unsafe_rawColors")?.unsafe_rawColors}),Lt=i.find(function(e){return e?.QuestDockExternalCoordinationContext}),Qe=Lt?.QuestDockExternalCoordinationContext,Me=i.find(function(e){return e?.QuestDockMode?.COLLAPSED!=null})?.QuestDockMode,q=48,X=6,Ot=12;function jt(){const e=n.useRef(new o.Animated.Value(1)).current,t=n.useCallback(function(){o.Animated.spring(e,{toValue:.9,useNativeDriver:!0}).start()},[e]),r=n.useCallback(function(){o.Animated.spring(e,{toValue:1,useNativeDriver:!0}).start()},[e]),s=n.useCallback(function(){const d=He();d?.triggerHapticFeedback?.(d.HapticFeedbackTypes.SOFT),Qt()?.handleCreateJoinGuildPress?.()},[]),l=Mt(),u=vt();return n.createElement(o.Pressable,{onPress:s,onPressIn:t,onPressOut:r},n.createElement(o.Animated.View,{style:[J.createJoin,{backgroundColor:u?.GREEN_360,transform:[{scale:e}]}]},l?n.createElement(l,{size:"md",color:u?.WHITE}):n.createElement(o.Text,{style:[J.createJoinFallback,{color:u?.WHITE}]},"+")))}function ve({gestureContext:e}){const t=n.useCallback(function(c){const g=He();g?.triggerHapticFeedback?.(g.HapticFeedbackTypes.SOFT);const x=Ht();x?.transitionToGuild?x.transitionToGuild(c):Vt()?.getRootNavigationRef?.()?.navigate("guilds",{guildId:c})},[]),r=Gt?.useStateFromStores?.([Ve],function(){return(Ve?.getGuildsTree()?.root?.children||[]).filter(function(c){return c.type!=="root"})})??[],s=e?n.useContext(e):null,l=s?.minExpandedContentHeight,u=n.useCallback(function(c){if(!l)return;const g=c.nativeEvent.layout.height;l.get()!==g&&l.set(g)},[l]),d=(Qe?n.useContext(Qe):null)?.setRestingQuestDockMode,R=s?.questDockWrapperSpecs;n.useEffect(function(){if(!d||!Me||!R)return;const c=o.BackHandler.addEventListener("hardwareBackPress",function(){return(R.get()?.height??56)>80?(d(Me.COLLAPSED),!0):!1});return function(){return c.remove()}},[d,R]);const{width:B}=o.Dimensions.get("window"),b=Math.max(3,Math.floor((B-Ot*2+X)/(q+X))),p=b*q+(b-1)*X,D=Math.max(0,(B-p)/2);return n.createElement(o.View,{style:J.alignTop},n.createElement(o.View,{style:[J.grid,{paddingHorizontal:D,gap:X}],onLayout:u},n.createElement(kt,null),r.map(function(c){return c.type==="folder"?n.createElement(yt,{key:c.id,node:c,onPick:t}):n.createElement(we,{key:c.id,node:c,onPick:t})}),n.createElement(jt,null),n.createElement(At,null)))}const J=o.StyleSheet.create({alignTop:{flex:1,justifyContent:"flex-start",alignItems:"flex-start"},grid:{flexDirection:"row",flexWrap:"wrap",paddingTop:4,paddingBottom:16},createJoin:{width:q,height:q,borderRadius:16,alignItems:"center",justifyContent:"center"},createJoinFallback:{fontSize:28,fontWeight:"700",lineHeight:30}}),ie=new Map;let w=null,K=!1;function Le(e,t,r){ie.set(e,{replacement:t,extraProps:r})}function _t(e){if(K)return;if(w=a.React.createElement,!w){console.warn("[ServerDrawer] React.createElement is null, skipping patch");return}const t=function(r,s,...l){if(!w)return a.React.createElement(r,s,...l);const u=ie.get(r);if(u){const d=u.extraProps?{...s,...u.extraProps}:s;return w.call(a.React,u.replacement,d,...l)}return w.call(a.React,r,s,...l)};Object.assign(t,w),a.React.createElement=t,K=!0,e.push(function(){K&&w&&(a.React.createElement=w,K=!1),ie.clear()})}const le="[ServerDrawer]";let ae=null;function Oe(){return ae||(ae=i.find(function(e){return e?.QuestDockGestureContext})?.QuestDockGestureContext??null),ae}function zt(e){const t=i.find(function(s){return s?.type?.displayName==="QuestDockContentExpanded"||s?.type?.name==="QuestDockContentExpanded"});if(!t?.type)return console.log(le,"WARN: QuestDockContentExpanded not found (will retry)"),!1;const r=t.type;return Le(r,ve,{gestureContext:Oe()}),t.type=function(){return a.React.createElement(ve,{gestureContext:Oe()})},e.push(function(){t.type=r}),console.log(le,"PATCH: QuestDockContentExpanded replaced"),!0}function G(e,t){const r=i.find(function(u){return u?.type?.displayName===e||u?.type?.name===e});if(!r?.type)return console.log(le,`WARN: ${e} not found`),!1;const s=r.type,l=s;return r.type=function(){return null},l&&(Object.defineProperties(r.type,Object.getOwnPropertyDescriptors(l)),r.type.displayName=e),t.push(function(){r.type=s}),!0}const Wt="[ServerDrawer]";function je(){return null}function Ut(){const e=i.findByName("GuildsBar");if(e)return{default:e};let t=i.find(function(r){try{return r?.default?.type?.name==="GuildsBar"}catch{return!1}});return t?.default||(t=i.find(function(r){try{return r?.default?.displayName==="GuildsBar"}catch{return!1}}),t?.default)?t:null}function qt(e){const t=Ut();if(!t?.default)return console.log(Wt,"WARN: GuildsBar not found"),!1;const r=t.default;return Le(r,je),t.default=function(){return n.createElement(je)},t.default.displayName="GuildsBar",e.push(function(){t.default=r}),!0}function Xt(e){const t=i.findByStoreName("ExpandedGuildFolderStore");if(!t?.getExpandedFolders)return!1;const r=function({folderId:s}){if(!f.storage.autoCollapseFolders||s==null)return;const l=t.getExpandedFolders();if(!(!(l instanceof Set)||!l.has(s)))for(const u of l)u!==s&&a.FluxDispatcher.dispatch({type:"TOGGLE_GUILD_FOLDER_EXPAND",folderId:u})};return a.FluxDispatcher.subscribe("TOGGLE_GUILD_FOLDER_EXPAND",r),e.push(function(){return a.FluxDispatcher.unsubscribe("TOGGLE_GUILD_FOLDER_EXPAND",r)}),!0}const{ScrollView:Jt,View:Kt}=a.ReactNative;function Yt({children:e}){return a.React.createElement(Jt,{style:{flex:1}},e,a.React.createElement(Kt,{style:{height:24}}))}const{View:Zt,Text:$t}=a.ReactNative;function _e({children:e,style:t}){return a.React.createElement(Zt,{style:[{marginHorizontal:16,marginVertical:8,padding:10,borderRadius:8,borderWidth:1,borderColor:"rgba(128,128,128,0.25)"},t]},a.React.createElement($t,{style:{fontSize:12.5,lineHeight:18,opacity:.75}},e))}const{FormSection:ze,FormSwitchRow:Y}=Xe.Forms;function Nt(){return $.useProxy(f.storage),a.React.createElement(Yt,null,a.React.createElement(_e,null,"Server Drawer takes over the Quest Dock (the strip above the tab bar) to show your servers as a grid instead - tap to expand, long-press a server for its usual context menu, the chat bubble jumps to DMs, the + button creates or joins a server through Discord's own modal, and the check button marks every channel in every server as read."),a.React.createElement(ze,{title:"Layout"},a.React.createElement(Y,{label:"Hide the left server rail",subLabel:"Your servers and DMs already live in the drawer, so the rail is redundant",value:f.storage.hideGuildsBar!==!1,onValueChange:function(e){f.storage.hideGuildsBar=e,qe()}}),a.React.createElement(Y,{label:"Unread badges",subLabel:"Show mention counts and unread dots on server icons in the drawer",value:f.storage.showUnreadBadges!==!1,onValueChange:function(e){f.storage.showUnreadBadges=e}})),a.React.createElement(ze,{title:"Folders"},a.React.createElement(Y,{label:"Auto-collapse other folders",subLabel:"Opening a folder collapses any other folder that was already open",value:!!f.storage.autoCollapseFolders,onValueChange:function(e){f.storage.autoCollapseFolders=e}}),a.React.createElement(Y,{label:"Hide icons in collapsed folders",subLabel:"Show a plain folder icon instead of a 4-server preview",value:!!f.storage.hideFolderIcons,onValueChange:function(e){f.storage.hideFolderIcons=e}})),a.React.createElement(_e,null,"The folder options above are ported from fres621's BetterFolders - its other half (hiding icons in the native left server rail) patched a component that no longer exists in current Discord builds, so it's been rebuilt here instead, where it actually applies to what you see."))}let h=[],m;function en(e,t){try{return t()}catch(r){return Z.logger.error(`[ServerDrawer] "${e}" patch threw, skipping: ${r}`),!1}}function We(){const e={questDockRender:function(){return Je(h)},questDockBase:function(){return Ke(h)},mobileQuestDock:function(){return Ye(h)},getQuestAsset:function(){return $e(h)},expanded:function(){return zt(h)},collapsed:function(){return G("QuestDockContentCollapsed",h)},enrolledHeader:function(){return G("QuestDockEnrolledHeader",h)},unenrolledHeader:function(){return G("QuestDockUnenrolledHeader",h)},enrolledBody:function(){return G("QuestDockEnrolledBody",h)},unenrolledBody:function(){return G("QuestDockUnenrolledBody",h)},autoCollapseFolders:function(){return Xt(h)},...f.storage.hideGuildsBar?{hideGuildsBar:function(){return qt(h)}}:{}};_t(h);const t=new Set(Object.keys(e)),r=new Set,s=function(){for(const l of t)en(l,e[l])&&(r.add(l),t.delete(l));t.size===0&&m&&(clearInterval(m),m=void 0)};if(s(),t.size>0){let l=0;m=setInterval(function(){s(),++l>=50&&m&&(clearInterval(m),m=void 0,t.size>0&&Z.logger.error(`[ServerDrawer] Gave up waiting on: ${[...t].join(", ")}`))},200)}Z.logger.log(`[ServerDrawer] onLoad: applied immediately - ${[...r].join(", ")||"none"}${t.size?`, still waiting on ${[...t].join(", ")}`:""}`)}function Ue(){m&&(clearInterval(m),m=void 0);for(const e of h)try{e()}catch{}h=[]}function qe(){Ue(),We()}var tn={onLoad:function(){f.storage.hideGuildsBar??=!0,f.storage.showUnreadBadges??=!0,f.storage.autoCollapseFolders??=!1,f.storage.hideFolderIcons??=!1,We()},onUnload:function(){return Ue()},settings:Nt};return Q.default=tn,Q.restart=qe,Object.defineProperty(Q,"__esModule",{value:!0}),Q})({},vendetta,vendetta.plugin,vendetta.metro,vendetta.metro.common,window.React,vendetta.metro.common.ReactNative,vendetta.storage,vendetta.ui,vendetta.ui.assets,vendetta.ui.toasts,vendetta.ui.components);
|