log.ts 805 B

123456789101112131415161718192021222324
  1. /*
  2. * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * Adapted from LiteMol
  5. * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
  6. */
  7. import produce from 'immer'
  8. import { Controller } from '../controller'
  9. import { Context } from '../../context/context';
  10. import { LogEvent } from '../../event/basic';
  11. import { Logger } from '../../service/logger';
  12. export class LogController extends Controller<{ entries: Logger.Entry[] }> {
  13. constructor(context: Context) {
  14. super(context, { entries: [] });
  15. LogEvent.getStream(this.context)
  16. .subscribe(e => this.setState({
  17. entries: produce(this.latestState.entries, _entries => { _entries.push(e.data) })
  18. }))
  19. }
  20. }