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.
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.
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.
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.)
* [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.
* [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.