Browse Source

Merge branch 'master' into add/integrated-tab

pull/2102/head
Simon Sassi 6 years ago committed by GitHub
parent
commit
b6e0ea143c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      CONTRIBUTING.md
  2. 4
      README.md
  3. 6
      app.js
  4. 3
      app/Application.js
  5. 36
      app/store/ServicesList.js
  6. 37
      app/ux/WebView.js
  7. 9
      app/view/preferences/Preferences.js
  8. 37
      electron/main.js
  9. 131
      package-lock.json
  10. 7
      package.json
  11. BIN
      resources/icons/allo.png
  12. BIN
      resources/icons/googlecalendar.png
  13. BIN
      resources/icons/riot.png
  14. BIN
      resources/icons/slack.png
  15. 8
      resources/js/rambox-service-api.js
  16. 2
      resources/languages/af.js
  17. 2
      resources/languages/ar.js
  18. 2
      resources/languages/bg.js
  19. 2
      resources/languages/bn.js
  20. 2
      resources/languages/bs2.js
  21. 2
      resources/languages/ca.js
  22. 2
      resources/languages/ceb.js
  23. 2
      resources/languages/cs.js
  24. 2
      resources/languages/da.js
  25. 2
      resources/languages/de-CH.js
  26. 2
      resources/languages/de.js
  27. 2
      resources/languages/el.js
  28. 2
      resources/languages/en.js
  29. 2
      resources/languages/es-ES.js
  30. 2
      resources/languages/fa.js
  31. 2
      resources/languages/fi.js
  32. 2
      resources/languages/fil.js
  33. 2
      resources/languages/fr.js
  34. 2
      resources/languages/he.js
  35. 2
      resources/languages/hi.js
  36. 2
      resources/languages/hr.js
  37. 2
      resources/languages/hu.js
  38. 2
      resources/languages/id.js
  39. 2
      resources/languages/it.js
  40. 2
      resources/languages/ja.js
  41. 2
      resources/languages/ko.js
  42. 2
      resources/languages/nl.js
  43. 2
      resources/languages/no.js
  44. 2
      resources/languages/pl.js
  45. 2
      resources/languages/pt-BR.js
  46. 2
      resources/languages/pt-PT.js
  47. 2
      resources/languages/ro.js
  48. 2
      resources/languages/ru.js
  49. 2
      resources/languages/sk.js
  50. 2
      resources/languages/sr.js
  51. 2
      resources/languages/sv-SE.js
  52. 2
      resources/languages/tr.js
  53. 2
      resources/languages/uk.js
  54. 2
      resources/languages/vi.js
  55. 2
      resources/languages/zh-CN.js
  56. 2
      resources/languages/zh-TW.js

2
CONTRIBUTING.md

@ -39,7 +39,7 @@ Working on your first Pull Request? You can learn how from this *free* series [H
| Prerequisite | Version |
| ------------------------------------------------------------- | ------- |
| [Sencha](https://www.sencha.com/products/extjs/cmd-download/) | `=6.1.2.15` |
| [Sencha](https://www.sencha.com/products/extjs/cmd-download/) | `=6.6.0.13` |
| [Ruby](https://www.ruby-lang.org/en/downloads/) | `=2.3` |
| [Node.js](https://nodejs.org) | `~ ^4.0.0` |
| npm (comes with Node) | `~ ^3.8.7` |

4
README.md

@ -207,7 +207,7 @@ You are always welcome to check the code! ;)
Help us translate Rambox on <https://crowdin.com/project/rambox/invite>.
## [Install on Linux - Steps](https://github.com/saenzramiro/rambox/wiki/Install-on-Linux)
## [Install on Linux - Steps](https://github.com/ramboxapp/community-edition/wiki/Install-on-Linux)
## [Contributing](./CONTRIBUTING.md)
@ -237,4 +237,4 @@ Rambox is not affiliated with any of the messaging apps offered.
## Licence
[GNU GPL v3](https://github.com/saenzramiro/rambox/LICENSE)
[GNU GPL v3](https://github.com/ramboxapp/community-edition/blob/master/LICENSE)

6
app.js

@ -16,7 +16,11 @@ Ext.application({
// auto update logic
const ipc = require('electron').ipcRenderer;
require('electron-context-menu')();
const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper');
const contextMenuBuilder = new ContextMenuBuilder();
const contextMenuListener = new ContextMenuListener(function(event, info) {
contextMenuBuilder.showPopupMenu(info);
});
ipc.on('showAbout', function(event, message) {
!Ext.cq1('about') ? Ext.create('Rambox.view.main.About') : '';

3
app/Application.js

@ -24,7 +24,6 @@ Ext.define('Rambox.Application', {
totalServicesLoaded: 0
,totalNotifications: 0
}
,launch: function () {
// Prevent track if the user have disabled this option (default: false)
if ( !ipc.sendSync('sendStatistics') ) {
@ -60,7 +59,7 @@ Ext.define('Rambox.Application', {
if ( require('electron').remote.process.argv.indexOf('--without-update') === -1 ) Rambox.app.checkUpdate(true);
// Add shortcuts to switch services using CTRL + Number
var map = new Ext.util.KeyMap({
document.keyMapping = new Ext.util.KeyMap({
target: document
,binding: [
{

36
app/store/ServicesList.js

@ -66,7 +66,6 @@ Ext.define('Rambox.store.ServicesList', {
,description: locale['services[4]']
,url: 'https://web.skype.com/'
,type: 'messaging'
,userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586'
,note: 'Text and Audio calls are supported only. <a href="https://github.com/saenzramiro/rambox/wiki/Skype" target="_blank">Read more...</a>'
},
{
@ -115,7 +114,7 @@ Ext.define('Rambox.store.ServicesList', {
,url: 'https://mail.google.com/mail/'
,type: 'email'
,allow_popups: true
,js_unread: 'function checkUnread(){var e=document.getElementsByClassName("aim")[0];updateBadge(-1!=e.innerHTML.indexOf("(")&&(t=parseInt(e.textContent.replace(\/[^0-9]\/g,""))))}function updateBadge(e){1<=e?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);'
,js_unread: 'function checkUnread(){var e=document.querySelector(".aim .aio").querySelector("span").querySelector("a").getAttribute("aria-label").replace(/\D/g,"");updateBadge(e?parseInt(e):0)}function updateBadge(e){1<=e?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);'
,note: 'To enable desktop notifications, you have to go to Settings inside Gmail. <a href="https://support.google.com/mail/answer/1075549?ref_topic=3394466" target="_blank">Read more...</a>'
},
{
@ -184,9 +183,8 @@ Ext.define('Rambox.store.ServicesList', {
,type: 'messaging'
,titleBlink: true
,external_tab_match: 'https?:\/\/discordapp\.com'
,js_unread: 'function checkUnread(){var e=document.querySelectorAll("[class*=scroller] [class*=container]"),r=Array.from(e.values()).reduce((e,r)=>e+(r&&r.querySelector("[class*=avatar]")&&r.querySelector("[class*=wrapper][class*=badge]")?parseInt(r.querySelector("[class*=wrapper][class*=badge]").innerHTML):0),0);rambox.setUnreadCount(r)}setInterval(checkUnread,3e3);'
,js_unread: 'window.originalopen=window.open,window.open=function(){return arguments.length>0?window.originalopen.apply(this,arguments):{set location(n){window.originalopen(n)}}};function checkUnread(){var e=document.querySelectorAll("[class*=scroller] [class*=container]"),r=Array.from(e.values()).reduce((e,r)=>e+(r&&r.querySelector("[class*=avatar]")&&r.querySelector("[class*=wrapper][class*=badge]")?parseInt(r.querySelector("[class*=wrapper][class*=badge]").innerHTML):0),0);rambox.setUnreadCount(r)}setInterval(checkUnread,3e3);'
,note: 'To enable desktop notifications, you have to go to Options inside Discord. Will count only unread DMs.'
,userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
},
{
id: 'outlook'
@ -217,7 +215,6 @@ Ext.define('Rambox.store.ServicesList', {
,url: 'https://mail.yahoo.com/'
,type: 'email'
,note: 'To enable desktop notifications, you have to go to Options inside Yahoo! Mail.'
,userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
},
{
id: 'protonmail'
@ -310,14 +307,6 @@ Ext.define('Rambox.store.ServicesList', {
,url: 'https://web.voxer.com/'
,type: 'messaging'
},
{
id: 'dasher'
,logo: 'dasher.png'
,name: 'Dasher'
,description: locale['services[30]']
,url: 'https://dasher.im/'
,type: 'messaging'
},
{
id: 'flowdock'
,logo: 'flowdock.png'
@ -649,7 +638,7 @@ Ext.define('Rambox.store.ServicesList', {
,logo: 'crisp.png'
,name: 'Crisp'
,description: 'Connect your customers to your team.'
,url: 'https://app.crisp.im/inbox'
,url: 'https://app.crisp.chat/'
,type: 'messaging'
},
{
@ -693,8 +682,6 @@ Ext.define('Rambox.store.ServicesList', {
,description: 'Microsoft Teams is the chat-based workspace in Office 365 that integrates all the people, content, and tools your team needs to be more engaged and effective.'
,url: 'https://teams.microsoft.com'
,type: 'messaging'
,userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.2883.87 Safari/537.36'
,js_unread: 'navigator.__defineGetter__("userAgent", function(){ return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.2883.87 Safari/537.36 Edge/12.246"; });'
},
{
id: 'kezmo'
@ -819,15 +806,6 @@ Ext.define('Rambox.store.ServicesList', {
,type: 'messaging'
,js_unread: 'function checkUnread(){var a=document.getElementsByClassName("unread")[0];updateBadge(t=a===undefined?0:parseInt(a.textContent.replace(/[^0-9]/g,"")))}function updateBadge(a){a>=1?rambox.setUnreadCount(a):rambox.clearUnreadCount()}setInterval(checkUnread,3000);'
},
{
id: 'allo'
,logo: 'allo.png'
,name: 'Allo'
,description: 'Google Allo is a smart messaging app that helps you say more and do more. Express yourself better with stickers, doodles, and HUGE emojis & text. Allo also brings you the Google Assistant.'
,url: 'https://allo.google.com/web'
,type: 'messaging'
,js_unread: 'function checkUnread(){var e=document.querySelectorAll(".hasUnread.conversation_item"),n=0;for(i=0;i<e.length;i++){var m=e[i].querySelector("#muted"),u=e[i].querySelector(".unreadCount"),c=parseInt(u.innerHTML.trim()),r=(m===null||m.style.display==="none")?c:0;n+=isNaN(r)?0:r}updateBadge(n)}function updateBadge(e){e&&e>=1?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);'
},
{
id: 'Kune'
,logo: 'kune.png'
@ -941,6 +919,14 @@ Ext.define('Rambox.store.ServicesList', {
,description: 'Sococo is an online workplace that adds the magic of co-location back into the day to day life of distributed Agile teams.'
,url: 'https://app.sococo.com/a/login'
,type: 'messaging'
},
{
id: 'googlecalendar'
,logo: 'googlecalendar.png'
,name: 'Google Calendar'
,description: 'Google Calendar is a time-management and scheduling calendar service developed by Google.'
,url: 'https://calendar.google.com/calendar/'
,type: 'messaging'
}
]
});

37
app/ux/WebView.js

@ -1,6 +1,7 @@
/**
* Default config for all webviews created
*/
Ext.define('Rambox.ux.WebView',{
extend: 'Ext.panel.Panel'
,xtype: 'webview'
@ -37,9 +38,10 @@ Ext.define('Rambox.ux.WebView',{
// Allow Custom sites with self certificates
//if ( me.record.get('trust') ) ipc.send('allowCertificate', me.src);
const prefConfig = ipc.sendSync('getConfig');
Ext.apply(me, {
items: me.webViewConstructor()
,title: me.record.get('tabname') ? me.record.get('name') : ''
,title: prefConfig.hide_tabbar_labels ? '' : (me.record.get('tabname') ? me.record.get('name') : '')
,icon: me.record.get('type') === 'custom' ? (me.record.get('logo') === '' ? 'resources/icons/custom.png' : me.record.get('logo')) : 'resources/icons/'+me.record.get('logo')
,src: me.record.get('url')
,type: me.record.get('type')
@ -231,10 +233,6 @@ Ext.define('Rambox.ux.WebView',{
var webview = me.down('component').el.dom;
setTimeout(function() {
require('electron-context-menu')({window: webview});
}, 100);
// Google Analytics Event
ga_storage._trackEvent('Services', 'load', me.type, 1, true);
@ -486,6 +484,29 @@ Ext.define('Rambox.ux.WebView',{
webview.executeJavaScript(js_inject);
});
const keycode = require('keycodes');
webview.getWebContents().on('before-input-event', (event, input) => {
if (input.type !== 'keyDown' || input.key === 'z' || input.key === 'a' ) return; // event used by default
// because keyCode property is not passed
// Create a fake KeyboardEvent from the data provided
var emulatedKeyboardEvent = new KeyboardEvent('keydown', {
code: input.code,
key: input.key,
shiftKey: input.shift,
altKey: input.alt,
ctrlKey: input.control,
metaKey: input.meta,
repeat: input.isAutoRepeat,
keyCode: keycode(input.key) //get real key code
});
emulatedKeyboardEvent.getKey = function() {
return this.keyCode || this.charCode // fake function, normally used by Ext.js, simply returning keyCode
}
document.keyMapping.handleTargetEvent(emulatedKeyboardEvent) // we directly trigger handleTargetEvent. That's a private method normally. We can't fire the event directly with document.dispatch, unfortunately
});
webview.addEventListener('ipc-message', function(event) {
var channel = event.channel;
switch (channel) {
@ -527,7 +548,11 @@ Ext.define('Rambox.ux.WebView',{
function showWindowAndActivateTab(event) {
require('electron').remote.getCurrentWindow().show();
Ext.cq1('app-main').setActiveTab(me);
var tabPanel = Ext.cq1('app-main');
// Temp fix missing cursor after upgrade to electron 3.x +
tabPanel.getActiveTab().getWebView().blur();
tabPanel.setActiveTab(me);
tabPanel.getActiveTab().getWebView().focus();
}
});

9
app/view/preferences/Preferences.js

@ -16,12 +16,15 @@ Ext.define('Rambox.view.preferences.Preferences',{
,title: locale['preferences[0]']
,width: 420
,height: 500
,modal: true
,closable: true
,minimizable: false
,maximizable: false
,draggable: true
,resizable: false
,scrollable: 'vertical'
,bodyStyle: 'margin-right:15px;'
,buttons: [
{
text: locale['button[1]']
@ -167,6 +170,12 @@ Ext.define('Rambox.view.preferences.Preferences',{
]
})
}
,{
xtype: 'checkbox'
,name: 'hide_tabbar_labels'
,boxLabel: locale['preferences[28]']
,value: config.hide_tabbar_labels
}
,{
xtype: 'combo'
,name: 'default_service'

37
electron/main.js

@ -23,6 +23,7 @@ const config = new Config({
always_on_top: false
,hide_menu_bar: false
,tabbar_location: 'top'
,hide_tabbar_labels: false
,window_display_behavior: 'taskbar_tray'
,auto_launch: !isDev
,flash_frame: true
@ -65,11 +66,13 @@ app.setAppUserModelId('com.grupovrs.ramboxce');
const appMenu = require('./menu')(config);
// Configure AutoLaunch
const appLauncher = new AutoLaunch({
name: 'Rambox'
,isHidden: config.get('start_minimized')
});
config.get('auto_launch') && !isDev ? appLauncher.enable() : appLauncher.disable();
if ( !isDev ) {
const appLauncher = new AutoLaunch({
name: 'Rambox'
,isHidden: config.get('start_minimized')
});
config.get('auto_launch') ? appLauncher.enable() : appLauncher.disable();
}
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
@ -299,7 +302,7 @@ ipcMain.on('setServiceNotifications', function(event, partition, op) {
ipcMain.on('setDontDisturb', function(event, arg) {
config.set('dont_disturb', arg);
})
});
// Reload app
ipcMain.on('reloadApp', function(event) {
@ -312,20 +315,20 @@ ipcMain.on('relaunchApp', function(event) {
app.exit(0);
});
const shouldQuit = app.requestSingleInstanceLock()
const shouldQuit = app.requestSingleInstanceLock();
if (!shouldQuit) {
app.quit();
return;
}
app.on('second-instance', (event, commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore();
mainWindow.focus();
mainWindow.show();
mainWindow.setSkipTaskbar(false);
if (app.dock && app.dock.show) app.dock.show();
}
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore();
mainWindow.focus();
mainWindow.show();
mainWindow.setSkipTaskbar(false);
if (app.dock && app.dock.show) app.dock.show();
}
});
@ -421,7 +424,7 @@ if ( config.get('proxy') ) {
if(!authInfo.isProxy)
return;
event.preventDefault()
event.preventDefault();
callback(config.get('proxyLogin'), config.get('proxyPassword'))
})
}
@ -454,7 +457,9 @@ app.on('activate', function () {
config.get('master_password') ? createMasterPasswordWindow() : createWindow();
}
if ( mainWindow !== null ) mainWindow.show();
if (mainWindow) {
mainWindow.show();
}
});
app.on('before-quit', function () {

131
package-lock.json generated

@ -1,6 +1,6 @@
{
"name": "Rambox",
"version": "0.6.3",
"version": "0.6.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -44,9 +44,9 @@
}
},
"@types/node": {
"version": "8.10.40",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.40.tgz",
"integrity": "sha512-RRSjdwz63kS4u7edIwJUn8NqKLLQ6LyqF/X4+4jp38MBT3Vwetewi2N4dgJEshLbDwNgOJXNYoOwzVZUSSLhkQ==",
"version": "10.14.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.4.tgz",
"integrity": "sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==",
"dev": true
},
"abbrev": {
@ -1712,12 +1712,12 @@
"dev": true
},
"electron": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/electron/-/electron-3.1.4.tgz",
"integrity": "sha512-YJEvfq45K7MmhLXY4mpGLG/cH5BU/1NUOcNMRzLxs3wVS/fKY2ZkJrOTncxhi1VOC1EJOQslcSdupitrW/FSig==",
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/electron/-/electron-4.1.4.tgz",
"integrity": "sha512-MelOjntJvd33izEjR6H4N/Uii7y535z/b2BuYXJGLNSHL6o1IlyhUQmfiT87kWABayERgeuYERgvsyf956OOFw==",
"dev": true,
"requires": {
"@types/node": "^8.0.24",
"@types/node": "^10.12.18",
"electron-download": "^4.1.0",
"extract-zip": "^1.0.3"
}
@ -1788,32 +1788,36 @@
}
}
},
"electron-context-menu": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.9.1.tgz",
"integrity": "sha1-7U3yDAgEkcPJlqv8s2MVmUajgFg=",
"electron-contextmenu-wrapper": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/electron-contextmenu-wrapper/-/electron-contextmenu-wrapper-2.0.0.tgz",
"integrity": "sha512-al2x8c0p83fuMcwh/k8F6LsTMkVap7kJskX1TwODw8RNY8rVe8FMA55Hj4BOmiKp9TzQbtdXQY3ZLMqJVElR6w==",
"requires": {
"electron-dl": "^1.2.0",
"electron-is-dev": "^0.1.1"
"debug": "^4.1.0",
"mkdirp": "^0.5.1",
"pify": "^4.0.0"
},
"dependencies": {
"electron-is-dev": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-0.1.2.tgz",
"integrity": "sha1-ihBD4ys6HaHD9VPc4oznZCRhZ+M="
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
}
}
},
"electron-dl": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.11.0.tgz",
"integrity": "sha512-iL9qHzzWOuL9bus+UT+P72SwrDQcFTV6QHqcbhwgqjCC9/K5jhdRzG0dIMB3TzYlk6rmApanPqh9DvWykwIH1Q==",
"requires": {
"ext-name": "^5.0.0",
"pupa": "^1.0.0",
"unused-filename": "^1.0.0"
}
},
"electron-download": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
@ -2162,23 +2166,6 @@
"strip-eof": "^1.0.0"
}
},
"ext-list": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
"integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
"requires": {
"mime-db": "^1.28.0"
}
},
"ext-name": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
"integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
"requires": {
"ext-list": "^2.0.0",
"sort-keys-length": "^1.0.0"
}
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
@ -2971,11 +2958,6 @@
"path-is-inside": "^1.0.1"
}
},
"is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
@ -3105,6 +3087,11 @@
"verror": "1.10.0"
}
},
"keycodes": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/keycodes/-/keycodes-1.0.0.tgz",
"integrity": "sha512-ukEttiO9Sjb/dj29GQw3/mVXyI3575QTtvetCJfBrVjytESKefRHCt7GUmruvFwWIUqvMD9p5uk7Y3y//4B+hw=="
},
"klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
@ -3314,11 +3301,6 @@
"resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
"integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg=="
},
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
},
"mime-types": {
"version": "2.1.18",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
@ -3352,14 +3334,12 @@
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
@ -3493,11 +3473,6 @@
}
}
},
"modify-filename": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
"integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@ -3909,11 +3884,6 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
},
"pupa": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz",
"integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y="
},
"q": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
@ -4390,22 +4360,6 @@
"string-width": "^1.0.1"
}
},
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
"integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
"requires": {
"is-plain-obj": "^1.0.0"
}
},
"sort-keys-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
"integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
"requires": {
"sort-keys": "^1.0.0"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@ -4883,15 +4837,6 @@
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
},
"unused-filename": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz",
"integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=",
"requires": {
"modify-filename": "^1.1.0",
"path-exists": "^3.0.0"
}
},
"unzip-response": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",

7
package.json

@ -1,7 +1,7 @@
{
"name": "Rambox",
"productName": "Rambox",
"version": "0.6.4",
"version": "0.6.5",
"description": "Free and Open Source messaging and emailing app that combines common web applications into one.",
"main": "electron/main.js",
"repository": {
@ -173,7 +173,7 @@
"chai": "3.5.0",
"crowdin": "1.0.0",
"csvjson": "4.3.3",
"electron": "^3.1.4",
"electron": "^4.1.3",
"electron-builder": "^20.28.3",
"electron-packager": "^12.1.0",
"mocha": "^5.2.0",
@ -184,11 +184,12 @@
"auth0-js": "^9.7.3",
"auto-launch-patched": "5.0.2",
"crypto": "^1.0.1",
"electron-context-menu": "0.9.1",
"electron-contextmenu-wrapper": "2.0.0",
"electron-is-dev": "^0.3.0",
"electron-log": "^2.2.17",
"electron-store": "^2.0.0",
"electron-updater": "^3.1.2",
"keycodes": "^1.0.0",
"mime": "^2.3.1",
"request": "^2.88.0",
"request-promise": "^4.2.2",

BIN
resources/icons/allo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

BIN
resources/icons/googlecalendar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
resources/icons/riot.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
resources/icons/slack.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 14 KiB

8
resources/js/rambox-service-api.js

@ -3,6 +3,7 @@
*/
const { ipcRenderer } = require('electron');
const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper');
/**
* Make the Rambox API available via a global "rambox" variable.
@ -12,7 +13,7 @@ const { ipcRenderer } = require('electron');
window.rambox = {};
/**
* Sets the unraed count of the tab.
* Sets the unread count of the tab.
*
* @param {*} count The unread count
*/
@ -50,4 +51,7 @@ Notification.prototype = NativeNotification.prototype;
Notification.permission = NativeNotification.permission;
Notification.requestPermission = NativeNotification.requestPermission.bind(Notification);
window.close = function() { location.href = location.origin };
window.rambox.contextMenuBuilder = new ContextMenuBuilder();
window.rambox.contextMenuListener = new ContextMenuListener(function(event, info) {
window.rambox.contextMenuBuilder.showPopupMenu(info);
});

2
resources/languages/af.js

File diff suppressed because one or more lines are too long

2
resources/languages/ar.js

File diff suppressed because one or more lines are too long

2
resources/languages/bg.js

File diff suppressed because one or more lines are too long

2
resources/languages/bn.js

File diff suppressed because one or more lines are too long

2
resources/languages/bs2.js

File diff suppressed because one or more lines are too long

2
resources/languages/ca.js

File diff suppressed because one or more lines are too long

2
resources/languages/ceb.js

File diff suppressed because one or more lines are too long

2
resources/languages/cs.js

File diff suppressed because one or more lines are too long

2
resources/languages/da.js

File diff suppressed because one or more lines are too long

2
resources/languages/de-CH.js

File diff suppressed because one or more lines are too long

2
resources/languages/de.js

File diff suppressed because one or more lines are too long

2
resources/languages/el.js

File diff suppressed because one or more lines are too long

2
resources/languages/en.js

File diff suppressed because one or more lines are too long

2
resources/languages/es-ES.js

File diff suppressed because one or more lines are too long

2
resources/languages/fa.js

File diff suppressed because one or more lines are too long

2
resources/languages/fi.js

File diff suppressed because one or more lines are too long

2
resources/languages/fil.js

File diff suppressed because one or more lines are too long

2
resources/languages/fr.js

File diff suppressed because one or more lines are too long

2
resources/languages/he.js

File diff suppressed because one or more lines are too long

2
resources/languages/hi.js

File diff suppressed because one or more lines are too long

2
resources/languages/hr.js

File diff suppressed because one or more lines are too long

2
resources/languages/hu.js

File diff suppressed because one or more lines are too long

2
resources/languages/id.js

File diff suppressed because one or more lines are too long

2
resources/languages/it.js

File diff suppressed because one or more lines are too long

2
resources/languages/ja.js

File diff suppressed because one or more lines are too long

2
resources/languages/ko.js

File diff suppressed because one or more lines are too long

2
resources/languages/nl.js

File diff suppressed because one or more lines are too long

2
resources/languages/no.js

File diff suppressed because one or more lines are too long

2
resources/languages/pl.js

File diff suppressed because one or more lines are too long

2
resources/languages/pt-BR.js

File diff suppressed because one or more lines are too long

2
resources/languages/pt-PT.js

File diff suppressed because one or more lines are too long

2
resources/languages/ro.js

File diff suppressed because one or more lines are too long

2
resources/languages/ru.js

File diff suppressed because one or more lines are too long

2
resources/languages/sk.js

File diff suppressed because one or more lines are too long

2
resources/languages/sr.js

File diff suppressed because one or more lines are too long

2
resources/languages/sv-SE.js

File diff suppressed because one or more lines are too long

2
resources/languages/tr.js

File diff suppressed because one or more lines are too long

2
resources/languages/uk.js

File diff suppressed because one or more lines are too long

2
resources/languages/vi.js

File diff suppressed because one or more lines are too long

2
resources/languages/zh-CN.js

File diff suppressed because one or more lines are too long

2
resources/languages/zh-TW.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save