/* global Whisper */ // eslint-disable-next-line func-names (function() { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.SessionToastView = Whisper.View.extend({ initialize(options) { this.props = { title: options.title, id: options.id, description: options.description, icon: options.icon, fadeToast: this.fadeToast.bind(this), closeToast: this.closeToast.bind(this), }; }, render() { this.toastView = new Whisper.ReactWrapperView({ className: 'session-toast-wrapper', Component: window.Signal.Components.SessionToast, props: this.props, }); this.$el.append(this.toastView.el); }, update(options) { this.props.title = options.title; this.props.id = options.id; this.props.description = options.description || ''; this.props.type = options.type || ''; this.props.icon = options.icon || ''; this.props.shouldFade = options.shouldFade !== false; this.toastView.update(this.props); this.showToast(); if (this.timer) { clearTimeout(this.timer); } if (this.props.shouldFade) { this.timer = setTimeout(this.fadeToast.bind(this), 4000); } }, showToast() { this.toastView.$el.show(); }, fadeToast() { this.removeToast(); this.toastView.$el.fadeOut(500, () => { this.toastView.remove(); }); }, closeToast() { this.removeToast(); this.toastView.$el.fadeOut(125, () => { this.toastView.remove(); }); }, removeToast() { if (this.props.id) { window.toasts.delete(this.props.id); } }, }); })();