PluginExtensions: Persisting log messages accross the browser session (#95836)
* making sure to keep the messages across a session. * moved values into consts.
This commit is contained in:
@@ -16,16 +16,22 @@ export type ExtensionsLogItem = {
|
||||
};
|
||||
|
||||
const channelName = 'ui-extension-logs';
|
||||
const logsNumberLimit = 1000;
|
||||
const logsRetentionTime = 1000 * 60 * 10;
|
||||
|
||||
export class ExtensionsLog {
|
||||
private baseLabels: Labels | undefined;
|
||||
private subject: ReplaySubject<ExtensionsLogItem> | undefined;
|
||||
private subject: ReplaySubject<ExtensionsLogItem>;
|
||||
private channel: BroadcastChannel;
|
||||
|
||||
constructor(baseLabels?: Labels, subject?: ReplaySubject<ExtensionsLogItem>, channel?: BroadcastChannel) {
|
||||
this.baseLabels = baseLabels;
|
||||
this.channel = channel ?? new BroadcastChannel(channelName);
|
||||
this.subject = subject;
|
||||
this.subject = subject ?? new ReplaySubject<ExtensionsLogItem>(logsNumberLimit, logsRetentionTime);
|
||||
|
||||
if (!channel) {
|
||||
this.channel.onmessage = (msg: MessageEvent<ExtensionsLogItem>) => this.subject.next(msg.data);
|
||||
}
|
||||
}
|
||||
|
||||
info(message: string, labels?: Labels): void {
|
||||
@@ -68,17 +74,13 @@ export class ExtensionsLog {
|
||||
extensionPointId: isString(extensionPointId) ? extensionPointId : undefined,
|
||||
};
|
||||
|
||||
// We only receive messages from different contexts so adding the ones
|
||||
// pushed by this log to the local subject.
|
||||
this.subject.next(item);
|
||||
this.channel.postMessage(item);
|
||||
}
|
||||
|
||||
asObservable(): Observable<ExtensionsLogItem> {
|
||||
if (!this.subject) {
|
||||
// Lazily create the subject on first subscription to prevent
|
||||
// to create buffers when no subscribers exists
|
||||
this.subject = new ReplaySubject<ExtensionsLogItem>(1000, 1000 * 60 * 10);
|
||||
this.channel.onmessage = (msg: MessageEvent<ExtensionsLogItem>) => this.subject?.next(msg.data);
|
||||
}
|
||||
|
||||
return this.subject.asObservable();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user