2020-02-06 22:43:07 +07:00
|
|
|
//import { appImManager, appMessagesManager, appDialogsManager, apiUpdatesManager, appUsersManager } from "../lib/services";
|
2020-02-11 22:35:57 +07:00
|
|
|
import { openBtnMenu } from "./misc";
|
2020-02-06 22:43:07 +07:00
|
|
|
|
|
|
|
import {stackBlurImage} from '../lib/StackBlur';
|
|
|
|
|
2020-02-08 18:58:22 +07:00
|
|
|
import appSidebarLeft from "../lib/appManagers/appSidebarLeft";
|
2020-02-06 22:43:07 +07:00
|
|
|
|
|
|
|
export default () => import('../lib/services').then(services => {
|
2020-02-17 19:18:06 +07:00
|
|
|
//console.log('included services', services);
|
2020-02-06 22:43:07 +07:00
|
|
|
|
|
|
|
let {appImManager, appMessagesManager, appDialogsManager, apiUpdatesManager, appUsersManager} = services;
|
|
|
|
//export default () => {
|
|
|
|
|
|
|
|
let pageEl = document.body.getElementsByClassName('page-chats')[0] as HTMLDivElement;
|
|
|
|
pageEl.style.display = '';
|
|
|
|
|
|
|
|
apiUpdatesManager.attach();
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
document.addEventListener('user_update', (e: CustomEvent) => {
|
|
|
|
let userID = e.detail;
|
|
|
|
|
|
|
|
let user = appUsersManager.getUser(userID);
|
|
|
|
|
|
|
|
let dialog = appMessagesManager.getDialogByPeerID(user.id)[0];
|
|
|
|
//console.log('updating user:', user, dialog);
|
|
|
|
|
|
|
|
if(dialog && !appUsersManager.isBot(dialog.peerID) && dialog.peerID != appImManager.myID) {
|
|
|
|
let online = user.status._ == 'userStatusOnline';
|
|
|
|
let dom = appDialogsManager.getDialogDom(dialog.peerID);
|
|
|
|
|
|
|
|
if(dom) {
|
|
|
|
if(online) {
|
|
|
|
dom.avatarDiv.classList.add('is-online');
|
|
|
|
} else {
|
|
|
|
dom.avatarDiv.classList.remove('is-online');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(appImManager.peerID == user.id) {
|
|
|
|
appImManager.setPeerStatus();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
document.addEventListener('dialog_top', (e: CustomEvent) => {
|
|
|
|
let dialog: any = e.detail;
|
|
|
|
|
|
|
|
appDialogsManager.setLastMessage(dialog);
|
|
|
|
appDialogsManager.sortDom();
|
|
|
|
});
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
document.addEventListener('dialogs_multiupdate', (e: CustomEvent) => {
|
|
|
|
let dialogs = e.detail;
|
|
|
|
|
2020-02-09 16:22:15 +07:00
|
|
|
let performed = 0;
|
2020-02-06 22:43:07 +07:00
|
|
|
for(let id in dialogs) {
|
|
|
|
let dialog = dialogs[id];
|
|
|
|
|
2020-02-17 19:18:06 +07:00
|
|
|
/////console.log('updating dialog:', dialog);
|
2020-02-06 22:43:07 +07:00
|
|
|
|
2020-02-13 18:59:55 +07:00
|
|
|
++performed;
|
|
|
|
|
2020-02-06 22:43:07 +07:00
|
|
|
if(!(dialog.peerID in appDialogsManager.doms)) {
|
|
|
|
appDialogsManager.addDialog(dialog);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
appDialogsManager.setLastMessage(dialog);
|
|
|
|
}
|
|
|
|
|
2020-02-09 16:22:15 +07:00
|
|
|
if(performed) {
|
2020-02-17 19:18:06 +07:00
|
|
|
/////////console.log('will sortDom');
|
2020-02-09 16:22:15 +07:00
|
|
|
appDialogsManager.sortDom();
|
2020-02-13 18:59:55 +07:00
|
|
|
appDialogsManager.sortDom(true);
|
2020-02-09 16:22:15 +07:00
|
|
|
}
|
2020-02-06 22:43:07 +07:00
|
|
|
});
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
document.addEventListener('dialog_unread', (e: CustomEvent) => {
|
|
|
|
let info: {
|
|
|
|
peerID: number,
|
|
|
|
count: number
|
|
|
|
} = e.detail;
|
|
|
|
|
|
|
|
let dialog = appMessagesManager.getDialogByPeerID(info.peerID)[0];
|
|
|
|
if(dialog) {
|
|
|
|
appDialogsManager.setUnreadMessages(dialog);
|
|
|
|
|
|
|
|
if(dialog.peerID == appImManager.peerID) {
|
|
|
|
appImManager.updateUnreadByDialog(dialog);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
/*
|
|
|
|
loadDialogs().then(result => {
|
|
|
|
//appImManager.setScroll(chatScroll);
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/* function placeCaretAfterNode(node: HTMLElement) {
|
|
|
|
if (typeof window.getSelection != "undefined") {
|
|
|
|
var range = document.createRange();
|
|
|
|
range.setStartAfter(node);
|
|
|
|
range.collapse(true);
|
|
|
|
var selection = window.getSelection();
|
|
|
|
selection.removeAllRanges();
|
|
|
|
selection.addRange(range);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
messageInput.onclick = (e) => {
|
|
|
|
let target = e.target as HTMLElement;
|
|
|
|
if(target.classList.contains('emoji-inner')) {
|
|
|
|
placeCaretAfterNode(target.parentElement);
|
|
|
|
} else if(target.classList.contains('emoji-sizer')) {
|
|
|
|
placeCaretAfterNode(target);
|
|
|
|
}
|
|
|
|
console.log('lol', target);
|
|
|
|
}; */
|
|
|
|
|
|
|
|
/* window.addEventListener('click', function(this, e) {
|
|
|
|
// @ts-ignore
|
|
|
|
let isInput = e.target.tagName == 'INPUT';
|
|
|
|
if(!isInput && !window.getSelection().toString()) {
|
|
|
|
console.log('click');
|
|
|
|
messageInput.focus();
|
|
|
|
}
|
|
|
|
}); */
|
|
|
|
|
|
|
|
fetch('assets/img/camomile.jpg')
|
|
|
|
.then(res => res.blob())
|
|
|
|
.then(blob => {
|
|
|
|
let img = new Image();
|
|
|
|
let url = URL.createObjectURL(blob);
|
|
|
|
img.src = url;
|
|
|
|
img.onload = () => {
|
|
|
|
let id = 'chat-background-canvas';
|
|
|
|
var canvas = document.getElementById(id) as HTMLCanvasElement;
|
|
|
|
URL.revokeObjectURL(url);
|
|
|
|
|
|
|
|
stackBlurImage(img, id, 15, 0);
|
|
|
|
|
|
|
|
canvas.toBlob(blob => {
|
|
|
|
//let dataUrl = canvas.toDataURL('image/jpeg', 1);
|
|
|
|
let dataUrl = URL.createObjectURL(blob);
|
|
|
|
|
|
|
|
[/* '.chat-background', '#chat-closed' */'.chat-container'].forEach(selector => {
|
|
|
|
let bg = document.querySelector(selector) as HTMLDivElement;
|
|
|
|
bg.style.backgroundImage = 'url(' + dataUrl + ')';
|
|
|
|
});
|
|
|
|
}, 'image/jpeg', 1);
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
/* toggleEmoticons.onclick = (e) => {
|
|
|
|
if(!emoticonsDropdown) {
|
|
|
|
emoticonsDropdown = initEmoticonsDropdown(pageEl, appImManager,
|
|
|
|
appMessagesManager, messageInput, toggleEmoticons);
|
|
|
|
} else {
|
|
|
|
emoticonsDropdown.classList.toggle('active');
|
|
|
|
}
|
|
|
|
|
|
|
|
toggleEmoticons.classList.toggle('active');
|
|
|
|
}; */
|
|
|
|
|
2020-02-08 13:03:09 +07:00
|
|
|
Array.from(document.getElementsByClassName('btn-menu-toggle')).forEach((el) => {
|
|
|
|
el.addEventListener('click', (e) => {
|
2020-02-20 15:13:15 +07:00
|
|
|
//console.log('click pageIm');
|
2020-02-09 17:30:24 +07:00
|
|
|
if(!el.classList.contains('btn-menu-toggle')) return false;
|
|
|
|
|
2020-02-09 22:18:04 +07:00
|
|
|
//window.removeEventListener('mousemove', onMouseMove);
|
|
|
|
let openedMenu = el.querySelector('.btn-menu') as HTMLDivElement;
|
2020-02-08 13:03:09 +07:00
|
|
|
e.cancelBubble = true;
|
|
|
|
|
|
|
|
if(el.classList.contains('menu-open')) {
|
|
|
|
el.classList.remove('menu-open');
|
|
|
|
openedMenu.classList.remove('active');
|
|
|
|
} else {
|
2020-02-09 22:18:04 +07:00
|
|
|
openBtnMenu(openedMenu);
|
2020-02-08 13:03:09 +07:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2020-02-08 18:58:22 +07:00
|
|
|
appSidebarLeft.loadDialogs().then(result => {
|
|
|
|
appSidebarLeft.onChatsScroll();
|
2020-02-12 20:48:30 +07:00
|
|
|
appSidebarLeft.loadDialogs(true);
|
2020-02-06 22:43:07 +07:00
|
|
|
});
|
|
|
|
});
|