Commit graph

3954 commits

Author SHA1 Message Date
Scott Nonnenberg
256b87aa7a
Refactor newly-added ClearDataView in settings_view.js 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
ef041b29d0
Remove scrollbar when placeholder is showning when in iOS theme 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
b01b939d15
Clear conversation list when the conversations collection resets 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
c760fe29ac
Fix broken storeNames.forEach, since it's not an array 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
a728c9efbf
Remove all mention of obsolete safety-number-approval setting 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
26c273618a
Refactor: db tasks to database.js, log delete to modules/logs.js 2018-03-14 14:42:15 -07:00
Scott Nonnenberg
3527740598
Format updates to js/database.js 2018-03-14 14:42:14 -07:00
Scott Nonnenberg
3a151393c5
Move wrapDeferred from background.js to preload.js
It's necessary anywhere that will have to deal with Deferreds.
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
a824e2b42d
Start moving towards semantic CSS class names 2018-03-14 14:42:14 -07:00
Scott Nonnenberg
2373840df8
Use proper logging if error pops when deleting all logs 2018-03-14 14:42:14 -07:00
Scott Nonnenberg
12d9d41548
Move to better database deletion call; clears in-memory caches 2018-03-14 14:42:14 -07:00
Scott Nonnenberg
c81d3f5c0b
Allow ConversationController.load() to be called more than once 2018-03-14 14:42:14 -07:00
Scott Nonnenberg
2ffabdcdd9
Delete data screen: Remove scrollbar when no convo selected
Turns out that the welcome screen had a min-height which caused weird
things when you take the window down to minimum height. It looked
particularly bad with the new full-screen delete data confirmation
screen.
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
383e02edc4
New section in settings screen, full-screen 'are you sure?' 2018-03-14 14:42:13 -07:00
Scott Nonnenberg
928906e0f3
Enable deletion of all logs on disk via IPC 2018-03-14 14:42:13 -07:00
Scott Nonnenberg
198f356792
Return number (not id) in getNumber, remove unnecessary comment 2018-03-14 14:42:13 -07:00
Scott Nonnenberg
9acb189650
Remove config after unlink, clear db when linked with new number 2018-03-14 14:42:13 -07:00
Scott Nonnenberg
fd056e1b4c
Add nsp to dev dependencies and to travis and CI scripts 2018-03-14 14:42:13 -07:00
Scott Nonnenberg
c8555974e4
Delete data on windows uninstall 2018-03-14 14:37:13 -07:00
Scott Nonnenberg
6e86bf238e Disable all webviews, since we never intend to create them (#2114) 2018-03-14 14:23:24 -07:00
Daniel Gasienica
8bd37b7f8d Merge #2110 from gasi: Log Uncaught Errors & Unhandled Promise Rejections In Main Process
- [x] Add `electron-unhandled` dependency:
  - ~~Ensures errors are normalized~~ (disabled to prevent serializing non-errors that are thrown and leaking information)
  - Distinguishes between main and renderer processes
  - Allows suppression of error dialog
- [x] Log uncaught errors and unhandled promise rejections in main process
- [x] Tested using unguarded `throw new TyperError(…)` and `Promise.reject(…)` in `setTimeout` after `app` `ready` event.
- [x] Extract `Privacy` module that centralizes how we redact sensitive information such as phone numbers, group IDs, and user file paths.
- [x] Add `eslint-plugin-mocha` to disallow exclusive tests using `*.only`.

Fixes #2019.
2018-03-08 18:05:22 -05:00
Daniel Gasienica
8a1bff0fad Remove unused require 2018-03-08 17:50:10 -05:00
Daniel Gasienica
c317f34f67 Remove ensure-error and clean-error dependency
It potentially could leak information from serialized non-errors that are thrown
due to `util.inspect`.
2018-03-08 17:45:55 -05:00
Daniel Gasienica
c7305db8c8 Disallow exclusive tests, i.e. .only 2018-03-08 16:23:51 -05:00
Daniel Gasienica
96442967cc Add eslint-plugin-mocha
Allows us to set various lint rules for our tests.
2018-03-08 16:23:51 -05:00
Daniel Gasienica
ef40dfa841 Use forked electron-unhandled
Omits use of `ensure-error` for privacy.

Before:
`Uncaught error or unhandled promise rejection: NonError: { private: true }`

After:
`Uncaught error or unhandled promise rejection: [object Object]`

Tested using:

```
setTimeout(() => {
  throw new Error('sync: booooom!');
}, 5000);

setTimeout(() => {
  Promise.reject(new Error('async: promise'))
}, 10000);

setTimeout(() => {
  Promise.reject({private: true});
}, 15000);
```
2018-03-08 16:23:51 -05:00
Daniel Gasienica
43b47fd349 Avoid ensure-error for privacy reasons
Example:

```
> node
> const nonError = {foo: 'i-am-private'};
undefined

// before
> util.inspect(nonError);
'{ foo: \'i-am-private\' }'

// after
> nonError.toString()
'[object Object]'
>
```
2018-03-08 16:23:51 -05:00
Daniel Gasienica
ea07915e6b Escape special characters in file path 2018-03-08 16:23:51 -05:00
Daniel Gasienica
44b81f68dd Remove privacy redaction from Errors.toLogFormat 2018-03-08 16:23:51 -05:00
Daniel Gasienica
e71246a9e3 Add tests for Privacy module 2018-03-08 16:23:51 -05:00
Daniel Gasienica
49e0850fb2 Extract Privacy module
Centralizes how we redact sensitive information.
2018-03-08 16:23:51 -05:00
Daniel Gasienica
0c317c5498 Redact all private information from logs 2018-03-08 16:23:04 -05:00
Daniel Gasienica
0e2f8a8a06 Extract Errors.redactSensitivePaths 2018-03-08 16:22:38 -05:00
Daniel Gasienica
33bbb12626 Use Errors.toLogFormat in backgrounds.js 2018-03-08 16:22:38 -05:00
Daniel Gasienica
289063b24b Expose Signal.Types.Errors 2018-03-08 16:22:38 -05:00
Daniel Gasienica
3dffdc3f0b Rename Errors to GlobalErrors for clarity 2018-03-08 16:22:38 -05:00
Daniel Gasienica
2575196617 Extract Errors.addGlobalHandler procedure 2018-03-08 16:22:38 -05:00
Daniel Gasienica
be3e4d86c2 Add Errors.toLogFormat
Allows errors to be formatted and sanitized for logging. Removes sensitive paths
such as the app root directory.

Ideally, this module would be called singular `Error` but that is already a
global name. Using `Errors` plural is  similar to Java convention for utilities
such as `Arrays`, `Collections`, `Files`, etc. See:
https://stackoverflow.com/a/11673838
2018-03-08 16:22:38 -05:00
Daniel Gasienica
77e7e9ad4d Add ensure-error dependency 2018-03-08 16:22:38 -05:00
Daniel Gasienica
522b88d0d9 Reduce scope of disabled more/no-then rule 2018-03-08 16:22:37 -05:00
Daniel Gasienica
18785be639 Log uncaught errors / promise rejections in main process
See #2019.
2018-03-08 16:22:37 -05:00
Daniel Gasienica
9e5fec1d81 Add electron-unhandled dependency 2018-03-08 16:22:37 -05:00
Daniel Gasienica
b2a252aa13 Merge #2112 from gasi: Move Debug Logs From GitHub Gists to debuglogs.org
In anticipation of GitHub’s deprecation of anonymous gists, we are moving our debug logs to https://debuglogs.org.

- [x] Publish debug logs to debuglogs.org.
- [x] Rename **Help > File a Bug** to **Report an Issue** for consistency with our debug log view as well as other apps such as Google Chrome.
- [x] Quickfix: Ensure `window.isFocused` always returns a boolean.

**Sample log:** https://debuglogs.org/0272bdd35288ed839ede88938a5290011150d42b56599efb5dd93ac80a2ac915
2018-03-08 16:21:30 -05:00
Daniel Gasienica
b049412bfd Document workaround for got FormData bug
See: https://github.com/sindresorhus/got/pull/466
2018-03-08 16:21:27 -05:00
Daniel Gasienica
710701d0fc Document why key comes first 2018-03-08 16:21:27 -05:00
Daniel Gasienica
0810ea6909 Remove superagent dependency
We’ve replaced it with more modern and Node.js based `got`:
https://www.npmjs.com/package/got
2018-03-08 16:21:27 -05:00
Daniel Gasienica
8b71155e7c Replace superagent with got for debug logs 2018-03-08 16:21:27 -05:00
Daniel Gasienica
52f7de6a10 Add debuglogs module 2018-03-08 16:21:27 -05:00
Daniel Gasienica
04afb6a318 Add form-data dependency
Used for upload debug logs to S3.
2018-03-08 16:21:27 -05:00
Daniel Gasienica
b4c6f6733b Add got dependency
The plan is to use this for our future HTTP needs as it is:
- modern
- promise based
- popular
- likely to support custom certificate authorities (CAs)

Chosen over the following alternatives:
- superagent (older, promises added later, potential lack of custom CA support)
- axios (no team experience with it; less popular than `got`)
- request (older, heavy-weight, promises not native)
- jQuery (old, trying to move away from jQuery altogether and move towards
  declarative UIs)
- `fetch` (too low-level, no native timeout support)
2018-03-08 16:21:27 -05:00