Added support for different instances
This commit is contained in:
parent
e219ae7fc7
commit
f6d33a7aa8
8 changed files with 96 additions and 30 deletions
|
@ -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}
|
||||
})
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
<div id="logindiv">
|
||||
<h1>Login</h1><br>
|
||||
<form id="form" submit="check(e)">
|
||||
<label for="instance"><b>Instance:</b></label><br>
|
||||
<p id="verify"></p>
|
||||
<input type="text" placeholder="Instance URL" name="instance" value="https://spacebar.chat/" id="instancein" required><br><br>
|
||||
|
||||
<label for="uname"><b>Username:</b></label><br>
|
||||
<input type="text" placeholder="Enter Username" name="uname" required><br><br>
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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(){
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue