diff --git a/webpage/channel.js b/webpage/channel.js index 51a0825..9776b20 100644 --- a/webpage/channel.js +++ b/webpage/channel.js @@ -189,7 +189,7 @@ class channel{ if(!this.hasunreads){ return; } - fetch("https://old.server.spacebar.chat/api/v9/channels/"+this.id+"/messages/"+this.lastmessageid+"/ack",{ + fetch(info.api.toString()+"/v9/channels/"+this.id+"/messages/"+this.lastmessageid+"/ack",{ method:"POST", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify({}) @@ -259,7 +259,7 @@ class channel{ return div; } createChannel(name,type){ - fetch("https://api.old.server.spacebar.chat/api/guilds/"+this.owner.id+"/channels",{ + fetch(info.api.toString()+"/guilds/"+this.owner.id+"/channels",{ method:"Post", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify({ @@ -283,7 +283,7 @@ class channel{ ["mdbox","Channel topic:",this.topic,function(){topic=this.value}], ["checkbox","NSFW Channel",this.nsfw,function(){nsfw=this.checked}], ["button","","submit",function(){ - fetch("https://api.old.server.spacebar.chat/api/v9/channels/"+thisid,{ + fetch(info.api.toString()+"/v9/channels/"+thisid,{ method:"PATCH", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify({ @@ -307,7 +307,7 @@ class channel{ console.log(full) } deleteChannel(){ - fetch("https://api.old.server.spacebar.chat/api/v9/channels/"+this.id,{ + fetch(info.api.toString()+"/v9/channels/"+this.id,{ method:"DELETE", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token} }) @@ -321,7 +321,7 @@ class channel{ } putmessages(){ const out=this; - fetch("https://api.old.server.spacebar.chat/api/channels/"+this.id+"/messages?limit=100",{ + fetch(info.api.toString()+"/channels/"+this.id+"/messages?limit=100",{ method: 'GET', headers: {Authorization:token}, }).then((j)=>{return j.json()}).then(function(responce){ @@ -353,7 +353,7 @@ class channel{ } const out=this; - await fetch("https://api.old.server.spacebar.chat/api/channels/"+this.id+"/messages?before="+this.messages[this.messages.length-1].id+"&limit=100",{ + await fetch(info.api.toString()+"/channels/"+this.id+"/messages?before="+this.messages[this.messages.length-1].id+"&limit=100",{ method:"GET", headers:{Authorization:token} }).then((j)=>{return j.json()}).then(function(responce){ @@ -419,7 +419,7 @@ class channel{ return; } this.typing=new Date().getTime()+6000; - fetch("https://api.old.server.spacebar.chat/api/channels/"+this.id+"/typing",{ + fetch(info.api.toString()+"/channels/"+this.id+"/typing",{ method:"POST", headers:{Authorization:token} }) diff --git a/webpage/guild.js b/webpage/guild.js index d5d15c1..ed28b2d 100644 --- a/webpage/guild.js +++ b/webpage/guild.js @@ -73,14 +73,14 @@ class guild{ if(serverbug){ for(const thing of build){ console.log(build,thing) - fetch("https://api.old.server.spacebar.chat/api/v9/guilds/"+this.id+"/channels",{ + fetch(info.api.toString()+"/v9/guilds/"+this.id+"/channels",{ method:"PATCH", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify([thing]) }); } }else{ - fetch("https://api.old.server.spacebar.chat/api/v9/guilds/"+this.id+"/channels",{ + fetch(info.api.toString()+"/v9/guilds/"+this.id+"/channels",{ method:"PATCH", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify(build) @@ -214,7 +214,7 @@ class guild{ this.channels=build; } createChannel(name,type){ - fetch("https://api.old.server.spacebar.chat/api/guilds/"+this.id+"/channels",{ + fetch(info.api.toString()+"/guilds/"+this.id+"/channels",{ method:"Post", headers:{"Content-type": "application/json; charset=UTF-8",Authorization:token}, body:JSON.stringify({name: name, type: type}) diff --git a/webpage/index.js b/webpage/index.js index e718f9f..fdea7ca 100644 --- a/webpage/index.js +++ b/webpage/index.js @@ -1,3 +1,8 @@ +const info=JSON.parse(localStorage.getItem("instanceinfo")); +info.api=new URL(info.api); +info.cdn=new URL(info.cdn); +info.gateway=new URL(info.gateway); +info.wellknown=new URL(info.wellknown); function setDynamicHeight() { var servertdHeight = document.getElementById('servertd').offsetHeight+document.getElementById('typebox').offsetHeight+document.getElementById('pasteimage').offsetHeight; document.documentElement.style.setProperty('--servertd-height', servertdHeight + 'px'); @@ -200,7 +205,7 @@ function makemenu(divmessage,x,y){ const dmbutton=createbutton("Message user",null,function(){ console.log(this) - fetch("https://old.server.spacebar.chat/api/v9/users/@me/channels", + fetch(info.api.toString()+"/v9/users/@me/channels", {method:"POST", body:JSON.stringify({"recipients":[this.all.author.id]}), headers: {"Content-type": "application/json; charset=UTF-8",Authorization:token} @@ -306,7 +311,7 @@ async function enter(event){ if(event.key === "Enter"&&!event.shiftKey){ event.preventDefault(); if(editing){ - fetch("https://api.old.server.spacebar.chat/api/channels/"+window.location.pathname.split("/")[3]+"/messages/"+editing,{ + fetch(info.api.toString()+"/channels/"+window.location.pathname.split("/")[3]+"/messages/"+editing,{ method: "PATCH", headers: { "Content-type": "application/json; charset=UTF-8", @@ -340,7 +345,7 @@ async function enter(event){ body.message_reference=replyjson; } console.log(body) - fetch("https://api.old.server.spacebar.chat/api/channels/"+window.location.pathname.split("/")[3]+"/messages",{ + fetch(info.api.toString()+"/channels/"+window.location.pathname.split("/")[3]+"/messages",{ method:"POST", headers:{ "Content-type": "application/json; charset=UTF-8", @@ -369,7 +374,7 @@ async function enter(event){ } const data=formData.entries() console.log(data.next(),data.next(),data.next()) - console.log((await fetch("https://api.old.server.spacebar.chat/api/channels/"+window.location.pathname.split("/")[3]+"/messages", { + console.log((await fetch(info.api.toString()+"/channels/"+window.location.pathname.split("/")[3]+"/messages", { method: 'POST', body: formData, headers:{ @@ -395,7 +400,7 @@ let thisuser=null; function initwebsocket(){ - ws = new WebSocket('wss://gateway.old.server.spacebar.chat/?v=9&encoding=json'); + ws = new WebSocket(info.gateway.toString()); ws.addEventListener('open', (event) => { console.log('WebSocket connected'); @@ -649,10 +654,7 @@ function genusersettings(){ }) } setTheme(); -function setTheme(){ - const name=localStorage.getItem("theme"); - document.body.className=name+"-theme"; -} + function userSettings(){ usersettings.show(); } diff --git a/webpage/localuser.js b/webpage/localuser.js index fa6710e..302b923 100644 --- a/webpage/localuser.js +++ b/webpage/localuser.js @@ -121,7 +121,7 @@ class localuser{ if(thing.properties.icon!=null){ const img=document.createElement("img"); img.classList.add("pfp","servericon") - img.src="https://cdn.old.server.spacebar.chat/icons/"+thing.properties.id+"/"+thing.properties.icon+".png"; + img.src=info.cdn.toString()+"icons/"+thing.properties.id+"/"+thing.properties.icon+".png"; divy.appendChild(img) img.all=thing; img.onclick=function(){ @@ -193,7 +193,7 @@ class localuser{ var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { - fetch("https://old.server.spacebar.chat/api/v9/users/@me",{ + fetch(info.api.toString()+"/v9/users/@me",{ method:"PATCH", headers:{ "Content-type": "application/json; charset=UTF-8", @@ -208,7 +208,7 @@ class localuser{ } updatepronouns(pronouns){ - fetch("https://old.server.spacebar.chat/api/v9/users/@me/profile",{ + fetch(info.api.toString()+"/v9/users/@me/profile",{ method:"PATCH", headers:{ "Content-type": "application/json; charset=UTF-8", @@ -220,7 +220,7 @@ class localuser{ }); } updatebio(bio){ - fetch("https://old.server.spacebar.chat/api/v9/users/@me/profile",{ + fetch(info.api.toString()+"/v9/users/@me/profile",{ method:"PATCH", headers:{ "Content-type": "application/json; charset=UTF-8", diff --git a/webpage/login.html b/webpage/login.html index 98304d2..31980aa 100644 --- a/webpage/login.html +++ b/webpage/login.html @@ -5,6 +5,10 @@

Login


+
+

+

+


diff --git a/webpage/login.js b/webpage/login.js index 271f8b1..6fd4cc4 100644 --- a/webpage/login.js +++ b/webpage/login.js @@ -1,6 +1,40 @@ function getCookie(name) { return localStorage.getItem(name); } +function setTheme(){ + const name=localStorage.getItem("theme"); + document.body.className=name+"-theme"; +} +setTheme(); +{ + const instancein=document.getElementById("instancein"); + let timeout=0; + + if(instancein){ + console.log(instancein) + instancein.addEventListener("keydown",e=>{ + const verify=document.getElementById("verify"); + verify.innerText="Waiting to check Instance" + clearTimeout(timeout); + timeout=setTimeout(async e=>{ + try{ + verify.innerText="Checking Instance" + instanceinfo=await setInstance(instancein.value) + localStorage.setItem("instanceinfo",JSON.stringify(instanceinfo)); + verify.innerText="Instance is all good" + setTimeout(_=>{ + console.log(verify.innerText) + verify.innerText=""; + },3000); + + }catch(e){ + console.log("catch") + verify.innerText="Invalid Instance, try again" + } + },1000); + }); + } +} async function login(username, password){ const options={ method: "POST", @@ -13,7 +47,9 @@ async function login(username, password){ "Content-type": "application/json; charset=UTF-8", }} try{ - return await fetch('https://api.old.server.spacebar.chat/api/auth/login',options).then(responce=>responce.json()) + const info=JSON.parse(localStorage.getItem("instanceinfo")); + url=new URL(info.login); + return await fetch(url.origin+'/api/auth/login',options).then(responce=>responce.json()) .then((response) => { console.log(response,response.message) if("Invalid Form Body"===response.message){ @@ -28,6 +64,30 @@ async function login(username, password){ console.error('Error:', error); }; } +async function setInstance(url){ + url=new URL(url); + async function attempt(aurl){ + const info=await fetch(`${aurl.toString()}${aurl.pathname.includes("api") ? "" : "api"}/policies/instance/domains`) + .then((x) => x.json()); + return { + api: info.apiEndpoint, + gateway: info.gateway, + cdn: info.cdn, + wellknown: url, + login:aurl.toString() + } + } + try{ + return await attempt(url); + }catch(e){ + + } + const wellKnown = await fetch(`${url.origin}/.well-known/spacebar`) + .then((x) => x.json()) + .then((x) => new URL(x.api)); + return await attempt(wellKnown); +} + function gettoken(){ let temp=getCookie("token"); temp??=undefined; @@ -40,7 +100,7 @@ function gettoken(){ async function check(e){ e.preventDefault(); - let h=await login(e.srcElement[0].value,e.srcElement[1].value); + let h=await login(e.srcElement[1].value,e.srcElement[2].value); document.getElementById("wrong").innerText=h; console.log(h); } diff --git a/webpage/message.js b/webpage/message.js index c927a5a..b2d7364 100644 --- a/webpage/message.js +++ b/webpage/message.js @@ -36,7 +36,7 @@ class cmessage{ line2.classList.add("reply"); line.classList.add("startreply"); replyline.classList.add("replyflex") - fetch("https://old.server.spacebar.chat/api/v9/channels/"+this.message_reference.channel_id+"/messages?limit=1&around="+this.message_reference.message_id,{headers:{Authorization:token}}).then(responce=>responce.json()).then(responce=>{ + fetch(info.api.toString()+"/v9/channels/"+this.message_reference.channel_id+"/messages?limit=1&around="+this.message_reference.message_id,{headers:{Authorization:token}}).then(responce=>responce.json()).then(responce=>{ const author=new user(responce[0].author); reply.appendChild(markdown(responce[0].content)); @@ -107,7 +107,7 @@ class cmessage{ const attatch = document.createElement("tr") for(const thing of this.attachments){ const array=thing.url.split("/");array.shift();array.shift();array.shift(); - const src="https://cdn.old.server.spacebar.chat/"+array.join("/"); + const src=info.cdn.toString()+array.join("/"); if(thing.content_type.startsWith('image/')){ const img=document.createElement("img"); img.classList.add("messageimg") diff --git a/webpage/user.js b/webpage/user.js index 7c68059..d2fb24a 100644 --- a/webpage/user.js +++ b/webpage/user.js @@ -28,7 +28,7 @@ class user{ }else{ const tempy=new Promise((resolve, reject) => { usercache[this.id+"+"+guild.id]={done:false}; - fetch("https://old.server.spacebar.chat/api/v9/users/"+this.id+"/profile?with_mutual_guilds=true&with_mutual_friends_count=false&guild_id="+guild.id).then(json).then(str=>{ + fetch(info.api.toString()+"/v9/users/"+this.id+"/profile?with_mutual_guilds=true&with_mutual_friends_count=false&guild_id="+guild.id).then(json).then(str=>{ return new member(str); }); }); @@ -62,9 +62,9 @@ class user{ return this.avatar; } if(this.avatar!=null){ - return "https://cdn.old.server.spacebar.chat/avatars/"+this.id+"/"+this.avatar+".png"; + return info.cdn.toString()+"avatars/"+this.id+"/"+this.avatar+".png"; }else{ - return "https://cdn.old.server.spacebar.chat/embed/avatars/3.png"; + return info.cdn.toString()+"embed/avatars/3.png"; } } createjankpromises(){