// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

import { exists } from 'libs/utils/exists'
import { View } from 'libs/mvc/view'
import { Logger } from 'libs/logs/logger'

var log = new Logger('views/error');

/*
 * View representing application error.
 * @param {Error|String} err Error to display
 * @class
 * @extends {View}
 */
export class ErrorView extends View {
	constructor(err) {
		var el = document.createElement('p2b-error');
		super(el);

		this.error = err;
	}

	set error(err) {
		if(!exists(err)) {
			return;
		}

		var errorMessage = err.toString();
		log.debug(errorMessage);
		if(exists(err.stack)) {
			log.debug(err.stack);
		}

		this.element.errorMessage = errorMessage;
	}

	get error() {
		return this.element.errorMessage;
	}
}
