Renamed Fullscreen to Dialog

This commit is contained in:
MathMan05 2024-08-12 09:11:59 -05:00
parent 28e7f1bdc8
commit 583eb05247
15 changed files with 301 additions and 54 deletions

View file

@ -2,7 +2,7 @@
import { Message } from "./message.js"; import { Message } from "./message.js";
import { Voice } from "./audio.js"; import { Voice } from "./audio.js";
import { Contextmenu } from "./contextmenu.js"; import { Contextmenu } from "./contextmenu.js";
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
import { Permissions } from "./permissions.js"; import { Permissions } from "./permissions.js";
import { Settings, RoleList } from "./settings.js"; import { Settings, RoleList } from "./settings.js";
import { Role } from "./role.js"; import { Role } from "./role.js";
@ -446,7 +446,7 @@ class Channel {
let nsfw = this.nsfw; let nsfw = this.nsfw;
const thisid = this.snowflake; const thisid = this.snowflake;
const thistype = this.type; const thistype = this.type;
const full = new Fullscreen(["hdiv", const full = new Dialog(["hdiv",
["vdiv", ["vdiv",
["textbox", "Channel name:", this.name, function () { name = this.value; }], ["textbox", "Channel name:", this.name, function () { name = this.value; }],
["mdbox", "Channel topic:", this.topic, function () { topic = this.value; }], ["mdbox", "Channel topic:", this.topic, function () { topic = this.value; }],

247
.dist/dialog.js Normal file
View file

@ -0,0 +1,247 @@
export { Dialog };
class Dialog {
layout;
onclose;
onopen;
html;
background;
constructor(layout, onclose = _ => { }, onopen = _ => { }) {
this.layout = layout;
this.onclose = onclose;
this.onopen = onopen;
const div = document.createElement("div");
div.appendChild(this.tohtml(layout));
this.html = div;
this.html.classList.add("centeritem");
if (!(layout[0] === "img")) {
this.html.classList.add("nonimagecenter");
}
}
tohtml(array) {
switch (array[0]) {
case "img":
const img = document.createElement("img");
img.src = array[1];
if (array[2] != undefined) {
if (array[2].length == 2) {
img.width = array[2][0];
img.height = array[2][1];
}
else if (array[2][0] == "fit") {
img.classList.add("imgfit");
}
}
return img;
case "hdiv":
const hdiv = document.createElement("table");
const tr = document.createElement("tr");
hdiv.appendChild(tr);
for (const thing of array) {
if (thing === "hdiv") {
continue;
}
const td = document.createElement("td");
td.appendChild(this.tohtml(thing));
tr.appendChild(td);
}
return hdiv;
case "vdiv":
const vdiv = document.createElement("table");
for (const thing of array) {
if (thing === "vdiv") {
continue;
}
const tr = document.createElement("tr");
tr.appendChild(this.tohtml(thing));
vdiv.appendChild(tr);
}
return vdiv;
case "checkbox":
{
const div = document.createElement("div");
const checkbox = document.createElement('input');
div.appendChild(checkbox);
const label = document.createElement("span");
checkbox.checked = array[2];
label.textContent = array[1];
div.appendChild(label);
checkbox.addEventListener("change", array[3]);
checkbox.type = "checkbox";
return div;
}
case "button":
{
const div = document.createElement("div");
const input = document.createElement('button');
const label = document.createElement("span");
input.textContent = array[2];
label.textContent = array[1];
div.appendChild(label);
div.appendChild(input);
input.addEventListener("click", array[3]);
return div;
}
case "mdbox":
{
const div = document.createElement("div");
const input = document.createElement("textarea");
input.value = array[2];
const label = document.createElement("span");
label.textContent = array[1];
input.addEventListener("input", array[3]);
div.appendChild(label);
div.appendChild(document.createElement("br"));
div.appendChild(input);
return div;
}
case "textbox":
{
const div = document.createElement("div");
const input = document.createElement("input");
input.value = array[2];
input.type = "text";
const label = document.createElement("span");
label.textContent = array[1];
console.log(array[3]);
input.addEventListener("input", array[3]);
div.appendChild(label);
div.appendChild(input);
return div;
}
case "fileupload":
{
const div = document.createElement("div");
const input = document.createElement("input");
input.type = "file";
const label = document.createElement("span");
label.textContent = array[1];
div.appendChild(label);
div.appendChild(input);
input.addEventListener("change", array[2]);
console.log(array);
return div;
}
case "text": {
const span = document.createElement("span");
span.textContent = array[1];
return span;
}
case "title": {
const span = document.createElement("span");
span.classList.add("title");
span.textContent = array[1];
return span;
}
case "radio": {
const div = document.createElement("div");
const fieldset = document.createElement("fieldset");
fieldset.addEventListener("change", function () {
let i = -1;
for (const thing of fieldset.children) {
i++;
if (i === 0) {
continue;
}
const checkbox = thing.children[0].children[0];
if (checkbox.checked) {
array[3](checkbox.value);
}
}
});
const legend = document.createElement("legend");
legend.textContent = array[1];
fieldset.appendChild(legend);
let i = 0;
for (const thing of array[2]) {
const div = document.createElement("div");
const input = document.createElement("input");
input.classList.add("radio");
input.type = "radio";
input.name = array[1];
input.value = thing;
if (i === array[4]) {
input.checked = true;
}
const label = document.createElement("label");
label.appendChild(input);
const span = document.createElement("span");
span.textContent = thing;
label.appendChild(span);
div.appendChild(label);
fieldset.appendChild(div);
i++;
}
div.appendChild(fieldset);
return div;
}
case "html": {
return array[1];
}
case "select": {
const div = document.createElement("div");
const label = document.createElement("label");
const select = document.createElement("select");
label.textContent = array[1];
div.append(label);
div.appendChild(select);
for (const thing of array[2]) {
const option = document.createElement("option");
option.textContent = thing;
select.appendChild(option);
}
select.selectedIndex = array[4];
select.addEventListener("change", array[3]);
return div;
}
case "tabs": {
const table = document.createElement("table");
const tabs = document.createElement("tr");
tabs.classList.add("tabbed-head");
table.appendChild(tabs);
const td = document.createElement("td");
tabs.appendChild(td);
const content = document.createElement("tr");
content.classList.add("tabbed-content");
table.appendChild(content);
let shown;
for (const thing of array[1]) {
const button = document.createElement("button");
button.textContent = thing[0];
td.appendChild(button);
const tdcontent = document.createElement("td");
tdcontent.colSpan = array[1].length;
tdcontent.appendChild(this.tohtml(thing[1]));
content.appendChild(tdcontent);
if (!shown) {
shown = tdcontent;
}
else {
tdcontent.hidden = true;
}
button.addEventListener("click", _ => {
shown.hidden = true;
tdcontent.hidden = false;
shown = tdcontent;
});
}
return table;
}
default:
console.error("can't find element:" + array[0], " full element:" + array);
return;
}
}
show() {
this.onopen();
console.log("fullscreen");
this.background = document.createElement("div");
this.background.classList.add("background");
document.body.appendChild(this.background);
document.body.appendChild(this.html);
this.background.onclick = function () { this.hide(); }.bind(this);
}
hide() {
document.body.removeChild(this.background);
document.body.removeChild(this.html);
}
}

View file

@ -1,4 +1,4 @@
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
import { MarkDown } from "./markdown.js"; import { MarkDown } from "./markdown.js";
class Embed { class Embed {
type; type;
@ -128,7 +128,7 @@ class Embed {
const img = document.createElement("img"); const img = document.createElement("img");
img.classList.add("messageimg"); img.classList.add("messageimg");
img.onclick = function () { img.onclick = function () {
const full = new Fullscreen(["img", img.src, ["fit"]]); const full = new Dialog(["img", img.src, ["fit"]]);
full.show(); full.show();
}; };
img.src = this.json.thumbnail.proxy_url; img.src = this.json.thumbnail.proxy_url;
@ -153,7 +153,7 @@ class Embed {
if (this.json.thumbnail) { if (this.json.thumbnail) {
img.classList.add("embedimg"); img.classList.add("embedimg");
img.onclick = function () { img.onclick = function () {
const full = new Fullscreen(["img", img.src, ["fit"]]); const full = new Dialog(["img", img.src, ["fit"]]);
full.show(); full.show();
}; };
img.src = this.json.thumbnail.proxy_url; img.src = this.json.thumbnail.proxy_url;
@ -193,7 +193,7 @@ class Embed {
const img = document.createElement("img"); const img = document.createElement("img");
img.classList.add("bigembedimg"); img.classList.add("bigembedimg");
img.onclick = function () { img.onclick = function () {
const full = new Fullscreen(["img", img.src, ["fit"]]); const full = new Dialog(["img", img.src, ["fit"]]);
full.show(); full.show();
}; };
img.src = this.json.thumbnail.proxy_url || this.json.thumbnail.url; img.src = this.json.thumbnail.proxy_url || this.json.thumbnail.url;

View file

@ -1,4 +1,4 @@
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
class File { class File {
owner; owner;
id; id;
@ -27,7 +27,7 @@ class File {
const img = document.createElement("img"); const img = document.createElement("img");
img.classList.add("messageimg"); img.classList.add("messageimg");
img.onclick = function () { img.onclick = function () {
const full = new Fullscreen(["img", img.src, ["fit"]]); const full = new Dialog(["img", img.src, ["fit"]]);
full.show(); full.show();
}; };
img.src = src; img.src = src;

View file

@ -1,5 +1,5 @@
export { Fullscreen }; export { Dialog };
class Fullscreen { class Dialog {
layout; layout;
onclose; onclose;
onopen; onopen;

View file

@ -1,7 +1,7 @@
import { Channel } from "./channel.js"; import { Channel } from "./channel.js";
import { Contextmenu } from "./contextmenu.js"; import { Contextmenu } from "./contextmenu.js";
import { Role } from "./role.js"; import { Role } from "./role.js";
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
import { Member } from "./member.js"; import { Member } from "./member.js";
import { Settings, RoleList } from "./settings.js"; import { Settings, RoleList } from "./settings.js";
import { SnowFlake } from "./snowflake.js"; import { SnowFlake } from "./snowflake.js";
@ -108,7 +108,7 @@ class Guild {
} }
setnotifcation() { setnotifcation() {
let noti = this.message_notifications; let noti = this.message_notifications;
const notiselect = new Fullscreen(["vdiv", const notiselect = new Dialog(["vdiv",
["radio", "select notifications type", ["radio", "select notifications type",
["all", "only mentions", "none"], ["all", "only mentions", "none"],
function (e) { function (e) {
@ -134,7 +134,7 @@ class Guild {
notiselect.show(); notiselect.show();
} }
confirmleave() { confirmleave() {
const full = new Fullscreen([ const full = new Dialog([
"vdiv", "vdiv",
["title", ["title",
"Are you sure you want to leave?" "Are you sure you want to leave?"
@ -270,7 +270,7 @@ class Guild {
} }
confirmDelete() { confirmDelete() {
let confirmname = ""; let confirmname = "";
const full = new Fullscreen([ const full = new Dialog([
"vdiv", "vdiv",
["title", ["title",
"Are you sure you want to delete " + this.properties.name + "?" "Are you sure you want to delete " + this.properties.name + "?"
@ -421,7 +421,7 @@ class Guild {
createchannels(func = this.createChannel) { createchannels(func = this.createChannel) {
let name = ""; let name = "";
let category = 0; let category = 0;
const channelselect = new Fullscreen(["vdiv", const channelselect = new Dialog(["vdiv",
["radio", "select channel type", ["radio", "select channel type",
["voice", "text", "announcement"], ["voice", "text", "announcement"],
function (e) { function (e) {
@ -445,7 +445,7 @@ class Guild {
createcategory() { createcategory() {
let name = ""; let name = "";
let category = 4; let category = 4;
const channelselect = new Fullscreen(["vdiv", const channelselect = new Dialog(["vdiv",
["textbox", "Name of category", "", function () { ["textbox", "Name of category", "", function () {
console.log(this); console.log(this);
name = this.value; name = this.value;

View file

@ -2,7 +2,7 @@ import { Guild } from "./guild.js";
import { Direct } from "./direct.js"; import { Direct } from "./direct.js";
import { Voice } from "./audio.js"; import { Voice } from "./audio.js";
import { User } from "./user.js"; import { User } from "./user.js";
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
import { getBulkInfo, setTheme } from "./login.js"; import { getBulkInfo, setTheme } from "./login.js";
import { SnowFlake } from "./snowflake.js"; import { SnowFlake } from "./snowflake.js";
import { Message } from "./message.js"; import { Message } from "./message.js";
@ -466,7 +466,7 @@ class Localuser {
createGuild() { createGuild() {
let inviteurl = ""; let inviteurl = "";
const error = document.createElement("span"); const error = document.createElement("span");
const full = new Fullscreen(["tabs", [ const full = new Dialog(["tabs", [
["Join using invite", [ ["Join using invite", [
"vdiv", "vdiv",
["textbox", ["textbox",
@ -509,7 +509,7 @@ class Localuser {
const content = document.createElement("div"); const content = document.createElement("div");
content.classList.add("guildy"); content.classList.add("guildy");
content.textContent = "Loading..."; content.textContent = "Loading...";
const full = new Fullscreen(["html", content]); const full = new Dialog(["html", content]);
full.show(); full.show();
const res = await fetch(this.info.api + "/discoverable-guilds?limit=50", { const res = await fetch(this.info.api + "/discoverable-guilds?limit=50", {
headers: this.headers headers: this.headers
@ -774,7 +774,7 @@ class Localuser {
} }
let password = ""; let password = "";
let code = ""; let code = "";
const addmodel = new Fullscreen(["vdiv", const addmodel = new Dialog(["vdiv",
["title", "2FA set up"], ["title", "2FA set up"],
["text", "Copy this secret into your totp(time-based one time password) app"], ["text", "Copy this secret into your totp(time-based one time password) app"],
["text", `Your secret is: ${secret} and it's 6 digits, with a 30 second token period`], ["text", `Your secret is: ${secret} and it's 6 digits, with a 30 second token period`],
@ -815,7 +815,7 @@ class Localuser {
genusersettings() { genusersettings() {
const connectionContainer = document.createElement("div"); const connectionContainer = document.createElement("div");
connectionContainer.id = "connection-container"; connectionContainer.id = "connection-container";
this.userConnections = new Fullscreen(["html", this.userConnections = new Dialog(["html",
connectionContainer connectionContainer
], () => { }, async () => { ], () => { }, async () => {
connectionContainer.innerHTML = ""; connectionContainer.innerHTML = "";
@ -846,7 +846,7 @@ class Localuser {
let appName = ""; let appName = "";
const appListContainer = document.createElement("div"); const appListContainer = document.createElement("div");
appListContainer.id = "app-list-container"; appListContainer.id = "app-list-container";
this.devPortal = new Fullscreen(["vdiv", this.devPortal = new Dialog(["vdiv",
["hdiv", ["hdiv",
["textbox", "Name:", appName, event => { ["textbox", "Name:", appName, event => {
appName = event.target.value; appName = event.target.value;
@ -906,7 +906,7 @@ class Localuser {
}); });
const json = await res.json(); const json = await res.json();
const fields = {}; const fields = {};
const appDialog = new Fullscreen(["vdiv", const appDialog = new Dialog(["vdiv",
["title", ["title",
"Editing " + json.name "Editing " + json.name
], ],
@ -995,7 +995,7 @@ class Localuser {
username: json.bot.username, username: json.bot.username,
avatar: json.bot.avatar ? (this.info.cdn + "/app-icons/" + appId + "/" + json.bot.avatar + ".png?size=256") : "" avatar: json.bot.avatar ? (this.info.cdn + "/app-icons/" + appId + "/" + json.bot.avatar + ".png?size=256") : ""
}; };
const botDialog = new Fullscreen(["vdiv", const botDialog = new Dialog(["vdiv",
["title", ["title",
"Editing bot: " + json.bot.username "Editing bot: " + json.bot.username
], ],

View file

@ -1,4 +1,4 @@
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
const mobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); const mobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
export { mobile, getBulkUsers, getBulkInfo, setTheme, Specialuser }; export { mobile, getBulkUsers, getBulkInfo, setTheme, Specialuser };
function setTheme() { function setTheme() {
@ -204,7 +204,7 @@ async function login(username, password, captcha) {
console.log(response); console.log(response);
if (response.ticket) { if (response.ticket) {
let onetimecode = ""; let onetimecode = "";
new Fullscreen(["vdiv", ["title", "2FA code:"], ["textbox", "", "", function () { onetimecode = this.value; }], ["button", "", "Submit", function () { new Dialog(["vdiv", ["title", "2FA code:"], ["textbox", "", "", function () { onetimecode = this.value; }], ["button", "", "Submit", function () {
fetch(api + "/auth/mfa/totp", { fetch(api + "/auth/mfa/totp", {
method: "POST", method: "POST",
headers: { headers: {

View file

@ -2,7 +2,7 @@
import { Message } from "./message.js"; import { Message } from "./message.js";
import {Voice} from "./audio.js"; import {Voice} from "./audio.js";
import {Contextmenu} from "./contextmenu.js"; import {Contextmenu} from "./contextmenu.js";
import {Fullscreen} from "./fullscreen.js"; import {Dialog} from "./dialog.js";
import {Guild} from "./guild.js"; import {Guild} from "./guild.js";
import { Localuser } from "./localuser.js"; import { Localuser } from "./localuser.js";
import { Permissions } from "./permissions.js"; import { Permissions } from "./permissions.js";
@ -454,7 +454,7 @@ class Channel{
let nsfw=this.nsfw; let nsfw=this.nsfw;
const thisid=this.snowflake; const thisid=this.snowflake;
const thistype=this.type; const thistype=this.type;
const full=new Fullscreen( const full=new Dialog(
["hdiv", ["hdiv",
["vdiv", ["vdiv",
["textbox","Channel name:",this.name,function(){name=this.value}], ["textbox","Channel name:",this.name,function(){name=this.value}],

View file

@ -1,5 +1,5 @@
export {Fullscreen}; export {Dialog};
class Fullscreen{ class Dialog{
layout; layout;
onclose: Function; onclose: Function;
onopen: Function; onopen: Function;

View file

@ -1,4 +1,4 @@
import {Fullscreen} from "./fullscreen.js"; import {Dialog} from "./dialog.js";
import {Message} from "./message.js"; import {Message} from "./message.js";
import {MarkDown} from "./markdown.js"; import {MarkDown} from "./markdown.js";
import { embedjson } from "./jsontypes.js"; import { embedjson } from "./jsontypes.js";
@ -133,7 +133,7 @@ class Embed{
const img=document.createElement("img"); const img=document.createElement("img");
img.classList.add("messageimg") img.classList.add("messageimg")
img.onclick=function(){ img.onclick=function(){
const full=new Fullscreen(["img",img.src,["fit"]]); const full=new Dialog(["img",img.src,["fit"]]);
full.show(); full.show();
} }
img.src=this.json.thumbnail.proxy_url; img.src=this.json.thumbnail.proxy_url;
@ -158,7 +158,7 @@ class Embed{
if(this.json.thumbnail){ if(this.json.thumbnail){
img.classList.add("embedimg"); img.classList.add("embedimg");
img.onclick=function(){ img.onclick=function(){
const full=new Fullscreen(["img",img.src,["fit"]]); const full=new Dialog(["img",img.src,["fit"]]);
full.show(); full.show();
} }
img.src=this.json.thumbnail.proxy_url; img.src=this.json.thumbnail.proxy_url;
@ -201,7 +201,7 @@ class Embed{
const img=document.createElement("img"); const img=document.createElement("img");
img.classList.add("bigembedimg"); img.classList.add("bigembedimg");
img.onclick=function(){ img.onclick=function(){
const full=new Fullscreen(["img",img.src,["fit"]]); const full=new Dialog(["img",img.src,["fit"]]);
full.show(); full.show();
} }
img.src=this.json.thumbnail.proxy_url||this.json.thumbnail.url; img.src=this.json.thumbnail.proxy_url||this.json.thumbnail.url;

View file

@ -1,5 +1,5 @@
import { Message } from "./message.js"; import { Message } from "./message.js";
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
import { filejson } from "./jsontypes.js"; import { filejson } from "./jsontypes.js";
class File{ class File{
@ -30,7 +30,7 @@ class File{
const img=document.createElement("img"); const img=document.createElement("img");
img.classList.add("messageimg"); img.classList.add("messageimg");
img.onclick=function(){ img.onclick=function(){
const full=new Fullscreen(["img",img.src,["fit"]]); const full=new Dialog(["img",img.src,["fit"]]);
full.show(); full.show();
} }
img.src=src; img.src=src;

View file

@ -2,7 +2,7 @@ import { Channel } from "./channel.js";
import { Localuser } from "./localuser.js"; import { Localuser } from "./localuser.js";
import {Contextmenu} from "./contextmenu.js"; import {Contextmenu} from "./contextmenu.js";
import {Role} from "./role.js"; import {Role} from "./role.js";
import {Fullscreen} from "./fullscreen.js"; import {Dialog} from "./dialog.js";
import {Member} from "./member.js"; import {Member} from "./member.js";
import {Settings,RoleList} from "./settings.js"; import {Settings,RoleList} from "./settings.js";
import {Permissions} from "./permissions.js"; import {Permissions} from "./permissions.js";
@ -118,7 +118,7 @@ class Guild{
} }
setnotifcation(){ setnotifcation(){
let noti=this.message_notifications let noti=this.message_notifications
const notiselect=new Fullscreen( const notiselect=new Dialog(
["vdiv", ["vdiv",
["radio","select notifications type", ["radio","select notifications type",
["all","only mentions","none"], ["all","only mentions","none"],
@ -145,7 +145,7 @@ class Guild{
notiselect.show(); notiselect.show();
} }
confirmleave(){ confirmleave(){
const full= new Fullscreen([ const full= new Dialog([
"vdiv", "vdiv",
["title", ["title",
"Are you sure you want to leave?" "Are you sure you want to leave?"
@ -280,7 +280,7 @@ class Guild{
} }
confirmDelete(){ confirmDelete(){
let confirmname=""; let confirmname="";
const full= new Fullscreen([ const full= new Dialog([
"vdiv", "vdiv",
["title", ["title",
"Are you sure you want to delete "+this.properties.name+"?" "Are you sure you want to delete "+this.properties.name+"?"
@ -429,7 +429,7 @@ class Guild{
createchannels(func=this.createChannel){ createchannels(func=this.createChannel){
let name=""; let name="";
let category=0; let category=0;
const channelselect=new Fullscreen( const channelselect=new Dialog(
["vdiv", ["vdiv",
["radio","select channel type", ["radio","select channel type",
["voice","text","announcement"], ["voice","text","announcement"],
@ -454,7 +454,7 @@ class Guild{
createcategory(){ createcategory(){
let name=""; let name="";
let category=4; let category=4;
const channelselect=new Fullscreen( const channelselect=new Dialog(
["vdiv", ["vdiv",
["textbox","Name of category","",function(){ ["textbox","Name of category","",function(){
console.log(this); console.log(this);

View file

@ -3,7 +3,7 @@ import {Channel} from "./channel.js";
import {Direct} from "./direct.js"; import {Direct} from "./direct.js";
import {Voice} from "./audio.js"; import {Voice} from "./audio.js";
import {User} from "./user.js"; import {User} from "./user.js";
import {Fullscreen} from "./fullscreen.js"; import {Dialog} from "./dialog.js";
import {getBulkInfo, setTheme, Specialuser} from "./login.js"; import {getBulkInfo, setTheme, Specialuser} from "./login.js";
import { SnowFlake } from "./snowflake.js"; import { SnowFlake } from "./snowflake.js";
import { Message } from "./message.js"; import { Message } from "./message.js";
@ -23,8 +23,8 @@ class Localuser{
info:Specialuser["serverurls"]; info:Specialuser["serverurls"];
headers:{"Content-type":string,Authorization:string}; headers:{"Content-type":string,Authorization:string};
usersettings:Settings; usersettings:Settings;
userConnections:Fullscreen; userConnections:Dialog;
devPortal:Fullscreen; devPortal:Dialog;
ready:readyjson; ready:readyjson;
guilds:Guild[]; guilds:Guild[];
guildids:Map<string,Guild>; guildids:Map<string,Guild>;
@ -479,7 +479,7 @@ class Localuser{
let inviteurl=""; let inviteurl="";
const error=document.createElement("span"); const error=document.createElement("span");
const full=new Fullscreen(["tabs",[ const full=new Dialog(["tabs",[
["Join using invite",[ ["Join using invite",[
"vdiv", "vdiv",
["textbox", ["textbox",
@ -523,7 +523,7 @@ class Localuser{
const content=document.createElement("div"); const content=document.createElement("div");
content.classList.add("guildy"); content.classList.add("guildy");
content.textContent="Loading..."; content.textContent="Loading...";
const full=new Fullscreen(["html", content]); const full=new Dialog(["html", content]);
full.show(); full.show();
const res=await fetch(this.info.api+"/discoverable-guilds?limit=50", { const res=await fetch(this.info.api+"/discoverable-guilds?limit=50", {
@ -792,7 +792,7 @@ class Localuser{
} }
let password=""; let password="";
let code=""; let code="";
const addmodel=new Fullscreen( const addmodel=new Dialog(
["vdiv", ["vdiv",
["title","2FA set up"], ["title","2FA set up"],
["text","Copy this secret into your totp(time-based one time password) app"], ["text","Copy this secret into your totp(time-based one time password) app"],
@ -834,7 +834,7 @@ class Localuser{
genusersettings():void{ genusersettings():void{
const connectionContainer=document.createElement("div"); const connectionContainer=document.createElement("div");
connectionContainer.id="connection-container"; connectionContainer.id="connection-container";
this.userConnections=new Fullscreen( this.userConnections=new Dialog(
["html", ["html",
connectionContainer connectionContainer
], () => {}, async () => { ], () => {}, async () => {
@ -872,7 +872,7 @@ class Localuser{
let appName=""; let appName="";
const appListContainer=document.createElement("div"); const appListContainer=document.createElement("div");
appListContainer.id="app-list-container"; appListContainer.id="app-list-container";
this.devPortal=new Fullscreen( this.devPortal=new Dialog(
["vdiv", ["vdiv",
["hdiv", ["hdiv",
["textbox", "Name:", appName, event => { ["textbox", "Name:", appName, event => {
@ -940,7 +940,7 @@ class Localuser{
const json=await res.json(); const json=await res.json();
const fields: any={}; const fields: any={};
const appDialog=new Fullscreen( const appDialog=new Dialog(
["vdiv", ["vdiv",
["title", ["title",
"Editing " + json.name "Editing " + json.name
@ -1031,7 +1031,7 @@ class Localuser{
username: json.bot.username, username: json.bot.username,
avatar: json.bot.avatar ? (this.info.cdn+"/app-icons/" + appId + "/" + json.bot.avatar + ".png?size=256") : "" avatar: json.bot.avatar ? (this.info.cdn+"/app-icons/" + appId + "/" + json.bot.avatar + ".png?size=256") : ""
}; };
const botDialog=new Fullscreen( const botDialog=new Dialog(
["vdiv", ["vdiv",
["title", ["title",
"Editing bot: " + json.bot.username "Editing bot: " + json.bot.username

View file

@ -1,4 +1,4 @@
import { Fullscreen } from "./fullscreen.js"; import { Dialog } from "./dialog.js";
const mobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); const mobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
export {mobile, getBulkUsers,getBulkInfo,setTheme,Specialuser} export {mobile, getBulkUsers,getBulkInfo,setTheme,Specialuser}
@ -201,7 +201,7 @@ async function login(username:string, password:string, captcha:string){
console.log(response); console.log(response);
if(response.ticket){ if(response.ticket){
let onetimecode=""; let onetimecode="";
new Fullscreen(["vdiv",["title","2FA code:"],["textbox","","",function(){onetimecode=this.value}],["button","","Submit",function(){ new Dialog(["vdiv",["title","2FA code:"],["textbox","","",function(){onetimecode=this.value}],["button","","Submit",function(){
fetch(api+"/auth/mfa/totp",{ fetch(api+"/auth/mfa/totp",{
method:"POST", method:"POST",
headers:{ headers:{