Commit Graph

4899 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: https://github.com/electron/electron/blob/82329124ffcb2012d101c79236e82fbe6ba79c36/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