Commit Graph

680 Commits (53e7e1be3a8438d74437e78a5deb3e14fcc0da17)

Author SHA1 Message Date
lilia f095a1583e Fetch profiles whenever conversations are opened
For a group, fetch everyone's profile.

// FREEBIE
8 years ago
Scott Nonnenberg 3fbd1ab618 Use error.stack instead of error for console log
Chrome/V8 give you the error name, message and callstack at that
property, where toString() gives you [object NavigatorUserMediaError]

FREEBIE
8 years ago
Scott Nonnenberg 98f88607a0 Remove recorder UI when we fail to 'getUserMedia'
FREEBIE
8 years ago
Scott Nonnenberg 24174312b9 Fix: Show attachment views; they trigger update syncrhonously
FREEBIE
8 years ago
Scott Nonnenberg 2b5e56f6be Use setElement to ensure that re-parented views listen for events
FREEBIE
8 years ago
Scott Nonnenberg 40651f44ab
MessageView.appendAttachmentView: Remove from proper parent
FREEBIE
8 years ago
Scott Nonnenberg f602ac462f A little cleanup in ConversationView.resetLastSeenIndicator
FREEBIE
8 years ago
Ikarulus 1021f835fe changes due to feedback 8 years ago
Ikarulus 068cf5092c fix typo 8 years ago
Ikarulus ec3278ca3a add message length warning for android clients 8 years ago
Scott Nonnenberg f38d8eb4ae Fix: Ensure that attachments are always rendered
Because we only attach AttachmentViews to the DOM when they fire their
'update' event, we were subject to a race condition. If that event fired
after the final Message.render(), then it would be properly attached to
the final DOM node. If it fired early, it would end up missing from
the visible DOM entirely, attached to the old, discarded version of
the message.

This change updates our handling of a second call to loadAttachments().
Instead of bailing out if we've been called before, we attempt to
re-add our child AttachmentViews to the current DOM. But only if the
'update' event has been fired, and if their current parent node is not
what is in the DOM.

FREEBIE
8 years ago
Scott Nonnenberg da8d49b5ed ConversationView.markRead: Mark all messages read when at bottom
To handle the same 'not quite at the bottom' case that our 30px buffer
gives us for marking messages read, we use the same atBottom() method to
determine whether we should mark everything unread. Saves the effort and
potential missed messages (due to partial pixels, etc.).

FREEBIE
8 years ago
Scott Nonnenberg bb483474a3 Fix: Show hourglass on incoming disappearing messages once read
FREEBIE
8 years ago
Scott Nonnenberg 9a09e7a16b TimerView: Update only as often as 500ms
FREEBIE
8 years ago
Scott Nonnenberg 5351b60365 TimerView: Remove some unused bits of code
- initialize doesn't need to call update because
  MessageView.renderExpiring() calls it immediately
- we don't need the className because that's already present on
  the el it attaches to, part of the MessageView's template.

FREEBIE
8 years ago
Scott Nonnenberg fb7e7cf34c TimerView: don't continue to update after expiration
FREEBIE
8 years ago
Scott Nonnenberg 0c2c36c11a loadMoreMessages: Fix broken reference to this.view.outerHeight
:0/

FREEBIE
8 years ago
Ikarulus ab5489baa0 fixed #1163, dark theme flaw 8 years ago
Scott Nonnenberg ec22445f75 Bulletproofing of markRead and findNewestVisibleUnread
FREEBIE
8 years ago
Scott Nonnenberg 1775e97bcd Add comment and fine-tune last-seen indicator when not focused
FREEBIE
8 years ago
Scott Nonnenberg 672a517b73 Preserve lastSeenIndicator location when not focused
Also, a couple name changes of ConversationView methods to better
reflect what they do. update -> reset, since the method is destructive.

FREEBIE
8 years ago
Scott Nonnenberg 944ae296eb Prevent 'mark read on scroll' during fetches
FREEBIE
8 years ago
Scott Nonnenberg b60b20bde4 Mark messages read only when visible, on receipt, focus, scroll
- Only mark messages read when scrolling if in focus and visible
- Remove last seen indicator when scrolling to the bottom with scroll
  down button
- Update last seen indicator when we don't already have one and we're
  scrolled up.

FREEBIE
8 years ago
Scott Nonnenberg 9a0a87ab40 Last seen indicator: dismissed only on open and send
It can be moved if you're not scrolled to the bottom of of the window
or the window doesn't have focus when a new message comes in. Other than
that, it marches up the window until you close and reopen the
conversation, or send a message.

Note that we do NOT mark messages as read if they come in when you are
scrolled up. But we do mark the entire conversation as read if you
switch away from the app and back.

FREEBIE
8 years ago
Scott Nonnenberg eb1a4b3ac6 loadAttachments: Handle the zero -> some attachments case
FREEBIE
8 years ago
Scott Nonnenberg 0e1b534d3c Make MessageView.render() idempotent
Re-renders happen when we re-fetch messages from the database, and our
previous technique for loading attachments resulted in a new attachment
view added for every call to render()

This change ensures that a second call to render() does not add any more
attachment views.

FREEBIE
8 years ago
Scott Nonnenberg 25ebcc3131 Fix broken reference to i18n string 'mediaMessage'
FREEBIE
8 years ago
Scott Nonnenberg 0b6d5de753 Update the scroll position when 'fetch more messages' is complete
FREEBIE
8 years ago
Scott Nonnenberg 13a91eece8 MessageListView.measureScrollPosition: reuse variables 8 years ago
Scott Nonnenberg c5530b7235 Increase wiggle room to 30 px, which should ensure text cut off
FREEBIE
8 years ago
Scott Nonnenberg 84397a2ef4 20px at bottom of conversation considered 'at the bottom'
So users who are 'close enough' at the bottom of the conversation won't
get marooned in history.

FREEBIE
8 years ago
Scott Nonnenberg 09791ab7d9 Make last seen indicator more stable, with less forced removal
FREEBIE
8 years ago
Scott Nonnenberg c3dc9732ef Fix: Don't scroll to last seen indicator on focus
FREEBIE
8 years ago
Scott Nonnenberg 9de384f3b8 Reset last seen indicator timing on focus of window
FREEBIE
8 years ago
Scott Nonnenberg 01918049b4 Keep last seen indicator around for five seconds
Helps calm the user experience a little more, makes it easier to
understand what's happening when messages are coming in quickly.

FREEBIE
8 years ago
Scott Nonnenberg 4e9e811d12 Last seen indicator: Keep scroll position when window loses focus
FREEBIE
8 years ago
Scott Nonnenberg fdf04f6229 Ensure that we never show last seen indicator if count is zero
FREEBIE
8 years ago
Scott Nonnenberg e023c58883 Update last seen indicator even if window doesn't have focus
FREEBIE
8 years ago
lilia 72019eb79c Reuse a variable
FREEBIE
8 years ago
lilia 176339ffe6 Add log to see if we ever fetch while fetching
// FREEBIE
8 years ago
lilia 017bb56cca Fix some corner casese with last seen indicator
* Remove increment behavior
* Dismiss when new messages arrive but the window is focused
* Update the indicator when window becomes focused.

// FREEBIE
8 years ago
Scott Nonnenberg bb468e7b01 Wait for scroll before deciding whether to add scroll down button
FREEBIE
8 years ago
Scott Nonnenberg 8b4402e8a5 Only show scroll down button if we're not at bottom of convo
FREEBIE
8 years ago
Scott Nonnenberg 4c7bfbe9ff Scroll down button: when scrolled up, or new non-visible message
FREEBIE
8 years ago
Scott Nonnenberg 3cfac58d78 Eliminate all console errors during test run
FREEBIE
8 years ago
Scott Nonnenberg 3e01d78c89 MessageListView remove unused reset-scroll event
FREEBIE
8 years ago
Scott Nonnenberg 73f2a4a0fb Simplify MessageListView.resetScrollPosition: no translation math
FREEBIE
8 years ago
Scott Nonnenberg bfdb8254a4 Scroll on new message only if we were already at bottom
FREEBIE
8 years ago
Scott Nonnenberg fed26c36ca Add new Last Seen Indicator with unread count, scroll to it
This is to ensure that when there are a lot of unread messages, the user
is given the chance to see all of them by being scrolled to the oldest
new message.

When a new message comes in, the indicator will be incremented.

When the user sends a message or switches away from the conversation,
the last seen indicator will be removed.

FREEBIE
8 years ago
lilia 3f1d8ee2b8 Fix display name for ios voice messages
iOS populates a filename for voice messages which was overruling our check for
the voice message flag when choosing the display name.

// FREEBIE
8 years ago