diff --git a/README.md b/README.md
index 8bb1cc46..e282f11c 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@
Available for Windows, Mac and Linux.
-
+
@@ -114,6 +114,7 @@
+
@@ -124,9 +125,8 @@
-
-
+
@@ -179,7 +179,8 @@ If you're comfortable getting up and running from a `git clone`, this method is
#### Environment:
-* Sencha Cmd 6.1.2.15
+* Sencha Cmd 6.1.2.15 (make sure to check "Compass extension" during install if you don't have installed yet)
+* Ruby 2.3
* NPM 3.8.7
* Node.js 4.0.0
@@ -191,7 +192,20 @@ If you're comfortable getting up and running from a `git clone`, this method is
4. `npm run sencha:compile`
5. `npm start`
-----------
+#### Compile on Ubuntu:
+
+These instructions were tested with Ubuntu 17.04.
+1. Install dependencies: `sudo apt install nodejs-legacy npm git`
+2. Build and install electron: `sudo npm install electron-prebuilt -g`
+3. Install Sencha Cmd (non-free): https://www.sencha.com/products/extjs/cmd-download/
+4. Clone repository: `git clone https://github.com/saenzramiro/rambox.git`
+5. Install npm dependencies: `npm install`
+6. Configure `env-sample.js` and rename it to `env.js`.
+7. Compile: `npm run sencha:compile`
+8. Start program: `npm start`
+
+
+-------------------
Disclosure
-------------------
diff --git a/app/package.json b/app/package.json
index e2d6f5b6..667ba515 100644
--- a/app/package.json
+++ b/app/package.json
@@ -1,7 +1,7 @@
{
"name": "Rambox",
"productName": "Rambox",
- "version": "0.5.3",
+ "version": "0.5.7",
"description": "Rambox",
"main": "electron/main.js",
"private": true,
@@ -27,7 +27,7 @@
"skype"
],
"author": "Ramiro Saenz ",
- "license": "MIT",
+ "license": "GPL-3.0",
"dependencies": {
"auto-launch": "4.0.0",
"tmp": "0.0.28",
diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js
index e78d4e50..3685b686 100644
--- a/app/store/ServicesList.js
+++ b/app/store/ServicesList.js
@@ -265,7 +265,6 @@ Ext.define('Rambox.store.ServicesList', {
,description: 'HD quality calls, private and group chats with inline photos, music and video. Also available for your phone or tablet.'
,url: 'https://app.wire.com/'
,type: 'messaging'
- ,userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
},
{
id: 'sync'
@@ -516,7 +515,7 @@ Ext.define('Rambox.store.ServicesList', {
,description: 'RainLoop Webmail - Simple, modern & fast web-based email client.'
,url: '___'
,type: 'email'
- ,js_unread: 'function checkUnread(){var a=document.getElementsByClassName("badge pull-right count"),b=0;for(i=0;i=1?document.title="("+a+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,1e3);'
+ ,js_unread: 'function checkUnread(){var a=document.querySelectorAll(".e-item .e-link:not(.hidden) .badge.pull-right.count"),b=0;for(i=0;i=1?document.title="("+a+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,1e3);'
},
{
id: 'amium'
@@ -670,14 +669,24 @@ Ext.define('Rambox.store.ServicesList', {
,type: 'messaging'
},
{
- id: 'xing'
- ,logo: 'xing.png'
- ,name: 'XING'
- ,description: 'Career-oriented social networking'
- ,url: 'https://www.xing.com/messages/conversations'
- ,type: 'messaging'
- ,js_unread: '(function() { let originalTitle = document.title; function checkUnread() { let count = null; let notificationElement = document.querySelector(\'[data-update="unread_conversations"]\'); if (notificationElement && notificationElement.style.display !== \'none\') { count = parseInt(notificationElement.textContent.trim(), 10); } updateBadge(count); } function updateBadge(count) { if (count && count >= 1) { rambox.setUnreadCount(count); } else { rambox.clearUnreadCount(); } } setInterval(checkUnread, 3000); checkUnread(); })();'
- ,dont_update_unread_from_title: true
+ id: 'xing',
+ logo: 'xing.png',
+ name: 'XING',
+ description: 'Career-oriented social networking',
+ url: 'https://www.xing.com/messages/conversations',
+ type: 'messaging',
+ js_unread: '(function() { let originalTitle = document.title; function checkUnread() { let count = null; let notificationElement = document.querySelector(\'[data-update="unread_conversations"]\'); if (notificationElement && notificationElement.style.display !== \'none\') { count = parseInt(notificationElement.textContent.trim(), 10); } updateBadge(count); } function updateBadge(count) { if (count && count >= 1) { rambox.setUnreadCount(count); } else { rambox.clearUnreadCount(); } } setInterval(checkUnread, 3000); checkUnread(); })();',
+ dont_update_unread_from_title: true
+ },
+ {
+ id: 'threema',
+ logo: 'threema.png',
+ name: 'Threema',
+ description: 'Seriously secure messaging',
+ url: 'https://web.threema.ch/',
+ type: 'messaging',
+ js_unread: '(function () { let unreadCount = 0; function checkUnread() { let newUnread = 0; try { let webClientService = angular.element(document.documentElement).injector().get(\'WebClientService\'); let conversations = webClientService.conversations.conversations; conversations.forEach(function(conversation) { newUnread += conversation.unreadCount; }); } catch (e) { } if (newUnread !== unreadCount) { unreadCount = newUnread; updateBadge(unreadCount); } } function updateBadge(count) { if (count && count >= 1) { rambox.setUnreadCount(count); } else { rambox.clearUnreadCount(); } } setInterval(checkUnread, 3000); checkUnread(); })();',
+ dont_update_unread_from_title: true
},
{
id: 'workplace'
diff --git a/app/ux/Auth0.js b/app/ux/Auth0.js
index 8a1d61d2..ef2216cf 100644
--- a/app/ux/Auth0.js
+++ b/app/ux/Auth0.js
@@ -110,7 +110,7 @@ Ext.define('Rambox.ux.Auth0', {
,failure: function(response) {
Ext.Msg.hide();
Ext.toast({
- html: ' Error ocurred when trying to backup your configuration.'
+ html: ' Error occurred when trying to backup your configuration.'
,title: 'Synchronize Configuration'
,width: 300
,align: 't'
diff --git a/app/ux/WebView.js b/app/ux/WebView.js
index fbb854dc..e45269b1 100644
--- a/app/ux/WebView.js
+++ b/app/ux/WebView.js
@@ -76,7 +76,7 @@ Ext.define('Rambox.ux.WebView',{
,handler: me.goBack
}
,{
- text: 'Foward'
+ text: 'Forward'
,glyph: 'xf054@FontAwesome'
,iconAlign: 'right'
,flex: 1
@@ -412,7 +412,7 @@ Ext.define('Rambox.ux.WebView',{
,setUnreadCount: function(newUnreadCount) {
var me = this;
- if (me.record.get('includeInGlobalUnreadCounter') === true) {
+ if (newUnreadCount === parseInt(newUnreadCount,10) && me.record.get('includeInGlobalUnreadCounter') === true) {
Rambox.util.UnreadCounter.setUnreadCountForService(me.record.get('id'), newUnreadCount);
} else {
Rambox.util.UnreadCounter.clearUnreadCountForService(me.record.get('id'));
diff --git a/appveyor.yml b/appveyor.yml
index cf879d2c..9a4825b0 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,4 +1,4 @@
-version: 0.5.3
+version: 0.5.7
pull_requests:
do_not_increment_build_number: true
branches:
diff --git a/electron/tray.js b/electron/tray.js
index dbe0c69e..459bc687 100644
--- a/electron/tray.js
+++ b/electron/tray.js
@@ -50,8 +50,12 @@ exports.create = function(win, config) {
appIcon = new Tray(iconPath);
appIcon.setToolTip('Rambox');
appIcon.setContextMenu(contextMenu);
- appIcon.on('double-click', () => {
- if ( !win.isVisible() || win.isMinimized() ) config.get('maximized') ? win.maximize() : win.show();
+ appIcon.on('click', () => {
+ if ( !win.isVisible() ) {
+ win.isVisible() ? win.hide() : win.show();
+ } else {
+ win.focus();
+ }
});
};
diff --git a/package.json b/package.json
index 16610705..1c693dd8 100644
--- a/package.json
+++ b/package.json
@@ -33,17 +33,15 @@
"build": {
"productName": "Rambox",
"appId": "com.saenzramiro.rambox",
- "category": "public.app-category.productivity",
"asar": true,
"mac": {
+ "category": "public.app-category.productivity",
"target": [
"default"
- ],
- "icon": "./resources/installer/Icon.icns"
+ ]
},
"dmg": {
"title": "Rambox",
- "icon": "./resources/installer/Icon.icns",
"iconSize": 128,
"contents": [
{
@@ -59,39 +57,36 @@
}
]
},
+ "squirrelWindows": {
+ "iconUrl": "https://raw.githubusercontent.com/saenzramiro/rambox/master/resources/Icon.ico"
+ },
"win": {
- "title": "Rambox",
-
"target": [
"squirrel",
"zip"
- ],
- "loadingGif": "./resources/installer/loading.gif",
- "iconUrl": "https://raw.githubusercontent.com/saenzramiro/rambox/master/resources/Icon.ico",
- "icon": "./resources/Icon.ico",
- "msi": false
+ ]
},
"linux": {
+ "category": "Office",
"target": [
"AppImage",
"deb",
"rpm",
"zip",
"tar.gz"
- ],
- "icon": "./resources/Icon.png"
+ ]
+ },
+ "directories": {
+ "buildResources": "resources/installer/",
+ "output": "dist/",
+ "app": "build/production/Rambox/"
}
},
- "directories": {
- "buildResources": "resources/installer/",
- "output": "dist/",
- "app": "build/production/Rambox/"
- },
"devDependencies": {
"asar": "^0.12.1",
- "electron": "1.4.15",
- "electron-builder": "11.3.0",
- "electron-builder-squirrel-windows": "11.6.1",
+ "electron": "^1.6.1",
+ "electron-builder": "^14.5.3",
+ "electron-builder-squirrel-windows": "15.0.0",
"electron-squirrel-startup": "^1.0.0",
"chai": "3.5.0",
"mocha": "3.2.0",
diff --git a/resources/icons/threema.png b/resources/icons/threema.png
new file mode 100644
index 00000000..ff052529
Binary files /dev/null and b/resources/icons/threema.png differ
diff --git a/resources/installer/Icon.icns b/resources/installer/icon.icns
similarity index 100%
rename from resources/installer/Icon.icns
rename to resources/installer/icon.icns
diff --git a/resources/installer/Icon.ico b/resources/installer/icon.ico
similarity index 100%
rename from resources/installer/Icon.ico
rename to resources/installer/icon.ico
diff --git a/resources/installer/loading.gif b/resources/installer/install-spinner.gif
similarity index 100%
rename from resources/installer/loading.gif
rename to resources/installer/install-spinner.gif
diff --git a/resources/installer/installerIcon.ico b/resources/installer/installerIcon.ico
new file mode 100644
index 00000000..00c0c927
Binary files /dev/null and b/resources/installer/installerIcon.ico differ