unverify both on disconnect, neither on connect.
This commit is contained in:
parent
6e95ec4cec
commit
72c34f7e63
@ -27,7 +27,7 @@ export class AutoVerifierWithArg<T, K> {
|
||||
private primaryFunc: (query: K) => Promise<T | null>,
|
||||
private trustedFunc: (query: K) => Promise<T | null>,
|
||||
private verifyFunc: (query: K, primaryResult: T | null, trustedResult: T | null) => Promise<boolean>,
|
||||
private name: string | null = null, // for debugging purposes
|
||||
private name: string | null = null, // for debugging purposes
|
||||
) {}
|
||||
|
||||
static createStandardPartialMessageListAutoVerifier<T extends WithEquals<T> & { id: string }>(
|
||||
@ -38,7 +38,7 @@ export class AutoVerifierWithArg<T, K> {
|
||||
changesType: AutoVerifierChangesType,
|
||||
changes: Changes<T>,
|
||||
) => Promise<boolean>,
|
||||
name: string | null = null,
|
||||
name: string | null = null,
|
||||
) {
|
||||
return new AutoVerifierWithArg<T[], PartialMessageListQuery>(
|
||||
query => `ch#${query.channelId} mo#${query.messageOrderId}->${query.number}`,
|
||||
@ -46,20 +46,20 @@ export class AutoVerifierWithArg<T, K> {
|
||||
query => trustedFunc(query),
|
||||
async (query: PartialMessageListQuery, primaryResult: T[] | null, trustedResult: T[] | null) => {
|
||||
// lOG.debug('messages verify: ', {
|
||||
// query,
|
||||
// // primaryResult: primaryResult?.map((e: any) => e.sent).sort(),
|
||||
// // trustedResult: trustedResult?.map((e: any) => e.sent).sort(),
|
||||
// zipped: primaryResult && trustedResult && primaryResult.length === trustedResult.length && Q.zip(
|
||||
// primaryResult?.sort((a: any, b: any) => a.sent.getTime() - b.sent.getTime()).map((e: any) => e.text),
|
||||
// trustedResult?.sort((a: any, b: any) => a.sent.getTime() - b.sent.getTime()).map((e: any) => e.text)
|
||||
// )
|
||||
// query,
|
||||
// // primaryResult: primaryResult?.map((e: any) => e.sent).sort(),
|
||||
// // trustedResult: trustedResult?.map((e: any) => e.sent).sort(),
|
||||
// zipped: primaryResult && trustedResult && primaryResult.length === trustedResult.length && Q.zip(
|
||||
// primaryResult?.sort((a: any, b: any) => a.sent.getTime() - b.sent.getTime()).map((e: any) => e.text),
|
||||
// trustedResult?.sort((a: any, b: any) => a.sent.getTime() - b.sent.getTime()).map((e: any) => e.text)
|
||||
// )
|
||||
// });
|
||||
const changes = AutoVerifier.getChanges<T>(primaryResult, trustedResult);
|
||||
//lOG.debug('changes:', { changes });
|
||||
const changesType = AutoVerifier.getListChangesType<T>(primaryResult, trustedResult, changes);
|
||||
return await changesFunc(query, changesType, changes);
|
||||
},
|
||||
name,
|
||||
name,
|
||||
);
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ export class AutoVerifierWithArg<T, K> {
|
||||
primaryResult: T | null,
|
||||
trustedResult: T | null,
|
||||
) => Promise<boolean>,
|
||||
name: string | null = null,
|
||||
name: string | null = null,
|
||||
) {
|
||||
return new AutoVerifierWithArg<T, IDQuery>(
|
||||
query => `id#${query.id}`,
|
||||
@ -82,7 +82,7 @@ export class AutoVerifierWithArg<T, K> {
|
||||
const changesType = AutoVerifier.getSingleChangesType<T>(primaryResult, trustedResult);
|
||||
return await changesFunc(query, changesType, primaryResult, trustedResult);
|
||||
},
|
||||
name,
|
||||
name,
|
||||
);
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ export class AutoVerifierWithArg<T, K> {
|
||||
async () => await this.trustedFunc(query),
|
||||
async (primaryResult: T | null, trustedResult: T | null) =>
|
||||
await this.verifyFunc(query, primaryResult, trustedResult),
|
||||
`${this.name}::${token.slice(0, 8)}`
|
||||
`${this.name}::${token.slice(0, 8)}`
|
||||
);
|
||||
this.tokenAutoVerifiers.set(token, autoVerifier);
|
||||
}
|
||||
|
@ -158,7 +158,6 @@ export class AutoVerifier<T> {
|
||||
|
||||
// you CAN safely call this while another fetch is going on! How convenient
|
||||
unverify(): void {
|
||||
// lOG.debug(`v#${this.verifierId}: unverifying`);
|
||||
if (this.primaryPromise) {
|
||||
this.primaryPromise.catch(e => {
|
||||
console.warn('caught unverified primary promise', e);
|
||||
|
@ -198,14 +198,14 @@ export class Message implements WithEquals<Message> {
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
const channel = this.channel instanceof Channel ? this.channel.name : `ch#${this.channel.id}`;
|
||||
const member = this.member instanceof Member ? this.member.displayName : `m#${this.member.id}`;
|
||||
const channel = this.channel instanceof Channel ? this.channel.name : `ch#${this.channel.id.slice(0, 4)}`;
|
||||
const member = this.member instanceof Member ? this.member.displayName : `m#${this.member.id.slice(0, 4)}`;
|
||||
if (this.resourceName) {
|
||||
return `msg#${this.id} ${channel} @${formatDate(this.sent)} ${member}: ${
|
||||
return `msg#${this.id.slice(0, 4)} ${channel} @${formatDate(this.sent)} ${member}: ${
|
||||
this.text ? this.text + ' / ' : ''
|
||||
}${this.resourceName}`;
|
||||
} else {
|
||||
return `msg#${this.id} ${channel} @${formatDate(this.sent)} ${member}: ${this.text}`;
|
||||
return `msg#${this.id.slice(0, 4)} ${channel} @${formatDate(this.sent)} ${member}: ${this.text}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,11 +67,11 @@ export default class CombinedGuild
|
||||
// connect/Disconnect
|
||||
this.socketGuild.on('connect', () => {
|
||||
LOG.info(`g#${this.id} connected`);
|
||||
ramDiskSocket.unverify(); // make sure to query the disk-socket AutoVerifier again
|
||||
this.emit('connect');
|
||||
});
|
||||
this.socketGuild.on('disconnect', async () => {
|
||||
LOG.info(`g#${this.id} disconnected`);
|
||||
ramDiskSocket.unverify();
|
||||
diskSocket.unverify();
|
||||
await personalDB.clearAllMembersStatus(this.id);
|
||||
this.emit('disconnect');
|
||||
|
@ -558,7 +558,7 @@ function bindActionEvents(io: socketio.Server, client: socketio.Socket, identity
|
||||
const message = await DB.insertMessage(identity.guildId, channelId, identity.memberId, text);
|
||||
|
||||
LOG.info(
|
||||
`m#${message.id} ch#${message.channel_id} s@${formatDate(message.sent_dtg)} u#${message.member_id}: ${
|
||||
`g#${identity.guildId.slice(0, 4)} m#${message.id.slice(0, 4)} ch#${message.channel_id.slice(0, 4)} s@${formatDate(message.sent_dtg)} u#${message.member_id.slice(0, 4)}: ${
|
||||
message.text
|
||||
}`,
|
||||
);
|
||||
@ -596,7 +596,7 @@ function bindActionEvents(io: socketio.Server, client: socketio.Socket, identity
|
||||
resourceName = resourceName.replace(/[^A-Za-z0-9 .]/g, '_'); // only alphanumerics for file names
|
||||
|
||||
LOG.info(
|
||||
`u#${identity.memberId?.slice(0, 4)}: resource message with resource of size: ${resource.length} bytes`,
|
||||
`u#${identity.memberId.slice(0, 4)}: resource message with resource of size: ${resource.length} bytes`,
|
||||
);
|
||||
|
||||
// try to get the dimensions of the resource if it is an image so that we can scale it down for the preview
|
||||
|
Loading…
Reference in New Issue
Block a user