32 changes: 15 additions & 17 deletions resources/win/eula.txt
@@ -1,21 +1,21 @@
This End-User License Agreement (EULA) is a legal agreement between you (either as an individual or on behalf of an entity) and Alexandru Rosianu regarding your use of Messenger for Desktop for OS X, Windows and Linux and associated documentation (the "Software"). This EULA includes the Terms and Conditions (https://messengerfordesktop.com/terms.html) and Privacy Policy (https://messengerfordesktop.com/privacy.html). IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS EULA, DO NOT INSTALL, USE OR COPY THE SOFTWARE.
This End-User License Agreement (EULA) is a legal agreement between you (either as an individual or on behalf of an entity) and The Cofounders Ltd, Seychelles regarding your use of Messenger for Desktop for OS X, Windows and Linux and associated documentation (the "Software"). This EULA includes the Terms and Conditions (https://messengerfordesktop.com/terms.html) and Privacy Policy (https://messengerfordesktop.com/privacy.html). IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS EULA, DO NOT INSTALL, USE OR COPY THE SOFTWARE.

Summary
You must agree to all of the terms of this EULA to use this Software.

If so, you may use the Software for free and for any lawful purpose.

This Software automatically communicates with Alexandru Rosianu's server(s) for three reasons: (1) to receive and install updates; (2) to send error reports; and (3) to send anonymized usage information. You can view the source code to see what information is sent, and you may opt out of sending the anonymized usage data.
This Software automatically communicates with The Cofounders Ltd, Seychelles's server(s) for three reasons: (1) to receive and install updates; (2) to send error reports; and (3) to send anonymized usage information. You can view the source code to see what information is sent, and you may opt out of sending the anonymized usage data.

This Software is provided "as-is" with no warranties, and you agree that Alexandru Rosianu is not liable for anything you do with it.
This Software is provided "as-is" with no warranties, and you agree that The Cofounders Ltd, Seychelles is not liable for anything you do with it.

You really ought to just go ahead and read the whole EULA. It's not all that long. You should not only rely on this summary.

The Agreement
By downloading, installing, using, or copying the Software, you accept and agree to be bound by the terms of this EULA. If you do not agree to all of the terms of this EULA, you may not download, install, use or copy the Software.

The License
This EULA entitles you to install as many copies of the Software as you want, and use the Software for any lawful purpose consistent with this EULA. Your license to use the Software is expressly conditioned upon your agreement to all of the terms of this EULA. This software is licensed, not sold. Alexandru Rosianu reserves all other rights not granted by this EULA.
This EULA entitles you to install as many copies of the Software as you want, and use the Software for any lawful purpose consistent with this EULA. Your license to use the Software is expressly conditioned upon your agreement to all of the terms of this EULA. This software is licensed, not sold. The Cofounders Ltd, Seychelles reserves all other rights not granted by this EULA.

The Restrictions
When using the Software you must use it in a manner that complies with the applicable laws in the jurisdiction(s) in which you use the Software.
Expand All @@ -27,36 +27,34 @@ You may redistribute the software, but it must include this EULA and you may not
Since the Software is open source, you are free to copy its source code (within the limits of the MIT license) and create your own clone of the Software, which is not bound by this EULA.

Privacy Notices
The Software automatically communicates with Alexandru Rosianu's server(s) for three purposes: (1) updating the Software; (2) sending error reports; and (3) sending anonymized usage data so I may improve the Software. If you are a programmer, you may view the source code of the Software to learn more about the specific information that is sent. You may opt out of sending anonymized usage data, crash reporting and update checks by disabling these features from the Software menu.
The Software automatically communicates with The Cofounders Ltd, Seychelles's server(s) for three purposes: (1) updating the Software; (2) sending error reports; and (3) sending anonymized usage data so I may improve the Software. If you are a programmer, you may view the source code of the Software to learn more about the specific information that is sent. You may opt out of sending anonymized usage data, crash reporting and update checks by disabling these features from the Software menu.

Error Reports. In order to help improve the Software, when the Software encounters certain errors, it will automatically send some information to Alexandru Rosianu's server(s) about the error. Reports include data such as (but not only): information about the crash, your Operating System type, Software version. If you do not want to send crash reports to Alexandru Rosianu, you may opt out by changing your settings in the Software menu.
Error Reports. In order to help improve the Software, when the Software encounters certain errors, it will automatically send some information to The Cofounders Ltd, Seychelles's server(s) about the error. Reports include data such as (but not only): information about the crash, your Operating System type, Software version. If you do not want to send crash reports to The Cofounders Ltd, Seychelles, you may opt out by changing your settings in the Software menu.

Anonymized Usage Data. Alexandru Rosianu collects anonymized data about your usage of the Software to help make it more awesome. If you do not want to send anonymized usage data to Alexandru Rosianu, you may opt out by changing your settings in the Software menu.
Anonymized Usage Data. The Cofounders Ltd, Seychelles collects anonymized data about your usage of the Software to help make it more awesome. If you do not want to send anonymized usage data to The Cofounders Ltd, Seychelles, you may opt out by changing your settings in the Software menu.

Open-Source Notices
Certain components of the Software may be subject to open-source software licenses ("Open-Source Components"), which means any software license approved as open-source licenses by the Open Source Initiative or any substantially similar licenses, including without limitation any license that, as a condition of distribution of the software licensed under such license, requires that the distributor make the software available in source code format. The Software documentation includes copies of the licenses applicable to the Open-Source Components.

To the extent there is conflict between the license terms covering the Open-Source Components and this EULA, the terms of such licenses will apply in lieu of the terms of this EULA. To the extent the terms of the licenses applicable to Open-Source Components prohibit any of the restrictions in this Agreement with respect to such Open-Source Component, such restrictions will not apply to such Open-Source Component.

The Software itself is open source and is available on GitHub at github.com/Aluxian/Facebook-Messenger-Desktop.

Intellectual Property Notices
The Software makes use of WhatsApp Web, which is the property of WhatsApp Inc. The WhatsApp logo, WhatsApp Web app, brand identity and other property rights are WhatsApp Inc's exclusive property and not Alexandru Rosianu's.
The Software makes use of WhatsApp Web, which is the property of WhatsApp Inc. The WhatsApp logo, WhatsApp Web app, brand identity and other property rights are WhatsApp Inc's exclusive property and not The Cofounders Ltd, Seychelles's.

Disclaimers and Limitations on Liability
THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SOFTWARE IS AT YOUR SOLE RISK. Alexandru Rosianu does not warrant that (i) the Software will meet your specific requirements; (ii) the Software is fully compatible with any particular platform; (iii) your use of the Software will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Software will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Software will meet your expectations; or (vi) any errors in the Software will be corrected.
THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SOFTWARE IS AT YOUR SOLE RISK. The Cofounders Ltd, Seychelles does not warrant that (i) the Software will meet your specific requirements; (ii) the Software is fully compatible with any particular platform; (iii) your use of the Software will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Software will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Software will meet your expectations; or (vi) any errors in the Software will be corrected.

YOU EXPRESSLY UNDERSTAND AND AGREE THAT ALEXANDRU ROSIANU SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF ALEXANDRU ROSIANU HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SOFTWARE, including, for example: (i) the use or the inability to use the Software; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Software; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Software; (v) or any other matter relating to the Software.
YOU EXPRESSLY UNDERSTAND AND AGREE THAT THE COFOUNDERS LTD, SEYCHELLES SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF THE COFOUNDERS LTD, SEYCHELLES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SOFTWARE, including, for example: (i) the use or the inability to use the Software; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Software; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Software; (v) or any other matter relating to the Software.

Alexandru Rosianu reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Software (or any part thereof) with or without notice. Alexandru Rosianu shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Software.
The Cofounders Ltd, Seychelles reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Software (or any part thereof) with or without notice. The Cofounders Ltd, Seychelles shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Software.

Miscellanea
The failure of Alexandru Rosianu to exercise or enforce any right or provision of this EULA shall not constitute a waiver of such right or provision.
The failure of The Cofounders Ltd, Seychelles to exercise or enforce any right or provision of this EULA shall not constitute a waiver of such right or provision.

This EULA constitutes the entire agreement between you and Alexandru Rosianu and governs your use of the Software, superseding any prior agreements between you and Alexandru Rosianu (including, but not limited to, any prior versions of the EULA).
This EULA constitutes the entire agreement between you and The Cofounders Ltd, Seychelles and governs your use of the Software, superseding any prior agreements between you and The Cofounders Ltd, Seychelles (including, but not limited to, any prior versions of the EULA).

You agree that this EULA and your use of the Software are governed under Romanian law and any dispute related to the Software must be brought in a tribunal of competent jurisdiction located in or near Bucharest, Romania.

Please send any questions about this EULA to me@aluxian.com.
Please send any questions about this EULA to hello@messengerfordesktop.com.

The last update to this EULA was posted on May 6, 2016.
The last update to this EULA was posted on December 17, 2016.
Binary file removed screenshot.png
Binary file not shown.
40 changes: 20 additions & 20 deletions src/package.json
@@ -1,36 +1,36 @@
{
"name": "messengerfordesktop",
"productName": "Messenger for Desktop",
"version": "2.0.2",
"version": "2.0.4",
"versionChannel": "beta",
"description": "A simple & beautiful desktop client for Facebook Messenger.",
"wvUrl": "https://www.messenger.com/login",
"main": "./scripts/browser/init.js",
"dependencies": {
"app-module-path": "1.1.0",
"babel-runtime": "6.9.2",
"app-module-path": "2.1.0",
"babel-runtime": "6.20.0",
"colors": "1.1.2",
"debug": "2.2.0",
"del": "2.2.1",
"fs-extra-promise": "0.4.0",
"debug": "2.5.2",
"del": "2.2.2",
"fs-extra-promise": "0.4.1",
"keymirror": "0.1.1",
"launchd.plist": "0.0.1",
"lodash.debounce": "4.0.6",
"lodash.debounce": "4.0.8",
"mousetrap": "1.6.0",
"needle": "1.0.0",
"needle": "1.4.3",
"node-uuid": "1.4.7",
"promisify-es6": "1.0.1",
"raven": "0.11.0",
"raven-js": "3.2.1",
"promisify-es6": "1.0.2",
"raven": "1.1.1",
"raven-js": "3.9.1",
"semver": "5.3.0",
"source-map-support": "0.4.2",
"source-map-support": "0.4.8",
"spellchecker": "3.3.1",
"strip-ansi": "3.0.1",
"winreg": "1.2.1",
"yargs": "4.8.1"
"winreg": "1.2.2",
"yargs": "6.5.0"
},
"devDependencies": {
"devtron": "1.2.1"
"devtron": "1.4.0"
},
"optionalDependencies": {
"nodobjc": "2.1.0"
Expand Down Expand Up @@ -59,13 +59,13 @@
"section": "web"
},
"license": "MIT",
"author": "Alexandru Rosianu <me@aluxian.com>",
"authorName": "Alexandru Rosianu",
"copyright": "Copyright © Alexandru Rosianu",
"author": "MessengerForDesktop.com <hello@messengerfordesktop.com>",
"authorName": "MessengerForDesktop.com",
"copyright": "Copyright © MessengerForDesktop.com",
"homepage": "https://messengerfordesktop.com",
"repository": {
"type": "git",
"url": "https://github.com/Aluxian/Facebook-Messenger-Desktop.git"
"url": "https://github.com/Aluxian/Messenger-for-Desktop.git"
},
"virtualUrl": "http://app.messengerfordesktop.com",
"piwik": {
Expand All @@ -75,7 +75,7 @@
"sentry": {
"dsn": "{{& SENTRY_DSN_PRIVATE }}"
},
"electronVersion": "v1.3.5",
"electronVersion": "v1.4.13",
"distrib": "unset",
"portable": false,
"buildNum": 0,
Expand Down
20 changes: 0 additions & 20 deletions src/scripts/browser/components/distro-detector.js

This file was deleted.

9 changes: 0 additions & 9 deletions src/scripts/browser/main.js
Expand Up @@ -3,7 +3,6 @@ import yargs from 'yargs';

import prefs from 'browser/utils/prefs';
import filePaths from 'common/utils/file-paths';
import distroDetector from 'browser/components/distro-detector';
import platform from 'common/utils/platform';

// Handle uncaught exceptions
Expand Down Expand Up @@ -175,7 +174,6 @@ function startRepl () {
async function initAndLaunch () {
try {
await onAppReady();
await detectDistro();
await interceptHttp();
} catch (err) {
logFatal(err);
Expand All @@ -198,13 +196,6 @@ async function onAppReady () {
});
}

async function detectDistro () {
log('detecting distro (linux)');
options.distro = {
isElementaryOS: await distroDetector.elementaryOS()
};
}

async function interceptHttp () {
log('intercepting protocol http');
return new Promise((resolve, reject) => {
Expand Down
20 changes: 0 additions & 20 deletions src/scripts/browser/managers/ipc-listeners-manager.js
@@ -1,7 +1,6 @@
import {app, ipcMain, shell, BrowserWindow, nativeImage} from 'electron';
import EventEmitter from 'events';

import contextMenu from 'browser/menus/context';
import platform from 'common/utils/platform';
import prefs from 'browser/utils/prefs';

Expand All @@ -19,7 +18,6 @@ class IpcListenersManager extends EventEmitter {
*/
set () {
ipcMain.on('notif-count', ::this.onNotifCount);
ipcMain.on('context-menu', ::this.onContextMenu);
ipcMain.on('close-window', ::this.onCloseWindow);
ipcMain.on('open-url', ::this.onOpenUrl);
}
Expand Down Expand Up @@ -52,24 +50,6 @@ class IpcListenersManager extends EventEmitter {
this.mainWindowManager.suffixWindowTitle(count ? ' (' + count + ')' : '');
}

/**
* Called when the 'context-menu' event is received.
*/
onContextMenu (event, options) {
try {
options = JSON.parse(options);
const menu = contextMenu.create(options, this.mainWindowManager.window);
if (menu) {
log('opening context menu');
setTimeout(() => {
menu.popup(this.mainWindowManager.window);
}, 50);
}
} catch (err) {
logError(err);
}
}

/**
* Called when the 'close-window' event is received.
*/
Expand Down
25 changes: 23 additions & 2 deletions src/scripts/browser/managers/main-window-manager.js
Expand Up @@ -4,6 +4,7 @@ import EventEmitter from 'events';

import filePaths from 'common/utils/file-paths';
import platform from 'common/utils/platform';
import contextMenu from 'browser/menus/context';
import prefs from 'browser/utils/prefs';

class MainWindowManager extends EventEmitter {
Expand Down Expand Up @@ -60,6 +61,7 @@ class MainWindowManager extends EventEmitter {
// Bind webContents events to local methods
this.window.webContents.on('new-window', ::this.onNewWindow);
this.window.webContents.on('will-navigate', ::this.onWillNavigate);
this.window.webContents.on('context-menu', ::this.onContextMenu);

// Bind events to local methods
this.window.on('ready-to-show', ::this.onReadyToShow);
Expand Down Expand Up @@ -119,6 +121,25 @@ class MainWindowManager extends EventEmitter {
}
}

/**
* Called when the 'context-menu' event is received.
* TODO: Facebook intercepts this so it doesn't work, but at least it won't crash
*/
onContextMenu (event, params) {
log('on context-menu');
try {
const menu = contextMenu.create(params, this.window);
if (menu) {
log('opening context menu');
setTimeout(() => {
menu.popup(this.window);
}, 50);
}
} catch (err) {
logError(err);
}
}

/**
* Called when the 'ready-to-show' event is emitted.
*/
Expand Down Expand Up @@ -173,8 +194,8 @@ class MainWindowManager extends EventEmitter {
return;
}

// Just hide the window on Darwin and Elementary OS
if (!this.forceClose && (platform.isDarwin || global.options.distro.isElementaryOS)) {
// Just hide the window on Darwin
if (!this.forceClose && platform.isDarwin) {
event.preventDefault();
this.hideWindow();
}
Expand Down
1 change: 1 addition & 0 deletions src/scripts/browser/menus/context.js
Expand Up @@ -30,6 +30,7 @@ function create (params, browserWindow) {
}

// Hunspell doesn't remember these, so skip this item
// TODO: params.isWindows7 is always undefined
if (!platform.isLinux && !params.isWindows7) {
menu.append(new MenuItem({
label: 'Add to Dictionary',
Expand Down
5 changes: 4 additions & 1 deletion src/scripts/browser/menus/expressions/expr-click.js
Expand Up @@ -258,7 +258,10 @@ export const analytics = {
*/
trackEvent: (...args) => {
return function (menuItem, browserWindow) {
piwik.getTracker().trackEvent(...args);
const tracker = piwik.getTracker();
if (tracker) {
tracker.trackEvent(...args);
}
};
}

Expand Down
98 changes: 4 additions & 94 deletions src/scripts/browser/menus/templates/main-help.js
@@ -1,107 +1,17 @@
import $ from 'browser/menus/expressions';

import eventCategories from 'common/analytics/categories';
import eventActions from 'common/analytics/actions';
import eventNames from 'common/analytics/names';

export default {
label: '&Help',
role: 'help',
submenu: [{
label: 'Frequently Asked &Questions',
click: $.all(
$.openUrl('https://whatsie.chat/#faq'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['FAQ Link']
)
)
}, {
label: '&Chat on Gitter',
click: $.all(
$.openUrl('https://gitter.im/Aluxian/Facebook-Messenger-Desktop'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Gitter Chat Link']
)
)
}, {
type: 'separator'
}, {
label: '&Write a Review',
click: $.all(
$.openUrl('https://aluxian.typeform.com/to/Wu3xV0'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Write Review Link']
)
)
}, {
label: '&Suggest a Feature',
click: $.all(
$.openUrl('https://aluxian.typeform.com/to/RZm1ud'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Suggest Feature Link']
)
)
}, {
label: '&Report an Issue',
click: $.all(
$.openUrl('https://aluxian.typeform.com/to/zbEkn3'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Report Issue Link']
)
)
}, {
type: 'separator'
}, {
label: '&Email Developer',
click: $.all(
$.openUrl('mailto:mfd@aluxian.com'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Contact Developer Email Link']
)
)
}, {
label: '&Tweet Developer',
click: $.all(
$.openUrl('https://twitter.com/Aluxian'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Contact Developer Twitter Link']
)
)
}, {
type: 'separator'
}, {
label: 'Donate &PayPal',
label: 'Website',
click: $.all(
$.openUrl('https://short.aluxian.com/donatemfdpaypal'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Donate PayPal Link']
)
$.openUrl('http://messengerfordesktop.com/')
)
}, {
label: 'Donate &Bitcoin',
label: 'Email',
click: $.all(
$.openUrl('https://short.aluxian.com/donatemfdbitcoin'),
$.analytics.trackEvent(
eventCategories['Menu'],
eventActions['Open Link'],
eventNames['Donate Bitcoin Link']
)
$.openUrl('mailto:hello@messengerfordesktop.com'),
)
}]
};
2 changes: 1 addition & 1 deletion src/scripts/browser/menus/templates/main-view.js
Expand Up @@ -34,7 +34,7 @@ export default {
role: 'togglefullscreen'
}, {
label: 'Toggle &Developer Tools',
accelerator: 'Alt+CmdOrCtrl+I',
accelerator: platform.isNonDarwin ? 'Ctrl+Shift+Alt+I' : 'Alt+Cmd+I',
needsWindow: true,
click: $.toggleDevTools()
}, {
Expand Down
Expand Up @@ -25,7 +25,6 @@ export default {
}, {
type: 'checkbox',
label: 'Show in &Tray',
enabled: !global.options.distro.isElementaryOS,
click: $.all(
$.showInTray($.key('checked')),
$.setPref('show-tray', $.key('checked'))
Expand Down
1 change: 0 additions & 1 deletion src/scripts/renderer/preload/index.js
Expand Up @@ -3,5 +3,4 @@ const initPath = require('path').join(appPath, 'scripts', 'renderer', 'init.js')
require(initPath).inject('webview');

require('renderer/preload/events');
require('renderer/preload/listeners');
require('renderer/preload/notification');
11 changes: 0 additions & 11 deletions src/scripts/renderer/preload/listeners.js

This file was deleted.

1 change: 1 addition & 0 deletions tasks/pack.coffee
Expand Up @@ -10,6 +10,7 @@ del = require 'del'
gulp = require 'gulp'
zip = require 'gulp-zip'

utils = require './utils'
{applyPromise, applySpawn, applyIf, updateManifest, platform} = require './utils'
winInstaller = require 'electron-windows-installer'
manifest = require '../src/package.json'
Expand Down
2 changes: 2 additions & 0 deletions tasks/publish.coffee
Expand Up @@ -129,6 +129,8 @@ gulp.task 'publish:github', ->
.pipe request.put opts, (err, res, body) ->
if not err
console.log body if args.verbose
if JSON.stringify(body).toLowerCase().indexOf('success') is -1
err = new Error('bintray upload failed')
cb(err)

async.series tasks, (err) ->
Expand Down