1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
import{o as e,c as t,a as s,w as i,p as a,b as o,d as r,t as n,n as d,F as l,r as c,e as u,f as h,g as p,h as g,v as m,i as v,j as k,k as y}from"./vendor.80871c24.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver((e=>{for(const s of e)if("childList"===s.type)for(const e of s.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)})).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerpolicy&&(t.referrerPolicy=e.referrerpolicy),"use-credentials"===e.crossorigin?t.credentials="include":"anonymous"===e.crossorigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();var w=(e,t)=>{for(const[s,i]of t)e[s]=i;return e};const b={id:"login-view"},f={class:"card"},S=(e=>(a("data-v-e7abcca4"),e=e(),o(),e))((()=>s("h1",null,"Quote Bracket",-1)));const G={computed:{},methods:{handleDiscordLogin(){let e=new URLSearchParams;if(e.set("response_type","token"),e.set("client_id",this.discord.client.id),e.set("scope",this.discord.auth.scopes.join(" ")),e.set("redirect_uri",window.location.origin+window.location.pathname),this.discord.auth.useState){let t=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);sessionStorage.setItem("qb-auth-state",t),e.set("state",t)}window.location.href=`${this.discord.auth.base}?${e.toString()}`},handleGuildID(){this.$emit("change-state","id-entry")}}};var I=w(Object.assign(G,{setup:function(a){return(a,o)=>(e(),t("div",b,[s("div",f,[S,s("button",{onClick:o[0]||(o[0]=i(((...e)=>a.handleDiscordLogin&&a.handleDiscordLogin(...e)),["stop"])),class:"discord-login"}," Login With Discord ")])]))}}),[["__scopeId","data-v-e7abcca4"]]);const $=["tabindex"],_={key:0},B={key:1,class:"guild-card"},L=["src","alt"],q=["onClick"],C={class:"guild-card"},D=["src","alt"];var x=w({emits:["setGuild"],props:{options:{required:!0,type:Array},defaultOption:{required:!1,type:Number,default:0},tabindex:{required:!1,type:Number,default:0}},data:()=>({selected:null,open:!1}),methods:{handleSelect(e){this.$emit("setGuild",e),this.selected=e,this.open=!1}},mounted(){var e;(null==(e=this.options)?void 0:e.length)&&null!==this.defaultOption&&(this.selected=this.options[this.defaultOption],this.$emit("setGuild",this.selected))}},[["render",function(a,o,h,p,g,m){return e(),t("div",{class:"custom-select",tabindex:h.tabindex,onBlur:o[1]||(o[1]=e=>g.open=!1)},[s("div",{class:d(["selected",{open:g.open}]),onClick:o[0]||(o[0]=i((e=>g.open=!g.open),["stop"]))},[null===g.selected?(e(),t("span",_," Select a Server ")):(e(),t("div",B,[s("img",{class:"guild-icon",src:`https://cdn.discordapp.com/icons/${g.selected.id}/${g.selected.icon}.png`,alt:`${g.selected.name}'s Server Icon`},null,8,L),r(" "+n(g.selected.name),1)]))],2),s("div",{class:d(["items",{selectHide:!g.open}])},[(e(!0),t(l,null,c(h.options,((a,o)=>(e(),t("div",{class:"item",key:o,onClick:i((e=>m.handleSelect(a)),["stop"])},[s("div",C,[a.icon?(e(),t("img",{key:0,class:"guild-icon",src:`https://cdn.discordapp.com/icons/${a.id}/${a.icon}.png`,alt:`${a.name}'s Server Icon`},null,8,D)):u("",!0),r(" "+n(a.name),1)])],8,q)))),128))],2)],40,$)}],["__scopeId","data-v-691298a4"]]);const O=e=>(a("data-v-99e1eb7c"),e=e(),o(),e),H={id:"guild-select"},Q={class:"card"},P=O((()=>s("h1",null,"Quote Bracket",-1))),U={key:0},j={key:1},E=O((()=>s("br",null,null,-1)));const N={data:()=>({userGuilds:[],loading:!0,selectedGuild:null,message:"Loading Your Servers...",errored:!1}),methods:{loadHistory(){this.$emit("set-guild",this.selectedGuild.id),this.$emit("change-state","view-history")},selectGuild(e){this.selectedGuild=e}},async mounted(){let e=sessionStorage.getItem("qb-auth-token");try{var t=await p.get(`${this.discord.api.base}${this.discord.api.getGuilds}`,{headers:{Authorization:`Bearer ${e}`}})}catch(a){return this.message="Error Getting Your Server List From Discord",void(this.errored=!0)}let s=t.data;if(200<=t.status&&t.status<300){try{t=await p.post(`${this.private.api}/guilds/compare`,t.data.map((e=>e.id)))}catch(a){return this.message="Error Comparing Server Lists",void(this.errored=!0)}let e=t.data;if(1===e.length)return this.$emit("set-guild",e[0]),void this.$emit("change-state","view-history");for(var i of s)e.includes(i.id)&&this.userGuilds.push(i);this.loading=!1}}};var R=w(Object.assign(N,{setup:function(a){return(a,o)=>(e(),t("div",H,[s("div",Q,[P,a.loading?(e(),t("div",U,[s("h2",null,n(a.message),1),a.errored?(e(),t("button",{key:0,onClick:o[0]||(o[0]=i((e=>a.$emit("change-state","login")),["stop"]))}," Go Back ")):u("",!0)])):(e(),t("div",j,[h(x,{options:a.userGuilds,"default-option":null,onSetGuild:a.selectGuild},null,8,["options","onSetGuild"]),E,null!==a.selectedGuild?(e(),t("button",{key:0,onClick:o[1]||(o[1]=i(((...e)=>a.loadHistory&&a.loadHistory(...e)),["stop"]))}," Load History ")):u("",!0)]))])]))}}),[["__scopeId","data-v-99e1eb7c"]]);const F=e=>(a("data-v-15f37e5a"),e=e(),o(),e),M={id:"guild-id-input"},W={class:"card"},A=F((()=>s("h1",null,"Quote Bracket",-1))),z=F((()=>s("p",null,[r(" Enter a server ID in the box below in order to load the quote bracket history. If you need help finding out how to get the server's ID, you can read Discord's help article about getting IDs here: "),s("a",{href:"https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-"}," Where can I find my User/Server/Message ID? ")],-1))),T={class:"flex-row"},V={key:0},Y={class:"flex-row"};const K={data:()=>({guild_id:""}),computed:{hasError(){return null!=this.guild_id.match(/[^0-9]/g)}},methods:{goBack(){this.$emit("change-state","login")},loadHistory(){this.$emit("set-guild",this.guild_id),this.$emit("change-state","view-history")}},async mounted(){}};var J=w(Object.assign(K,{setup:function(a){return(a,o)=>(e(),t("div",M,[s("div",W,[A,s("div",null,[z,s("div",T,[g(s("input",{type:"text",name:"Server ID",id:"server-id","onUpdate:modelValue":o[0]||(o[0]=e=>v(guild_id)?guild_id.value=e:null)},null,512),[[m,a.guild_id]])]),a.hasError?(e(),t("div",V," The server ID you entered is invalid, please make sure that you entered it correctly. ")):u("",!0),s("div",Y,[s("button",{onClick:o[1]||(o[1]=i(((...e)=>a.goBack&&a.goBack(...e)),["stop"]))}," Cancel "),a.guild_id&&!a.hasError?(e(),t("button",{key:0,onClick:o[2]||(o[2]=i(((...e)=>a.loadHistory&&a.loadHistory(...e)),["stop"]))}," Load History ")):u("",!0)])])])]))}}),[["__scopeId","data-v-15f37e5a"]]);const X=e=>(a("data-v-43b8754c"),e=e(),o(),e),Z={id:"history"},ee={class:"card"},te=X((()=>s("h2",null,"Quote Bracket History",-1))),se={key:0},ie={class:"flex-row controls"},ae=["disabled"],oe=["disabled"],re=["disabled"],ne=["disabled"],de={class:"quotes"},le={class:"text"},ce={class:"metadata flex-row"},ue={class:"votes"},he={key:0,class:"streak"},pe={key:1},ge=[X((()=>s("p",null," There was an error loading the quote bracket information. Please wait a minute and then try again. If the issue continues, let Oliver know. ",-1)))];const me={props:{gid:{required:!0}},data:()=>({history:[],page:0}),computed:{bracket(){return this.history[this.page]},isFirst(){return this.page===this.history.length-1},isLast(){return 0===this.page},date(){return new Date(this.bracket.date).toLocaleString()},winners(){let e=-1,t=[];for(var s in this.bracket.quotes){let i=this.bracket.quotes[s];i.votes===e?t.push(s):i.votes>e&&(e=i.votes,t=[s])}return t}},methods:{quoteClasses(e){return this.winners.includes(`${e}`)?["winner"]:[]},updateQuery(){let e=new URL(window.location.href);e.searchParams.set("page",this.page),history.replaceState(null,null,e)},oldestBracket(){this.page=0,this.updateQuery()},olderBracket(){this.page--,this.updateQuery()},newerBracket(){this.page++,this.updateQuery()},newestBracket(){this.page=this.history.length-1,this.updateQuery()},resetGuild(){window.location.search="",this.$emit("set-guild",null),this.$emit("change-state","login")}},async mounted(){let e=new URLSearchParams(window.location.search);try{let t=await p.get(`${this.private.api}/${this.gid}/history`);200===t.status&&(this.history=t.data),e.has("page")?(this.page=parseInt(e.get("page")),this.updateQuery()):this.newestBracket()}catch(t){}}};var ve=w(Object.assign(me,{setup:function(a){return(a,o)=>(e(),t("div",Z,[s("div",ee,[te,a.bracket?(e(),t("div",se,[s("div",ie,[s("button",{class:"no-mobile",disabled:a.isFirst,onClick:o[0]||(o[0]=i(((...e)=>a.newestBracket&&a.newestBracket(...e)),["stop"]))}," Newest ",8,ae),s("button",{disabled:a.isFirst,onClick:o[1]||(o[1]=i(((...e)=>a.newerBracket&&a.newerBracket(...e)),["stop"]))}," Newer ",8,oe),s("span",null,n(a.date),1),s("button",{disabled:a.isLast,onClick:o[2]||(o[2]=i(((...e)=>a.olderBracket&&a.olderBracket(...e)),["stop"]))}," Older ",8,re),s("button",{class:"no-mobile",disabled:a.isLast,onClick:o[3]||(o[3]=i(((...e)=>a.oldestBracket&&a.oldestBracket(...e)),["stop"]))}," Oldest ",8,ne)]),s("div",de,[(e(!0),t(l,null,c(a.bracket.quotes,((i,o)=>(e(),t("div",{class:d(["quote",a.quoteClasses(o)]),key:o},[s("span",le,n(i.text),1),s("div",ce,[s("span",ue,"Votes: "+n(i.votes),1),i.win_streak>0?(e(),t("span",he," Win Streak: "+n(i.win_streak),1)):u("",!0)])],2)))),128))])])):(e(),t("div",pe,ge)),s("button",{onClick:o[4]||(o[4]=i(((...e)=>a.resetGuild&&a.resetGuild(...e)),["stop"]))}," Pick a Different Server ")])]))}}),[["__scopeId","data-v-43b8754c"]]);const ke={data:()=>({state:"login",gid:null}),methods:{setGuild(e){if(this.gid=e,e){let t=new URL(window.location.href);t.searchParams.set("gid",e),window.history.replaceState(null,null,t)}}},mounted(){let e=new URLSearchParams(window.location.search);if(e.has("gid"))return this.gid=e.get("gid"),void(this.state="view-history");let t=new URLSearchParams(window.location.hash);t.has("access_token")&&(this.discord.auth.useState?sessionStorage.getItem("qb-auth-state")===t.get("state")?(console.info("State compare success"),sessionStorage.setItem("qb-auth-token",t.get("access_token")),sessionStorage.removeItem("qb-auth-state"),window.location.hash=""):(console.error("State compare failed"),window.location.hash=""):sessionStorage.setItem("qb-auth-token",t.get("access_token"))),sessionStorage.getItem("qb-auth-token")&&(this.state="guild-select")}};let ye=y(Object.assign(ke,{setup:function(t){return(t,s)=>"login"===t.state?(e(),k(I,{key:0,class:"inner-view",onChangeState:s[0]||(s[0]=e=>t.state=e)})):"guild-select"===t.state?(e(),k(R,{key:1,class:"inner-view",onSetGuild:s[1]||(s[1]=e=>t.setGuild(e)),onChangeState:s[2]||(s[2]=e=>t.state=e)})):"id-entry"===t.state?(e(),k(J,{key:2,class:"inner-view",onSetGuild:s[3]||(s[3]=e=>t.setGuild(e)),onChangeState:s[4]||(s[4]=e=>t.state=e)})):"view-history"===t.state?(e(),k(ve,{key:3,class:"inner-view",gid:t.gid,onSetGuild:s[5]||(s[5]=e=>t.setGuild(e)),onChangeState:s[6]||(s[6]=e=>t.state=e)},null,8,["gid"])):u("",!0)}}));ye.mixin({data:()=>({discord:{client:{id:"863968565353906226"},auth:{base:"https://discord.com/api/oauth2/authorize",scopes:["identify","guilds"],useState:!0},api:{base:"https://discord.com/api/v9",getGuilds:"/users/@me/guilds"}},private:{api:"https://vps.oliver.akins.me/quote-bracket"}}),methods:{},computed:{}}),ye.mount("#app");
|