├── assets ├── icon.icns ├── icon.ico ├── icon.png ├── 256x256.png ├── loading.gif ├── close_white.png ├── exit_black.png ├── exit_white.png ├── fullscreen.png ├── status_bar.png ├── tray_black.png ├── tray_icon.png ├── tray_white.png ├── status_bar@2x.png ├── fullscreen-exit.png ├── settings_black.png ├── settings_white.png ├── tray_exit_black.png ├── tray_exit_white.png ├── tray_unread_black.png ├── tray_unread_white.png ├── tray_settings_black.png ├── tray_settings_white.png └── vertical-align-botto.png ├── .gitignore ├── src ├── handlers │ ├── message.js │ ├── update.js │ └── menu.js ├── common.js ├── windows │ ├── views │ │ ├── splash.html │ │ └── settings.html │ ├── styles │ │ ├── splash.css │ │ └── settings.css │ └── controllers │ │ ├── splash.js │ │ ├── settings.js │ │ ├── app_tray.js │ │ └── wechat.js ├── configuration.js ├── inject │ ├── badge_count.js │ ├── emoji_parser.js │ ├── share_menu.js │ ├── mention_menu.js │ ├── css.js │ ├── chat_historys.js │ ├── preload.js │ └── mini_frame.js ├── common_cn.js ├── common_en.js ├── lib │ └── easyIDB.js └── main.js ├── config.json ├── scripts ├── build-win32.bat ├── build-all.sh ├── tar-all.sh ├── qiniu.sh └── build.sh ├── electronic-wechat.desktop ├── ISSUE_TEMPLATE.md ├── .eslintrc ├── CONTRIBUTING.md ├── CSSSAMPLE.md ├── README.md ├── LICENSE.md ├── .travis.yml ├── package.json ├── .github └── workflows │ └── build.yml ├── CHANGELOG.md └── README_en.md /assets/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/icon.icns -------------------------------------------------------------------------------- /assets/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/icon.ico -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/icon.png -------------------------------------------------------------------------------- /assets/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/256x256.png -------------------------------------------------------------------------------- /assets/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/loading.gif -------------------------------------------------------------------------------- /assets/close_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/close_white.png -------------------------------------------------------------------------------- /assets/exit_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/exit_black.png -------------------------------------------------------------------------------- /assets/exit_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/exit_white.png -------------------------------------------------------------------------------- /assets/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/fullscreen.png -------------------------------------------------------------------------------- /assets/status_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/status_bar.png -------------------------------------------------------------------------------- /assets/tray_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_black.png -------------------------------------------------------------------------------- /assets/tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_icon.png -------------------------------------------------------------------------------- /assets/tray_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_white.png -------------------------------------------------------------------------------- /assets/status_bar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/status_bar@2x.png -------------------------------------------------------------------------------- /assets/fullscreen-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/fullscreen-exit.png -------------------------------------------------------------------------------- /assets/settings_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/settings_black.png -------------------------------------------------------------------------------- /assets/settings_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/settings_white.png -------------------------------------------------------------------------------- /assets/tray_exit_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_exit_black.png -------------------------------------------------------------------------------- /assets/tray_exit_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_exit_white.png -------------------------------------------------------------------------------- /assets/tray_unread_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_unread_black.png -------------------------------------------------------------------------------- /assets/tray_unread_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_unread_white.png -------------------------------------------------------------------------------- /assets/tray_settings_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_settings_black.png -------------------------------------------------------------------------------- /assets/tray_settings_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/tray_settings_white.png -------------------------------------------------------------------------------- /assets/vertical-align-botto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Riceneeder/electronic-wechat/HEAD/assets/vertical-align-botto.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /dist 3 | npm-debug.log* 4 | .idea 5 | install 6 | # Dependency directories 7 | node_modules 8 | 9 | *.sublime-project 10 | *.sublime-workspace 11 | yarn* 12 | package-lock.json -------------------------------------------------------------------------------- /src/handlers/message.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const qs = require('querystring'); 4 | const url = require('url'); 5 | 6 | class MessageHandler { 7 | handleRedirectMessage(origin) { 8 | return qs.parse(url.parse(origin).query).requrl || origin; 9 | } 10 | } 11 | 12 | module.exports = MessageHandler; 13 | -------------------------------------------------------------------------------- /src/common.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AppConfig = require('./configuration'); 4 | 5 | const lan = AppConfig.readSettings('language'); 6 | 7 | let Common; 8 | if (lan === 'zh-CN') { 9 | Common = require('./common_cn'); 10 | } else { 11 | Common = require('./common_en'); 12 | } 13 | 14 | module.exports = Common; 15 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "osx" : { 3 | "title": "Electronic Wechat", 4 | "background": "icon.png", 5 | "icon": "icon.icns", 6 | "icon-size": 80, 7 | "contents": [ 8 | { "x": 438, "y": 344, "type": "link", "path": "/Applications" }, 9 | { "x": 192, "y": 344, "type": "file" } 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /scripts/build-win32.bat: -------------------------------------------------------------------------------- 1 | set PLATFORM=%1% 2 | set ARCH=%2% 3 | set APP_NAME="Electronic WeChat" 4 | 5 | set ignore_list="dist|scripts|\.idea|.*\.md|.*\.yml|node_modules/nodejieba" 6 | 7 | electron-packager . "%APP_NAME%" --platform=%PLATFORM% --arch=%ARCH% --asar --icon=assets\icon.png --overwrite --out=.\dist --ignore=%ignore_list% 8 | -------------------------------------------------------------------------------- /electronic-wechat.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Electronic Wechat 3 | Comment=Unofficial WeChat client built with React, MobX and Electron. 4 | Exec=/opt/electronic-wechat-linux-x64/electronic-wechat %U 5 | Terminal=false 6 | Type=Application 7 | Icon=/opt/electronic-wechat-linux-x64/assets/icon.png 8 | Categories=Network;Utility;Chat; 9 | -------------------------------------------------------------------------------- /scripts/build-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if ! hash electron-packager 2>/dev/null; then 4 | RED='\033[0;31m' 5 | NC='\033[0m' 6 | echo "${RED}Error${NC}: you need to npm install electron-packager. Aborting." 7 | exit 1 8 | fi 9 | 10 | function build() { 11 | ./scripts/build.sh $@ 12 | } 13 | 14 | build darwin x64 15 | build linux arm64 16 | build linux x64 17 | # build win32 x64 18 | -------------------------------------------------------------------------------- /src/windows/views/splash.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 |
13 | Starting App
14 |