Commit Graph

3473 Commits (3841154295598021a61d3b4bacab7fb88eccd380)
 

Author SHA1 Message Date
Daniel Gasienica 3841154295
Relax Node.js version requirements (#2203) 7 years ago
AJ Jordan 81ac6a9031
Don't lock the Node version so strictly
This is particularly problematic because Yarn apparently
errors (not warns) if the engine doesn't match.
7 years ago
Daniel Gasienica f6d0c1f171
Fix contact overwrite in search view (#2191)
When typing in an existing phone number into the search, clicking on it even
though there exists an existing contact will reinitialize that contact’s
database entry. This reinitialization clears that contact’s conversation’s name,
unread count, etc.

This change ensures we always reuse existing conversations using
`ConversationController.getOrCreateAndWait` when starting new conversations in
the search view.
7 years ago
Daniel Gasienica b24dad23ea Fix search view conversation reset bug
When searching for an existing conversation using a phone number, it’s possible
to click on ‘Start conversation…’ and have that new dummy entry overwrite the
existing conversation.

This change ensures we are always showing a dummy conversation model that is not
part of the conversation collection. Adding it is always idempotent as it goes
through `getOrCreateAndWait`.
7 years ago
Daniel Gasienica d6ea158e46 Avoid `dangerouslyCreateAndAdd` in `MessageView` test 7 years ago
Daniel Gasienica 08f6886f3e Strengthen precondition of `ConversationController.getOrCreate` 7 years ago
Daniel Gasienica 83c979fb84 Rename `createTemporary` to `dangerouslyCreateAndAdd`
Class: `ConversationController`.

This function should not be used in application code as it creates potentially
invalid `Conversation` instances in our global conversation collection. We keep
making it available for testing purposes.
7 years ago
Scott Nonnenberg 4e6d1e128f
Update to electron 1.8.4 (#2186) 7 years ago
Daniel Gasienica a3d43a56a7
Show Optimization Message During Database Migration (#2165) 7 years ago
Daniel Gasienica 90de9d85a3 Remove type annotation 7 years ago
Daniel Gasienica 4c10fcfa17 Reduce threshold until optimization appears to 1s 7 years ago
Daniel Gasienica dede0f1e25 Improve user messaging during initialization
- We first show a localized loading message.
- If initialization takes longer than a certain threshold, we show a different
  ‘optimization’ message.
- If initialization is below the threshold the message change is canceled right
  before the regular loading screen.
7 years ago
Daniel Gasienica add19aa732 Add initialization view 7 years ago
Daniel Gasienica 1c4b7eb01c Make namespace generation clearer
Let’s make it clear that this is where we initialize our namespaces to avoid
proliferation of various initialization points now that we support CommonJS.
7 years ago
Daniel Gasienica fb4445cbd6 Run background script after DOM is parsed
This allows us to leverage the existing loading screen for messaging without
having to explicitly wait for DOM load event.
7 years ago
Daniel Gasienica d35e365507
Upgrade Message Schema (Data) in Background (#2162)
In order to avoid incurring long startup times, we migrate message schema (data) in the background using `window.requestIdleCallback` API. The migration moves attachment data from IndexedDB to disk and reduces load on our database which may cause data loss (#1589).

On my development profile, this migration reduced the IndexedDB directory from 33.4MB to 4.7MB.
7 years ago
Daniel Gasienica f253fef5c6 Explicitly make `onDestroy` have `void` return type 7 years ago
Daniel Gasienica 9b112489cd Upgrade 2 messages every 30 seconds
This results in 4 messages per minute or 240 messages per hour.
7 years ago
Daniel Gasienica 7c2fde4433 Add `Signal.Workflow` namespace 7 years ago
Daniel Gasienica 4a7cc22de3 🎨 Use `window.requestIdleCallback` 7 years ago
Daniel Gasienica 5c9f18e1ae Wire up background message migration 7 years ago
Daniel Gasienica 4651cbc2eb Improve ``Message.upgradeSchema` preconditions 7 years ago
Daniel Gasienica ca28f3030b Add `MessageMigration` module 7 years ago
Daniel Gasienica 8e762797c0 Remove attachment validation
Turns out `fileName` is optional and maybe even `contentType`. We should revisit
this at a later point in time.
7 years ago
Daniel Gasienica 0b7ce39ff7 Remove `desktop-idle` dependency
We’d rather not rely on a native dependency for this functionality.
7 years ago
Daniel Gasienica 09ee2d4ea2 Switch to using `requestIdleCallback`
Example:
https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API#Example
7 years ago
Daniel Gasienica d13668544d Rename `IdleListener` to `IdleDetector` 7 years ago
Daniel Gasienica 92ace67846 Start idle listener on startup 7 years ago
Daniel Gasienica 3140e4d66d Implement basic `IdleListener` 7 years ago
Daniel Gasienica ca2afdc202 Add `desktop-idle` dependency 7 years ago
Daniel Gasienica 2e9f3bcf8d Migrate attachments from IndexedDB to file system (#2129)
- [x] Generate random file names.
- [x] Generate random file paths that prevent too many files per folder using
      fan-out.
- [x] Create attachment directory in user data folder.
- [x] Investigate operating system file indexing on:
  - [x] Windows: Confirmed that `AppData` is not indexed by default.
  - [x] macOS: Confirmed that `~/Library` files are not indexed by default.
        Searching system files using Spotlight requires multi-step opt-in:
        https://lifehacker.com/5711409/how-to-search-for-hidden-packaged-and-system-files-in-os-x.
        More info https://apple.stackexchange.com/a/92785.
        Added `.noindex` suffix to `attachments` folder.
  - [x] Linux: n/a
- [x] Save incoming attachment files to disk
  - [x] On received
  - [x] On sync
- [x] Save outgoing attachments files to disk before sending
- [x] Display attachments either from disk or memory in attachment view.
      Be robust to multiple render passes.
  - [x] Test that missing attachment on disk doesn’t break app.
        Behavior: Message is displayed without attachment.
- [x] Delete attachment files when message is deleted.

Relates to #1589.
7 years ago
Daniel Gasienica 7eaa6ef2f7 Remove `string-to-arraybuffer` dependency
The function is simple enough to inline and this allows us to reduce our
dependencies surface area.
7 years ago
Daniel Gasienica 0c06fff47b Wire up `Message` / `Attachment` migration functions on startup
Makes `migrationContext` obsolete.
7 years ago
Daniel Gasienica 867f73b80a Use double quotes for identifiers in error messages 7 years ago
Daniel Gasienica 06e7bca276 Use new `stringToArrayBuffer` function 7 years ago
Daniel Gasienica 70cdd2b350 Add `stringToArrayBuffer` utility
This way we can avoid an extra dependency.
7 years ago
Daniel Gasienica 232e906650 Remove `tmp` as dev dependency 7 years ago
Daniel Gasienica 2ad0fd7db6 Use Lodash `omit` instead of `delete` 7 years ago
Daniel Gasienica ef2be2cf5f Make `MessageView::onUnload` synchronous
Our tests rely on that.
7 years ago
Daniel Gasienica add5d4ab0b Prevent macOS Spotlight indexing of attachments folder
See: https://apple.stackexchange.com/a/92785
7 years ago
Daniel Gasienica b3251a8de2 Prevent potential NPE 7 years ago
Daniel Gasienica 9d25aa4e43 Delete attachment files on disk upon message delete 7 years ago
Daniel Gasienica 279b3f81c7 Add `Attachment.deleteData` 7 years ago
Daniel Gasienica 10afcf1bb0 Add `Attachments.deleteData` 7 years ago
Daniel Gasienica 9b636a1885 Add test for `Attachments.readData` 7 years ago
Daniel Gasienica f6f0359a61 Use `assert.deepEqual` instead of Lodash `isEqual` 7 years ago
Daniel Gasienica 833a203559 Remove Vim modeline 7 years ago
Daniel Gasienica aba261122f 🎨 Use `camelCase` for mutable variable 7 years ago
Daniel Gasienica e1c1b1aa72 Load attachment data before rendering
Prevent double rendering of attachments by multiple entries into
`MessageView::render` using promises.
7 years ago
Daniel Gasienica 97e3b49a36 Whitelist `js/views/message_view.js` for ESLint 7 years ago