|
|
@ -1,15 +1,15 @@ |
|
|
|
import { Observer } from "../observe/Observer"; |
|
|
|
import { ActiveUserViewModel } from "../viewmodel/ActiveUserViewModel"; |
|
|
|
import { ChatModel } from "../model/ChatModel"; |
|
|
|
import log = require("loglevel"); |
|
|
|
import * as DOMPurify from "dompurify"; |
|
|
|
import DOMPurify from "dompurify"; |
|
|
|
import { NotificationService } from "../../common/service/NotificationService"; |
|
|
|
import { SearchService } from "../../common/service/SearchService"; |
|
|
|
import { ChatModel } from "../model/ChatModel"; |
|
|
|
import { UserModel } from "../model/UserModel"; |
|
|
|
import { UserViewDeps } from "./UserViewDeps"; |
|
|
|
import { Observer } from "../observe/Observer"; |
|
|
|
import { ObserverData } from "../observe/ObserverData"; |
|
|
|
import { JsonAPI } from "../singleton/JsonAPI"; |
|
|
|
import { NotificationService } from "../../common/service/NotificationService"; |
|
|
|
import { ActiveUserViewModel } from "../viewmodel/ActiveUserViewModel"; |
|
|
|
import { ChatMessageViewModel } from "../viewmodel/ChatMessageViewModel"; |
|
|
|
import { UserViewDeps } from "./UserViewDeps"; |
|
|
|
import log from "loglevel"; |
|
|
|
|
|
|
|
export class UserView implements Observer<ActiveUserViewModel> { |
|
|
|
private readonly _model: UserModel; |
|
|
@ -89,58 +89,63 @@ export class UserView implements Observer<ActiveUserViewModel> { |
|
|
|
JsonAPI.contactName = userName; |
|
|
|
// @ts-ignore: Object is possibly 'null'.
|
|
|
|
document.getElementById("user-name-span").innerText = userName; |
|
|
|
let currentUser = this._model.activeUsersList.find((vm) => vm.userName === userName) || new ActiveUserViewModel(); |
|
|
|
let currentUser = |
|
|
|
this._model.activeUsersList.find((vm) => vm.userName === userName) || |
|
|
|
new ActiveUserViewModel(); |
|
|
|
currentUser.userName = userName; |
|
|
|
|
|
|
|
if (!currentUser?.passphrase) { |
|
|
|
this._notificationService.passphrasePrompt( |
|
|
|
async (result) => { |
|
|
|
if (result) { |
|
|
|
|
|
|
|
const valid = await this._chatModel.isPassphraseValid(result, currentUser.userName!); |
|
|
|
if (!valid) { |
|
|
|
bootbox.alert("Some error occured. Please check your password"); |
|
|
|
log.error("invalid password"); |
|
|
|
return; |
|
|
|
} |
|
|
|
currentUser.unlocked = true; |
|
|
|
currentUser.passphrase = result; |
|
|
|
const chatMessages: ChatMessageViewModel[] = await this._chatModel.getMessages(currentUser, "new"); |
|
|
|
|
|
|
|
this._model.activeUsersList |
|
|
|
.filter((v) => v.userName == currentUser!.userName) |
|
|
|
.forEach((v) => { |
|
|
|
v.passphrase = result; |
|
|
|
v.unlocked = true; |
|
|
|
if (chatMessages.length > 0) { |
|
|
|
v.lastMessageTime = new Date( |
|
|
|
chatMessages[chatMessages.length - 1].messageTime |
|
|
|
); |
|
|
|
const lastMessageText = (v.lastMessageText = |
|
|
|
chatMessages[chatMessages.length - 1].message); |
|
|
|
if (lastMessageText.length > 15) { |
|
|
|
v.lastMessageText = |
|
|
|
chatMessages[chatMessages.length - 1].message.slice( |
|
|
|
0, |
|
|
|
15 |
|
|
|
) + "..."; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
this._promptHandler(currentUser); |
|
|
|
|
|
|
|
this._notificationService.passphrasePrompt(async (result) => { |
|
|
|
if (result) { |
|
|
|
const valid = await this._chatModel.isPassphraseValid( |
|
|
|
result, |
|
|
|
currentUser.userName! |
|
|
|
); |
|
|
|
if (!valid) { |
|
|
|
bootbox.alert("Some error occured. Please check your password"); |
|
|
|
log.error("invalid password"); |
|
|
|
return; |
|
|
|
} |
|
|
|
currentUser.unlocked = true; |
|
|
|
currentUser.passphrase = result; |
|
|
|
const chatMessages: ChatMessageViewModel[] = await this._chatModel.getMessages( |
|
|
|
currentUser, |
|
|
|
"new" |
|
|
|
); |
|
|
|
|
|
|
|
this._model.activeUsersList |
|
|
|
.filter((v) => v.userName == currentUser!.userName) |
|
|
|
.forEach((v) => { |
|
|
|
v.passphrase = result; |
|
|
|
v.unlocked = true; |
|
|
|
if (chatMessages.length > 0) { |
|
|
|
v.lastMessageTime = new Date( |
|
|
|
chatMessages[chatMessages.length - 1].messageTime |
|
|
|
); |
|
|
|
const lastMessageText = (v.lastMessageText = |
|
|
|
chatMessages[chatMessages.length - 1].message); |
|
|
|
if (lastMessageText.length > 15) { |
|
|
|
v.lastMessageText = |
|
|
|
chatMessages[chatMessages.length - 1].message.slice(0, 15) + |
|
|
|
"..."; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
this._promptHandler(currentUser); |
|
|
|
} |
|
|
|
); |
|
|
|
} |
|
|
|
else { |
|
|
|
}); |
|
|
|
} else { |
|
|
|
this._chatModel.getMessages(currentUser, "new"); |
|
|
|
} |
|
|
|
|
|
|
|
el.className += " active"; |
|
|
|
if (currentUser.unlocked && currentUser.lastMessageTime) { |
|
|
|
this._newMessagesLoop = setInterval( |
|
|
|
this._chatModel.getMessages.bind(this._chatModel, currentUser, "update"), |
|
|
|
this._chatModel.getMessages.bind( |
|
|
|
this._chatModel, |
|
|
|
currentUser, |
|
|
|
"update" |
|
|
|
), |
|
|
|
10_000 |
|
|
|
); |
|
|
|
this._model.notify(); |
|
|
@ -177,9 +182,8 @@ export class UserView implements Observer<ActiveUserViewModel> { |
|
|
|
let searchResult = this._searchService.search(list, searchTerm); |
|
|
|
this.update({ data: searchResult, op: "" }); |
|
|
|
log.debug(searchResult); |
|
|
|
} |
|
|
|
else { |
|
|
|
this._notificationService.error("Please enter a name") |
|
|
|
} else { |
|
|
|
this._notificationService.error("Please enter a name"); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|