/// import { App } from "../app"; import { _ } from "../languagemanager"; import { PlayerMessage } from "../table/playerMessage"; import { SystemMessage } from "../table/SystemMessage"; import { TableView } from "../table/tableview"; import * as timeService from "../timeservice"; import { ChatControl } from "../ui/chatcontrol"; declare var apiHost: string; declare var app: App; export class ChatPopup { public control: ChatControl; public caption: KnockoutObservable; public currentMessage: KnockoutObservable; public loading: KnockoutObservable; public messages: KnockoutObservableArray; public systemMessages: KnockoutObservableArray; private tableView: TableView; private subscription: KnockoutSubscription = null; constructor() { this.control = new ChatControl(); this.currentMessage = ko.observable(""); this.loading = ko.observable(false); this.caption = ko.observable(_("chat.tableCaption")); this.control.initialize(); this.messages = ko.observableArray([]); this.systemMessages = ko.observableArray([]); } public attach(view: TableView) { if (this.subscription !== null) { this.subscription.dispose(); this.subscription = null; } this.tableView = view; this.messages(this.tableView.messages()); this.subscription = this.tableView.messages.subscribe((value) => { this.messages(value); }); this.systemMessages(this.tableView.systemMessages()); this.subscription = this.tableView.systemMessages.subscribe((value) => { this.systemMessages(value); }); } /** * Handles pressing Send button on the chat popup. */ public async send() { if (this.currentMessage() === "") { return; } this.tableView.chatMessage(this.currentMessage()); this.currentMessage(""); await this.tableView.sendMessage(); } public close() { if (this.subscription !== null) { this.subscription.dispose(); this.subscription = null; } app.closePopup(); /* Workaround for iOS 7.1 issue which break layout. */ timeService.setTimeout(function () { $(window).scrollLeft(0); }, 10); } public shown(): void { this.control.attachToHub(); } }