betting typing of the WS

This commit is contained in:
MathMan05 2024-09-02 15:25:49 -05:00
parent 2b69d338c3
commit 59a5d9a30b
5 changed files with 118 additions and 20 deletions

View file

@ -305,15 +305,35 @@ class Localuser {
break; break;
case "MESSAGE_DELETE": case "MESSAGE_DELETE":
console.log(temp.d); console.log(temp.d);
SnowFlake.getSnowFlakeFromID(temp.d.id, Message).getObject().deleteEvent(); temp.d.guild_id ??= "@me";
const guild = this.guildids.get(temp.d.guild_id);
if (guild) {
const channel = guild.channelids[temp.d.guild_id];
if (channel) {
const message = channel.messages.get(temp.d.id);
if (message) {
message.deleteEvent();
}
}
}
break; break;
case "READY": case "READY":
this.gottenReady(temp); this.gottenReady(temp);
break; break;
case "MESSAGE_UPDATE": case "MESSAGE_UPDATE": {
const message = SnowFlake.getSnowFlakeFromID(temp.d.id, Message).getObject(); temp.d.guild_id ??= "@me";
const guild = this.guildids.get(temp.d.guild_id);
if (guild) {
const channel = guild.channelids[temp.d.guild_id];
if (channel) {
const message = channel.messages.get(temp.d.id);
if (message) {
message.giveData(temp.d); message.giveData(temp.d);
}
}
}
break; break;
}
case "TYPING_START": case "TYPING_START":
if (this.initialized) { if (this.initialized) {
this.typingStart(temp); this.typingStart(temp);

View file

@ -9,7 +9,7 @@
"removeComments": false, "removeComments": false,
"noImplicitThis":true, "noImplicitThis":true,
"useUnknownInCatchVariables":true, "useUnknownInCatchVariables":true,
"strictNullChecks":false "strictNullChecks":true
}, },
"include": [ "include": [
"./webpage/*.ts" "./webpage/*.ts"

View file

@ -10,7 +10,7 @@ import { Settings } from "./settings.js";
import { Role,RoleList } from "./role.js"; import { Role,RoleList } from "./role.js";
import {InfiniteScroller} from "./infiniteScroller.js"; import {InfiniteScroller} from "./infiniteScroller.js";
import { SnowFlake } from "./snowflake.js"; import { SnowFlake } from "./snowflake.js";
import { channeljson, messagejson, readyjson } from "./jsontypes.js"; import { channeljson, messageCreateJson, messagejson, readyjson } from "./jsontypes.js";
import { MarkDown } from "./markdown.js"; import { MarkDown } from "./markdown.js";
declare global { declare global {
@ -994,7 +994,7 @@ class Channel{
}); });
} }
} }
messageCreate(messagep:any):void{ messageCreate(messagep:messageCreateJson):void{
if(!this.hasPermission("VIEW_CHANNEL")){return} if(!this.hasPermission("VIEW_CHANNEL")){return}
const messagez=new Message(messagep.d,this); const messagez=new Message(messagep.d,this);
this.lastmessage=messagez; this.lastmessage=messagez;

View file

@ -1,6 +1,6 @@
type readyjson={ type readyjson={
op:number; op:0;
t:string; t:"READY";
s:number; s:number;
d:{ d:{
v:number; v:number;
@ -341,4 +341,59 @@ type presencejson={
afk: boolean, afk: boolean,
user?:userjson, user?:userjson,
} }
export {readyjson,dirrectjson,channeljson,guildjson,rolesjson,userjson,memberjson,mainuserjson,messagejson,filejson,embedjson,emojijson,presencejson}; type messageCreateJson={
op:0,
d:{
guild_id?:string,
channel_id?:string,
}&messagejson,
s:number,
t:"MESSAGE_CREATE"
}
type wsjson={
op:0,
d:any,
s:number,
t:"TYPING_START"|"USER_UPDATE"|"CHANNEL_UPDATE"|"CHANNEL_CREATE"|"CHANNEL_DELETE"|"GUILD_DELETE"|"GUILD_CREATE"|"MESSAGE_REACTION_ADD"|"MESSAGE_REACTION_REMOVE"|"MESSAGE_REACTION_REMOVE_ALL"|"MESSAGE_REACTION_REMOVE_EMOJI"
}|{
op:0,
t:"GUILD_MEMBERS_CHUNK",
d:memberChunk
}|{
op:0,
d:{
id:string,
guild_id?:string,
channel_id:string
},
s:number,
t:"MESSAGE_DELETE"
}|{
op:0,
d:{
guild_id?:string,
channel_id:string
}&messagejson,
s:number,
t:"MESSAGE_UPDATE"
}|messageCreateJson|readyjson|{
op:11,
s:undefined,
d:{}
}|{
op:10,
s:undefined,
d:{
heartbeat_interval:number
}
}
type memberChunk={
guild_id: string,
nonce: string,
members: memberjson[],
presences: presencejson[],
chunk_index: number,
chunk_count: number,
not_found: string[]
}
export {readyjson,dirrectjson,channeljson,guildjson,rolesjson,userjson,memberjson,mainuserjson,messagejson,filejson,embedjson,emojijson,presencejson,wsjson,messageCreateJson,memberChunk};

View file

@ -7,7 +7,7 @@ import {Dialog} from "./dialog.js";
import {getapiurls, getBulkInfo, setTheme, Specialuser} from "./login.js"; import {getapiurls, 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";
import { channeljson, memberjson, presencejson, readyjson } from "./jsontypes.js"; import { channeljson, memberChunk, memberjson, messageCreateJson, presencejson, readyjson, wsjson } from "./jsontypes.js";
import { Member } from "./member.js"; import { Member } from "./member.js";
import { FormError, Settings } from "./settings.js"; import { FormError, Settings } from "./settings.js";
import { MarkDown } from "./markdown.js"; import { MarkDown } from "./markdown.js";
@ -220,7 +220,7 @@ class Localuser{
if(temp.op===0&&temp.t==="READY"){ if(temp.op===0&&temp.t==="READY"){
returny(); returny();
} }
await this.handleEvent(temp); await this.handleEvent(temp as wsjson);
}catch(e){ }catch(e){
console.error(e); console.error(e);
}finally{ }finally{
@ -300,7 +300,7 @@ class Localuser{
await promise; await promise;
return; return;
} }
async handleEvent(temp){ async handleEvent(temp:wsjson){
console.debug(temp); console.debug(temp);
if (temp.s) this.lastSequence=temp.s; if (temp.s) this.lastSequence=temp.s;
if(temp.op==0){ if(temp.op==0){
@ -312,15 +312,38 @@ class Localuser{
break; break;
case "MESSAGE_DELETE": case "MESSAGE_DELETE":
console.log(temp.d); console.log(temp.d);
SnowFlake.getSnowFlakeFromID(temp.d.id,Message).getObject().deleteEvent(); temp.d.guild_id??="@me";
const guild=this.guildids.get(temp.d.guild_id);
if(guild){
const channel=guild.channelids[temp.d.guild_id]
if(channel){
const message=channel.messages.get(temp.d.id);
if(message){
message.deleteEvent();
}
}
}
break; break;
case "READY": case "READY":
this.gottenReady(temp as readyjson); this.gottenReady(temp as readyjson);
break; break;
case "MESSAGE_UPDATE": case "MESSAGE_UPDATE":{
const message=SnowFlake.getSnowFlakeFromID(temp.d.id,Message).getObject(); temp.d.guild_id??="@me";
const guild=this.guildids.get(temp.d.guild_id);
if(guild){
const channel=guild.channelids[temp.d.guild_id]
if(channel){
const message=channel.messages.get(temp.d.id);
if(message){
message.giveData(temp.d); message.giveData(temp.d);
}
}
}
break; break;
}
case "TYPING_START": case "TYPING_START":
if(this.initialized){ if(this.initialized){
this.typingStart(temp); this.typingStart(temp);
@ -400,7 +423,7 @@ class Localuser{
const messageReactionRemoveEmoji = SnowFlake.getSnowFlakeFromID(temp.d.message_id, Message).getObject() const messageReactionRemoveEmoji = SnowFlake.getSnowFlakeFromID(temp.d.message_id, Message).getObject()
messageReactionRemoveEmoji.reactionRemoveEmoji(temp.d.emoji) messageReactionRemoveEmoji.reactionRemoveEmoji(temp.d.emoji)
} }
break break;
case "GUILD_MEMBERS_CHUNK": case "GUILD_MEMBERS_CHUNK":
this.gotChunk(temp.d); this.gotChunk(temp.d);
break; break;
@ -702,7 +725,7 @@ class Localuser{
}) })
content.appendChild(guilds); content.appendChild(guilds);
} }
messageCreate(messagep):void{ messageCreate(messagep:messageCreateJson):void{
messagep.d.guild_id??="@me"; messagep.d.guild_id??="@me";
const guild=this.guildids.get(messagep.d.guild_id); const guild=this.guildids.get(messagep.d.guild_id);
if(!guild) return; if(!guild) return;
@ -1320,7 +1343,7 @@ class Localuser{
fetchingmembers:Map<string,boolean>=new Map(); fetchingmembers:Map<string,boolean>=new Map();
noncemap:Map<string,(r:[memberjson[],string[]])=>void>=new Map(); noncemap:Map<string,(r:[memberjson[],string[]])=>void>=new Map();
noncebuild:Map<string,[memberjson[],string[],number[]]>=new Map(); noncebuild:Map<string,[memberjson[],string[],number[]]>=new Map();
async gotChunk(chunk:{chunk_index:number,chunk_count:number,nonce:string,not_found?:string[],members?:memberjson[],presences:presencejson[]}){ async gotChunk(chunk:memberChunk){
for(const thing of chunk.presences){ for(const thing of chunk.presences){
if(thing.user){ if(thing.user){
this.presences.set(thing.user.id,thing); this.presences.set(thing.user.id,thing);