remove snowflake instances
This commit is contained in:
parent
004beb4955
commit
e66b6c0883
16 changed files with 97 additions and 149 deletions
|
@ -9,13 +9,12 @@ import { RoleList } from "./role.js";
|
|||
import { InfiniteScroller } from "./infiniteScroller.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
import { MarkDown } from "./markdown.js";
|
||||
class Channel {
|
||||
class Channel extends SnowFlake {
|
||||
editing;
|
||||
type;
|
||||
owner;
|
||||
headers;
|
||||
name;
|
||||
snowflake;
|
||||
parent_id;
|
||||
parent;
|
||||
children;
|
||||
|
@ -39,9 +38,6 @@ class Channel {
|
|||
idToPrev = new Map();
|
||||
idToNext = new Map();
|
||||
messages = new Map();
|
||||
get id() {
|
||||
return this.snowflake.id;
|
||||
}
|
||||
static setupcontextmenu() {
|
||||
this.contextmenu.addbutton("Copy channel id", function () {
|
||||
console.log(this);
|
||||
|
@ -155,23 +151,22 @@ class Channel {
|
|||
}
|
||||
setUpInfiniteScroller() {
|
||||
this.infinite = new InfiniteScroller((async (id, offset) => {
|
||||
const snowflake = id;
|
||||
if (offset === 1) {
|
||||
if (this.idToPrev.has(snowflake)) {
|
||||
return this.idToPrev.get(snowflake);
|
||||
if (this.idToPrev.has(id)) {
|
||||
return this.idToPrev.get(id);
|
||||
}
|
||||
else {
|
||||
await this.grabBefore(id);
|
||||
return this.idToPrev.get(snowflake);
|
||||
return this.idToPrev.get(id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.idToNext.has(snowflake)) {
|
||||
return this.idToNext.get(snowflake);
|
||||
if (this.idToNext.has(id)) {
|
||||
return this.idToNext.get(id);
|
||||
}
|
||||
else if (this.lastmessage?.id !== id) {
|
||||
await this.grabAfter(id);
|
||||
return this.idToNext.get(snowflake);
|
||||
return this.idToNext.get(id);
|
||||
}
|
||||
else {
|
||||
console.log("at bottom");
|
||||
|
@ -207,7 +202,8 @@ class Channel {
|
|||
return false;
|
||||
}), this.readbottom.bind(this));
|
||||
}
|
||||
constructor(json, owner) {
|
||||
constructor(json, owner, id = json === -1 ? undefined : json.id) {
|
||||
super(id);
|
||||
if (json === -1) {
|
||||
return;
|
||||
}
|
||||
|
@ -216,7 +212,6 @@ class Channel {
|
|||
this.owner = owner;
|
||||
this.headers = this.owner.headers;
|
||||
this.name = json.name;
|
||||
this.snowflake = new SnowFlake(json.id);
|
||||
if (json.parent_id) {
|
||||
this.parent_id = json.parent_id;
|
||||
}
|
||||
|
@ -491,7 +486,7 @@ class Channel {
|
|||
if (!this.hasunreads) {
|
||||
return;
|
||||
}
|
||||
fetch(this.info.api + "/channels/" + this.snowflake + "/messages/" + this.lastmessageid + "/ack", {
|
||||
fetch(this.info.api + "/channels/" + this.id + "/messages/" + this.lastmessageid + "/ack", {
|
||||
method: "POST",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({})
|
||||
|
@ -578,7 +573,7 @@ class Channel {
|
|||
let name = this.name;
|
||||
let topic = this.topic;
|
||||
let nsfw = this.nsfw;
|
||||
const thisid = this.snowflake;
|
||||
const thisid = this.id;
|
||||
const thistype = this.type;
|
||||
const full = new Dialog(["hdiv",
|
||||
["vdiv",
|
||||
|
@ -614,7 +609,7 @@ class Channel {
|
|||
console.log(full);
|
||||
}
|
||||
deleteChannel() {
|
||||
fetch(this.info.api + "/channels/" + this.snowflake, {
|
||||
fetch(this.info.api + "/channels/" + this.id, {
|
||||
method: "DELETE",
|
||||
headers: this.headers
|
||||
});
|
||||
|
@ -661,7 +656,7 @@ class Channel {
|
|||
return message;
|
||||
}
|
||||
else {
|
||||
const gety = await fetch(this.info.api + "/channels/" + this.snowflake + "/messages?limit=1&around=" + id, { headers: this.headers });
|
||||
const gety = await fetch(this.info.api + "/channels/" + this.id + "/messages?limit=1&around=" + id, { headers: this.headers });
|
||||
const json = await gety.json();
|
||||
return new Message(json[0], this);
|
||||
}
|
||||
|
@ -684,7 +679,7 @@ class Channel {
|
|||
this.guild.prevchannel = this;
|
||||
this.localuser.channelfocus = this;
|
||||
const prom = this.infinite.delete();
|
||||
history.pushState(null, "", "/channels/" + this.guild_id + "/" + this.snowflake);
|
||||
history.pushState(null, "", "/channels/" + this.guild_id + "/" + this.id);
|
||||
this.localuser.pageTitle("#" + this.name);
|
||||
const channelTopic = document.getElementById("channelTopic");
|
||||
if (this.topic) {
|
||||
|
@ -737,7 +732,7 @@ class Channel {
|
|||
if (this.lastreadmessageid && this.messages.has(this.lastreadmessageid)) {
|
||||
return;
|
||||
}
|
||||
const j = await fetch(this.info.api + "/channels/" + this.snowflake + "/messages?limit=100", {
|
||||
const j = await fetch(this.info.api + "/channels/" + this.id + "/messages?limit=100", {
|
||||
headers: this.headers,
|
||||
});
|
||||
const response = await j.json();
|
||||
|
@ -846,11 +841,6 @@ class Channel {
|
|||
throw new Error("please don't call this, no one has implemented it :P");
|
||||
}
|
||||
async buildmessages() {
|
||||
/*
|
||||
if(((!this.lastmessage)||(!this.lastmessage.snowflake)||(!this.goBackIds(this.lastmessage.snowflake,50,false)))&&this.lastreadmessageid){
|
||||
await this.grabAfter(this.lastreadmessageid.id);
|
||||
}
|
||||
*/
|
||||
this.infinitefocus = false;
|
||||
this.tryfocusinfinate();
|
||||
}
|
||||
|
@ -968,7 +958,7 @@ class Channel {
|
|||
return;
|
||||
}
|
||||
this.typing = Date.now() + 6000;
|
||||
fetch(this.info.api + "/channels/" + this.snowflake + "/typing", {
|
||||
fetch(this.info.api + "/channels/" + this.id + "/typing", {
|
||||
method: "POST",
|
||||
headers: this.headers
|
||||
});
|
||||
|
@ -1009,7 +999,7 @@ class Channel {
|
|||
if (replyjson) {
|
||||
body.message_reference = replyjson;
|
||||
}
|
||||
return await fetch(this.info.api + "/channels/" + this.snowflake + "/messages", {
|
||||
return await fetch(this.info.api + "/channels/" + this.id + "/messages", {
|
||||
method: "POST",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify(body)
|
||||
|
@ -1029,7 +1019,7 @@ class Channel {
|
|||
for (const i in attachments) {
|
||||
formData.append("files[" + i + "]", attachments[i]);
|
||||
}
|
||||
return await fetch(this.info.api + "/channels/" + this.snowflake + "/messages", {
|
||||
return await fetch(this.info.api + "/channels/" + this.id + "/messages", {
|
||||
method: "POST",
|
||||
body: formData,
|
||||
headers: { Authorization: this.headers.Authorization }
|
||||
|
@ -1121,7 +1111,7 @@ class Channel {
|
|||
}
|
||||
}
|
||||
async addRoleToPerms(role) {
|
||||
await fetch(this.info.api + "/channels/" + this.snowflake + "/permissions/" + role.snowflake, {
|
||||
await fetch(this.info.api + "/channels/" + this.id + "/permissions/" + role.id, {
|
||||
method: "PUT",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({
|
||||
|
@ -1140,7 +1130,7 @@ class Channel {
|
|||
if (permission) {
|
||||
permission.allow = perms.allow;
|
||||
permission.deny = perms.deny;
|
||||
await fetch(this.info.api + "/channels/" + this.snowflake + "/permissions/" + id, {
|
||||
await fetch(this.info.api + "/channels/" + this.id + "/permissions/" + id, {
|
||||
method: "PUT",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({
|
||||
|
|
|
@ -2,7 +2,6 @@ import { Guild } from "./guild.js";
|
|||
import { Channel } from "./channel.js";
|
||||
import { Message } from "./message.js";
|
||||
import { User } from "./user.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
import { Permissions } from "./permissions.js";
|
||||
class Direct extends Guild {
|
||||
constructor(json, owner) {
|
||||
|
@ -15,7 +14,6 @@ class Direct extends Guild {
|
|||
this.headers = this.localuser.headers;
|
||||
this.channels = [];
|
||||
this.channelids = {};
|
||||
this.snowflake = new SnowFlake("@me");
|
||||
this.properties = {};
|
||||
this.roles = [];
|
||||
this.roleids = new Map();
|
||||
|
@ -77,7 +75,7 @@ dmPermissions.setPermission("USE_VAD", 1);
|
|||
class Group extends Channel {
|
||||
user;
|
||||
constructor(json, owner) {
|
||||
super(-1, owner);
|
||||
super(-1, owner, json.id);
|
||||
this.owner = owner;
|
||||
this.headers = this.guild.headers;
|
||||
this.name = json.recipients[0]?.username;
|
||||
|
@ -88,7 +86,6 @@ class Group extends Channel {
|
|||
this.user = this.localuser.user;
|
||||
}
|
||||
this.name ??= this.localuser.user.username;
|
||||
this.snowflake = new SnowFlake(json.id);
|
||||
this.parent_id = null;
|
||||
this.parent = null;
|
||||
this.children = [];
|
||||
|
@ -100,7 +97,7 @@ class Group extends Channel {
|
|||
if (this.lastmessageid) {
|
||||
this.position = Number((BigInt(this.lastmessageid) >> 22n) + 1420070400000n);
|
||||
}
|
||||
this.position = -Math.max(this.position, this.snowflake.getUnixTime());
|
||||
this.position = -Math.max(this.position, this.getUnixTime());
|
||||
}
|
||||
createguildHTML() {
|
||||
const div = document.createElement("div");
|
||||
|
|
|
@ -6,12 +6,11 @@ import { Member } from "./member.js";
|
|||
import { Settings } from "./settings.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
import { User } from "./user.js";
|
||||
class Guild {
|
||||
class Guild extends SnowFlake {
|
||||
owner;
|
||||
headers;
|
||||
channels;
|
||||
channelids;
|
||||
snowflake;
|
||||
properties;
|
||||
roles;
|
||||
roleids;
|
||||
|
@ -23,9 +22,6 @@ class Guild {
|
|||
member;
|
||||
html;
|
||||
emojis;
|
||||
get id() {
|
||||
return this.snowflake.id;
|
||||
}
|
||||
static contextmenu = new Contextmenu("guild menu");
|
||||
static setupcontextmenu() {
|
||||
Guild.contextmenu.addbutton("Copy Guild id", function () {
|
||||
|
@ -78,18 +74,19 @@ class Guild {
|
|||
settings.show();
|
||||
}
|
||||
constructor(json, owner, member) {
|
||||
if (json === -1 || member === null) {
|
||||
if (json === -1) {
|
||||
super("@me");
|
||||
return;
|
||||
}
|
||||
if (json.stickers.length) {
|
||||
console.log(json.stickers, ":3");
|
||||
}
|
||||
super(json.id);
|
||||
this.emojis = json.emojis;
|
||||
this.owner = owner;
|
||||
this.headers = this.owner.headers;
|
||||
this.channels = [];
|
||||
this.channelids = {};
|
||||
this.snowflake = new SnowFlake(json.id);
|
||||
this.properties = json.properties;
|
||||
this.roles = [];
|
||||
this.roleids = new Map();
|
||||
|
@ -192,7 +189,7 @@ class Guild {
|
|||
full.show();
|
||||
}
|
||||
async leave() {
|
||||
return fetch(this.info.api + "/users/@me/guilds/" + this.snowflake, {
|
||||
return fetch(this.info.api + "/users/@me/guilds/" + this.id, {
|
||||
method: "DELETE",
|
||||
headers: this.headers
|
||||
});
|
||||
|
@ -340,7 +337,7 @@ class Guild {
|
|||
full.show();
|
||||
}
|
||||
async delete() {
|
||||
return fetch(this.info.api + "/guilds/" + this.snowflake + "/delete", {
|
||||
return fetch(this.info.api + "/guilds/" + this.id + "/delete", {
|
||||
method: "POST",
|
||||
headers: this.headers,
|
||||
});
|
||||
|
@ -528,7 +525,7 @@ class Guild {
|
|||
});
|
||||
}
|
||||
async createRole(name) {
|
||||
const fetched = await fetch(this.info.api + "/guilds/" + this.snowflake + "roles", {
|
||||
const fetched = await fetch(this.info.api + "/guilds/" + this.id + "roles", {
|
||||
method: "POST",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({
|
||||
|
@ -547,7 +544,7 @@ class Guild {
|
|||
const role = this.roleids[id];
|
||||
role.permissions.allow = perms.allow;
|
||||
role.permissions.deny = perms.deny;
|
||||
await fetch(this.info.api + "/guilds/" + this.snowflake + "/roles/" + this.snowflake, {
|
||||
await fetch(this.info.api + "/guilds/" + this.id + "/roles/" + role.id, {
|
||||
method: "PATCH",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({
|
||||
|
|
|
@ -95,8 +95,7 @@ class Localuser {
|
|||
if (guild === undefined) {
|
||||
continue;
|
||||
}
|
||||
const guildid = guild.snowflake;
|
||||
this.guildids.get(guildid.id).channelids[thing.channel_id].readStateInfo(thing);
|
||||
guild.channelids[thing.channel_id].readStateInfo(thing);
|
||||
}
|
||||
for (const thing of ready.d.relationships) {
|
||||
const user = new User(thing.user, this);
|
||||
|
|
|
@ -6,7 +6,7 @@ import { Embed } from "./embed.js";
|
|||
import { File } from "./file.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
import { Emoji } from "./emoji.js";
|
||||
class Message {
|
||||
class Message extends SnowFlake {
|
||||
static contextmenu = new Contextmenu("message menu");
|
||||
owner;
|
||||
headers;
|
||||
|
@ -15,7 +15,6 @@ class Message {
|
|||
mentions;
|
||||
mention_roles;
|
||||
attachments; //probably should be its own class tbh, should be Attachments[]
|
||||
snowflake;
|
||||
message_reference;
|
||||
type;
|
||||
timestamp;
|
||||
|
@ -38,9 +37,6 @@ class Message {
|
|||
div;
|
||||
member;
|
||||
reactions;
|
||||
get id() {
|
||||
return this.snowflake.id;
|
||||
}
|
||||
static setup() {
|
||||
this.del = new Promise(_ => {
|
||||
this.resolve = _;
|
||||
|
@ -77,6 +73,7 @@ class Message {
|
|||
});
|
||||
}
|
||||
constructor(messagejson, owner) {
|
||||
super(messagejson.id);
|
||||
this.owner = owner;
|
||||
this.headers = this.owner.headers;
|
||||
this.giveData(messagejson);
|
||||
|
@ -117,7 +114,6 @@ class Message {
|
|||
continue;
|
||||
}
|
||||
else if (thing === "id") {
|
||||
this.snowflake = new SnowFlake(messagejson.id);
|
||||
continue;
|
||||
}
|
||||
else if (thing === "member") {
|
||||
|
@ -160,7 +156,7 @@ class Message {
|
|||
func();
|
||||
}
|
||||
canDelete() {
|
||||
return this.channel.hasPermission("MANAGE_MESSAGES") || this.author.snowflake === this.localuser.user.snowflake;
|
||||
return this.channel.hasPermission("MANAGE_MESSAGES") || this.author === this.localuser.user;
|
||||
}
|
||||
get channel() {
|
||||
return this.owner;
|
||||
|
@ -208,14 +204,14 @@ class Message {
|
|||
return build;
|
||||
}
|
||||
async edit(content) {
|
||||
return await fetch(this.info.api + "/channels/" + this.channel.snowflake + "/messages/" + this.id, {
|
||||
return await fetch(this.info.api + "/channels/" + this.channel.id + "/messages/" + this.id, {
|
||||
method: "PATCH",
|
||||
headers: this.headers,
|
||||
body: JSON.stringify({ content })
|
||||
});
|
||||
}
|
||||
delete() {
|
||||
fetch(`${this.info.api}/channels/${this.channel.snowflake}/messages/${this.id}`, {
|
||||
fetch(`${this.info.api}/channels/${this.channel.id}/messages/${this.id}`, {
|
||||
headers: this.headers,
|
||||
method: "DELETE",
|
||||
});
|
||||
|
@ -387,7 +383,7 @@ class Message {
|
|||
const newt = (new Date(this.timestamp).getTime()) / 1000;
|
||||
current = (newt - old) > 600;
|
||||
}
|
||||
const combine = (premessage?.author?.snowflake != this.author.snowflake) || (current) || this.message_reference;
|
||||
const combine = (premessage?.author != this.author) || (current) || this.message_reference;
|
||||
if (combine) {
|
||||
const pfp = this.author.buildpfp();
|
||||
this.author.bind(pfp, this.guild, false);
|
||||
|
@ -574,7 +570,7 @@ class Message {
|
|||
}
|
||||
buildhtml(premessage) {
|
||||
if (this.div) {
|
||||
console.error(`HTML for ${this.snowflake} already exists, aborting`);
|
||||
console.error(`HTML for ${this.id} already exists, aborting`);
|
||||
return this.div;
|
||||
}
|
||||
try {
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import { Permissions } from "./permissions.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
class Role {
|
||||
class Role extends SnowFlake {
|
||||
permissions;
|
||||
owner;
|
||||
color;
|
||||
snowflake;
|
||||
name;
|
||||
info;
|
||||
hoist;
|
||||
|
@ -12,15 +11,12 @@ class Role {
|
|||
mentionable;
|
||||
unicode_emoji;
|
||||
headers;
|
||||
get id() {
|
||||
return this.snowflake.id;
|
||||
}
|
||||
constructor(json, owner) {
|
||||
super(json.id);
|
||||
this.headers = owner.headers;
|
||||
this.info = owner.info;
|
||||
for (const thing of Object.keys(json)) {
|
||||
if (thing === "id") {
|
||||
this.snowflake = new SnowFlake(json.id);
|
||||
continue;
|
||||
}
|
||||
this[thing] = json[thing];
|
||||
|
|
|
@ -4,11 +4,14 @@ class SnowFlake {
|
|||
this.id = id;
|
||||
}
|
||||
getUnixTime() {
|
||||
return SnowFlake.stringToUnixTime(this.id);
|
||||
}
|
||||
static stringToUnixTime(str) {
|
||||
try {
|
||||
return Number((BigInt(this.id) >> 22n) + 1420070400000n);
|
||||
return Number((BigInt(str) >> 22n) + 1420070400000n);
|
||||
}
|
||||
catch {
|
||||
console.error(`The ID is corrupted, it's ${this.id} when it should be some number.`);
|
||||
console.error(`The ID is corrupted, it's ${str} when it should be some number.`);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,9 @@ import { Member } from "./member.js";
|
|||
import { MarkDown } from "./markdown.js";
|
||||
import { Contextmenu } from "./contextmenu.js";
|
||||
import { SnowFlake } from "./snowflake.js";
|
||||
class User {
|
||||
class User extends SnowFlake {
|
||||
owner;
|
||||
hypotheticalpfp;
|
||||
snowflake;
|
||||
avatar;
|
||||
username;
|
||||
nickname = null;
|
||||
|
@ -62,9 +61,6 @@ class User {
|
|||
return "offline";
|
||||
}
|
||||
}
|
||||
get id() {
|
||||
return this.snowflake.id;
|
||||
}
|
||||
static contextmenu = new Contextmenu("User Menu");
|
||||
static setUpContextMenu() {
|
||||
this.contextmenu.addbutton("Copy user id", function () {
|
||||
|
@ -141,6 +137,7 @@ class User {
|
|||
return this.owner;
|
||||
}
|
||||
constructor(userjson, owner, dontclone = false) {
|
||||
super(userjson.id);
|
||||
this.owner = owner;
|
||||
if (!owner) {
|
||||
console.error("missing localuser");
|
||||
|
@ -152,7 +149,6 @@ class User {
|
|||
continue;
|
||||
}
|
||||
if (thing === "id") {
|
||||
this.snowflake = new SnowFlake(userjson[thing]);
|
||||
continue;
|
||||
}
|
||||
this[thing] = userjson[thing];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue