Commit graph

4049 commits

Author SHA1 Message Date
Daniel Gasienica
c7a502e2e1 Standalone Protocol Buffers (#2347)
This change introduces a standalone module for our protocol buffers as CommonJS
module incl. TypeScript type definitions.

**Rationale:** In order to exclude voice messages from the media gallery,
I needed to get a reference of `AttachmentPointer.Flags.VOICE_MESSAGE`.
Currently, the only way is to use `textsecure.protobuf` which is only accessible
as a global.

* [x] Add `Attachment.isVoiceMessage` as a way to test standalone
      Protocol Buffers.
* [x] Add latest version of `protobufjs`. Leave existing version in place to
      keep this change less disruptive and since it’s been stable. Hopefully we
      can move over to standalone protobufs over time to improve modularity and
      maybe even startup performance.
* [x] Add `yarn build-protobuf` command to compile `SignalService.proto` into
      standalone CommonJS module and accompanying TypeScript definitions.
      ~~Included compiled output for ease of use for other developers.
      Can revisit if changes become more frequent.~~
      Now built as part of `yarn grunt`.
* [x] Update style guide references and make sure they work!
* [x] ⚠️ Change type definition for `Attachment::file` to include `null` as
      that’s apparently a valid value for legacy Android voice messages.
2018-05-07 21:57:23 -04:00
Daniel Gasienica
ba4d8952c6 Revert "Use protocol buffer module for libtextsecure"
This does not work with `ArrayBuffer` out of the box and will need to be
investigated and tested more before switching.

Some APIs also seemed to have changed:
- Before (OOP): `new textsecure.protobuf.WebSocketMessage(…).encode();`
- After (functional):
  ```
  textsecure.protobuf.WebSocketMessage.encode(
    new textsecure.protobuf.WebSocketMessage(…)
  );
  ```

This reverts commit d758119d9de4f99742ea941e86180b1d600c2f22.
2018-05-07 21:53:41 -04:00
Daniel Gasienica
60077d0b7b Use protocol buffer module for libtextsecure 2018-05-07 21:53:40 -04:00
Daniel Gasienica
daa4a3d63f Compile all protocol buffers 2018-05-07 21:53:40 -04:00
Daniel Gasienica
c8e1c29b16 Improve naming 2018-05-07 21:53:40 -04:00
Daniel Gasienica
4e39882afc Compile protocol buffers first 2018-05-07 21:53:40 -04:00
Daniel Gasienica
2810f26461 Remove unused WhisperTextProtocol.proto 2018-05-07 21:53:40 -04:00
Daniel Gasienica
086c64deb8 Add yarn clean-protobuf command 2018-05-07 21:53:40 -04:00
Daniel Gasienica
55f85465c6 Remove generated protobuf as part of yarn clean-transpile 2018-05-07 21:53:40 -04:00
Daniel Gasienica
cb09da0f63 Run all build steps in CI 2018-05-07 21:53:40 -04:00
Daniel Gasienica
15759f0db5 Normalize package naming 2018-05-07 21:53:40 -04:00
Daniel Gasienica
f88ebdf8b7 Compile protocol buffers as part of yarn grunt dev 2018-05-07 21:53:40 -04:00
Daniel Gasienica
c5d6e4a602 Gruntfile: Remove dependency on npm 2018-05-07 21:53:40 -04:00
Daniel Gasienica
ce8db96069 Gruntfile: 🔤-ize watch targets 2018-05-07 21:53:39 -04:00
Daniel Gasienica
38f3ad6518 Use SignalService vs textsecure for protobuf 2018-05-07 21:53:39 -04:00
Daniel Gasienica
6589247750 Expose SignalService to style guide 2018-05-07 21:53:39 -04:00
Daniel Gasienica
86346ee239 Expose Signal.Types.Attachment to style guide 2018-05-07 21:53:39 -04:00
Daniel Gasienica
a0ddab669b Organize globals 2018-05-07 21:53:39 -04:00
Daniel Gasienica
a86056630f Use Attachment.isVoiceMessage 2018-05-07 21:53:39 -04:00
Daniel Gasienica
5789b3eb75 Add Attachment.isVoiceMessage 2018-05-07 21:53:39 -04:00
Daniel Gasienica
2d95745d56 Add yarn build-protobuf command 2018-05-07 21:53:39 -04:00
Daniel Gasienica
58399549c3 Add protobufjs dependency 2018-05-07 21:53:39 -04:00
Daniel Gasienica
fa4c3fda2b Extract common MIME types 2018-05-07 21:53:39 -04:00
Daniel Gasienica
8a4f062120 Add MIME.APPLICATION_OCTET_STREAM 2018-05-07 21:53:39 -04:00
Nick Weingartner
c8be066391 Update hover color for horizontal dots in android dark theme 2018-05-07 18:37:12 -07:00
Daniel Gasienica
bad4681ade
Prettier: Format CSS, SCSS, and JSON (#2339)
Expand auto-formatting to CSS, SCSS, and JSON:

*   [x] Ignore symlinked SCSS file from `components`.
*   [x] Ignore package manifest files, `package.json` and `bower.json`,
        as they are already formatted by their package manager.
*   [x] Skip locale JSON files (already managed by Transifex tools).
*   [x] Format all stylesheets.
2018-05-07 18:44:37 -04:00
Daniel Gasienica
381290c55f Adjust tsconfig.json formatting for Prettier 2018-05-04 17:34:50 -04:00
Daniel Gasienica
9a74addc61 Prepend comments for infix comments in argument list 2018-05-04 17:22:00 -04:00
Daniel Gasienica
84f69f482f Prettier: Format JSON configuration files 2018-05-04 16:32:08 -04:00
Daniel Gasienica
557693e14c Prettier: Format all stylesheets 2018-05-04 16:32:08 -04:00
Daniel Gasienica
8ee250d37e Prettier: Format CSS, SCSS, and JSON 2018-05-04 16:32:08 -04:00
Daniel Gasienica
8ef5d87d6b Prettier: Update ignore list 2018-05-04 16:32:08 -04:00
Daniel Gasienica
0188abd9f4
Windows 7 Notifications: Disable Grouping (#2338)
Grouping of notifications is not supported on Windows 7 due this bug:
https://github.com/electron/electron/issues/11189

*   [x] Disable notification grouping (using `tag`) on Windows 7.
*   [x] Log notification grouping support.
*   [x] **Infrastructure:** Use 2-space indentation for all files
        (better integration with Prettier.)
2018-05-04 15:58:53 -04:00
Daniel Gasienica
0121dc7a5a Log notification grouping support 2018-05-04 15:37:46 -04:00
Daniel Gasienica
c2407c8906 Disable notification grouping on Windows 7 2018-05-04 15:37:46 -04:00
Daniel Gasienica
5d230d3778 Add Settings.isNotificationGroupingSupported
See: https://github.com/electron/electron/issues/11189
2018-05-04 15:37:46 -04:00
Daniel Gasienica
211d54451b Use 2 spaces for indentation
Enable this globally now that we use Prettier.
2018-05-04 15:37:46 -04:00
Daniel Gasienica
f0896b53bc
Improve Logging For Disappearing Messages (#2332)
*   [x] Log updates to last message (message preview) in conversation list.
        Should help debug cases such as:
        https://github.com/signalapp/Signal-Desktop/issues/2323
*   [x] Use structured logs:
    *   [x] Use static prefix (easier to search)
    *   [x] Capitalize log message and use present tense
            (consistent with Git logging conventions).
    *   [x] Attach metadata as JSON serializable object. This has the benefit
            that all fields are named and can be searched for.
*   [x] Remove newlines from group IDs during redaction so they don’t break up
        log lines.
2018-05-03 14:06:08 -04:00
Daniel Gasienica
13f1ec2e51 Use structured logs
Easier to search for static prefix and fields are named.
2018-05-03 13:24:39 -04:00
Daniel Gasienica
0ce56eed87 Use structured log 2018-05-03 13:24:39 -04:00
Daniel Gasienica
5c8f734e67 Remove newlines from group IDs 2018-05-03 13:24:39 -04:00
Daniel Gasienica
ae7d6aa900 Log Conversation::updateLastMessage 2018-05-03 13:24:38 -04:00
Daniel Gasienica
1ea21ae69c
Use Native Notifications on Windows 7 (#2330)
*   [x] Test notifications on Windows 7.
*   [x] Switch to Electron native notifications on Window 7.
*   [x] Disable **Play audio notification** setting on Windows 7 since they are
        not natively supported.
*   [x] Improve logging for notification status.
*   [x] Investigate whether Electron notification support choosing custom sound
        on Windows. Answer: no.
        Source: 82329124ff/docs/api/notification.md (new-notificationoptions-experimental)
*   [x] Remove `node-notifier`.
*   [x] **Infrastructure:** Port `OS` and `types/Settings` to TypeScript.
*   [x] Add support for specifying minimum Windows version with
        `OS.isWindows(minVersion?: string)`.
*   [x] OT: While testing on Windows 7, I confirmed spell checking worked
        for me.
2018-05-03 13:23:27 -04:00
Daniel Gasienica
ecf23b6b2e Disable audio notifications on Windows 7 and lower 2018-05-02 20:01:57 -04:00
Daniel Gasienica
a102016ed8 Port Settings and OS to TypeScript 2018-05-02 20:01:57 -04:00
Daniel Gasienica
38b23c6627 Add @types/semver 2018-05-02 20:01:56 -04:00
Daniel Gasienica
0b4c60c272 Add @types/sinon 2018-05-02 19:58:33 -04:00
Daniel Gasienica
e3191c9017 Remove node-notifier 2018-05-02 19:58:33 -04:00
Daniel Gasienica
c591c3ca55 Use native notifications on all platforms 2018-05-02 19:58:33 -04:00
Daniel Gasienica
4e6a03a91c Log whether OS supports native notifications 2018-05-02 19:18:34 -04:00