Replace MessageController with MessageCache
This commit is contained in:
parent
ba1a8aad09
commit
7d35216fda
73 changed files with 2237 additions and 1229 deletions
55
ts/util/MessageModelLogger.ts
Normal file
55
ts/util/MessageModelLogger.ts
Normal file
|
@ -0,0 +1,55 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { MessageModel } from '../models/messages';
|
||||
import * as log from '../logging/log';
|
||||
import { getEnvironment, Environment } from '../environment';
|
||||
|
||||
export function getMessageModelLogger(model: MessageModel): MessageModel {
|
||||
const { id } = model;
|
||||
|
||||
if (getEnvironment() !== Environment.Development) {
|
||||
return model;
|
||||
}
|
||||
|
||||
const proxyHandler: ProxyHandler<MessageModel> = {
|
||||
get(target: MessageModel, property: keyof MessageModel) {
|
||||
// Allowed set of attributes & methods
|
||||
if (property === 'attributes') {
|
||||
return model.attributes;
|
||||
}
|
||||
|
||||
if (property === 'id') {
|
||||
return id;
|
||||
}
|
||||
|
||||
if (property === 'get') {
|
||||
return model.get.bind(model);
|
||||
}
|
||||
|
||||
if (property === 'set') {
|
||||
return model.set.bind(model);
|
||||
}
|
||||
|
||||
if (property === 'registerLocations') {
|
||||
return target.registerLocations;
|
||||
}
|
||||
|
||||
// Disallowed set of methods & attributes
|
||||
|
||||
log.warn(`MessageModelLogger: model.${property}`, new Error().stack);
|
||||
|
||||
if (typeof target[property] === 'function') {
|
||||
return target[property].bind(target);
|
||||
}
|
||||
|
||||
if (typeof target[property] !== 'undefined') {
|
||||
return target[property];
|
||||
}
|
||||
|
||||
return undefined;
|
||||
},
|
||||
};
|
||||
|
||||
return new Proxy(model, proxyHandler);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue