Skip to content
Snippets Groups Projects
log.ts 805 B
Newer Older
Alexander Rose's avatar
Alexander Rose committed
/*
 * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * Adapted from LiteMol
 * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
 */

import produce from 'immer'
Alexander Rose's avatar
Alexander Rose committed

import { Controller } from '../controller'
import { Context } from '../../context/context';
import { LogEvent } from '../../event/basic';
import { Logger } from '../../service/logger';

export class LogController extends Controller<{ entries: Logger.Entry[] }> {
Alexander Rose's avatar
Alexander Rose committed
    constructor(context: Context) {
        super(context, { entries: [] });
Alexander Rose's avatar
Alexander Rose committed

        LogEvent.getStream(this.context)
            .subscribe(e => this.setState({
                entries: produce(this.latestState.entries, _entries => { _entries.push(e.data) })
            }))