wewechat-plus-plus/src/app.js
Riceneeder 58ce6cb67b wewechat++ init
仓库提交至星火社区作品集

Signed-off-by: Riceneeder <86492950+Riceneeder@users.noreply.github.com>
2022-09-01 20:38:13 +08:00

150 lines
4.2 KiB
JavaScript

import React, { Component } from 'react';
import { render } from 'react-dom';
import { Provider } from 'mobx-react';
import { HashRouter } from 'react-router-dom';
import { ipcRenderer } from 'electron';
import './global.css';
import './assets/fonts/icomoon/style.css';
import 'utils/albumcolors';
import getRoutes from './js/routes';
import stores from './js/stores';
class App extends Component {
async componentWillMount() {
if (window.navigator.onLine) {
await stores.session.hasLogin();
await stores.settings.init();
await stores.search.getHistory();
}
}
canisend() {
return this.refs.navigator.history.location.pathname === '/'
&& stores.chat.user;
}
componentDidMount() {
var navigator = this.refs.navigator;
// Hide the tray icon
ipcRenderer.on('hide-tray', () => {
stores.settings.setShowOnTray(false);
});
// Chat with user
ipcRenderer.on('message-chatto', (event, args) => {
var user = stores.contacts.memberList.find(e => e.UserName === args.id);
navigator.history.push('/');
setTimeout(stores.chat.chatTo(user));
});
// Show the user info
ipcRenderer.on('show-userinfo', (event, args) => {
var user = stores.contacts.memberList.find(e => e.UserName === args.id);
stores.userinfo.toggle(true, user);
});
// Shwo the settings page
ipcRenderer.on('show-settings', () => {
navigator.history.push('/settings');
});
// Show a modal to create a new conversation
ipcRenderer.on('show-newchat', () => {
navigator.history.push('/');
stores.newchat.toggle(true);
});
// Show the conversation pane
ipcRenderer.on('show-conversations', () => {
if (this.canisend()) {
stores.chat.toggleConversation();
}
});
// Search in currently conversation list
ipcRenderer.on('show-search', () => {
navigator.history.push('/');
stores.chat.toggleConversation(true);
setTimeout(() => document.querySelector('#search').focus());
});
// Show the home page
ipcRenderer.on('show-messages', () => {
navigator.history.push('/');
stores.chat.toggleConversation(true);
});
// Batch send message
ipcRenderer.on('show-batchsend', () => {
stores.batchsend.toggle(true);
});
// Insert the qq emoji
ipcRenderer.on('show-emoji', () => {
if (this.canisend()) {
document.querySelector('#showEmoji').click();
}
});
ipcRenderer.on('show-messageInput', () => {
if (this.canisend()) {
document.querySelector('#messageInput').focus();
}
});
// Show contacts page
ipcRenderer.on('show-contacts', () => {
navigator.history.push('/contacts');
});
// Go to next conversation
ipcRenderer.on('show-next', () => {
navigator.history.push('/');
stores.chat.toggleConversation(true);
setTimeout(stores.chat.chatToNext);
});
// Go to the previous conversation
ipcRenderer.on('show-previous', () => {
navigator.history.push('/');
stores.chat.toggleConversation(true);
setTimeout(stores.chat.chatToPrev);
});
// When the system resume reconnet to WeChat
ipcRenderer.on('os-resume', async() => {
var session = stores.session;
console.log('os-resume' + new Date());
setTimeout(() => {
session.checkTimeout(true);
}, 3000);
});
// Show the daemon error
ipcRenderer.on('show-errors', (event, args) => {
stores.snackbar.showMessage(args.message);
});
}
render() {
return (
<Provider {...stores}>
<HashRouter ref="navigator">
{getRoutes()}
</HashRouter>
</Provider>
);
}
}
render(
<App />,
document.getElementById('root')
);