Commit graph

222 commits

Author SHA1 Message Date
lilia
c034ac8267 Refactor components for the main content section
Each conversation views now manages its own separate elements
rather than all binding to a shared #conversation element, and
similarly for message composition ui.

Also includes the beginnings of group creation UI (not working yet),
featuring bootstrap-tagsinput field for entering group recipients
2014-08-25 18:54:55 -07:00
lilia
8d83a8fb27 This element is constant, so let's bootstrap it 2014-08-25 18:48:12 -07:00
lilia
5f74a60364 Format thread timestamps 2014-08-25 18:48:12 -07:00
lilia
44f272a181 Get messages sending with new ui
Also convert index.html to 4-space indentation.
2014-07-27 15:04:12 -10:00
lilia
95c31629b7 get frontend rendering with new markup/css 2014-07-27 12:16:58 -10:00
lilia
850a91c77d Fix message sending 2014-07-27 11:35:49 -10:00
lilia
0741c74618 Don't recreate views unnecessarily
Let ConversationListItemView save a reference to its corresponding
ConversationView. This lets it render or delegate/undelegate events
when opening and closing a conversation.

Similarly for ConversationView itself, which contains a MessageListView.
2014-07-27 11:35:49 -10:00
lilia
9d0be46a53 Close an open conversation before opening another 2014-07-27 11:35:49 -10:00
lilia
bbb5d56516 Don't reopen a currently selected conversation 2014-07-27 11:35:49 -10:00
lilia
98cfc1b701 Remove old convo compose view 2014-07-27 11:35:49 -10:00
lilia
511b121a2f Refactor conversation view into two classes
One that resides in the left hand column as a list item, and another
which displays in the main column and handles ui events therein.
2014-07-27 11:35:49 -10:00
lilia
6ff6ef07a9 Parse the template before binding render to an event 2014-07-27 11:35:49 -10:00
lilia
d615a5a18b Let list view changes the color of selected conversations 2014-07-27 11:35:49 -10:00
lilia
dc957415c2 Cull dead code
Most of this no longer needed because of templating and list views.
2014-07-27 11:35:49 -10:00
lilia
9082781e09 Make header and footer/form work without overflowing 2014-07-27 11:35:49 -10:00
lilia
df95a7f71a Move ui init out of nacl callback and remove some lines that no longer apply 2014-07-27 11:35:49 -10:00
lilia
def32f42d4 New layout/design
Two column layout and style tweaks. Templatized conversation views.
Generalized list view.
2014-07-27 11:35:48 -10:00
lilia
6d5e32bca8 Don't make a new collection on every call to thread.messages() 2014-07-27 11:35:48 -10:00
lilia
7e20838128 Rename file 2014-07-27 11:35:48 -10:00
lilia
4724c96ecb Use $.find so these locals can go away 2014-07-27 11:35:48 -10:00
lilia
2e3d89ef78 Use mustache template for message rendering 2014-07-27 11:35:48 -10:00
lilia
25fecc949e Condense some code using Backbone.View's event framework 2014-07-27 11:35:48 -10:00
lilia
06ff6c3087 Let thread collection double as contacts db
When a thread is 'destroyed' from the UI we delete its messages and mark
the thread as inactive, (in other words, keep it around as contact info).
Additionally, we only load active threads when initializing the UI, and
reactivate threads when new messages are added to them.

Conflicts:
	js/models/messages.js
	js/models/threads.js
	js/views/conversations/show.js
2014-07-27 11:35:48 -10:00
lilia
c6b79236d9 Fix whitespace, lint 2014-07-27 11:35:48 -10:00
lilia
ebf1b3352f Use separate message collections for each thread to facilitate lookup and lazy loading 2014-07-27 11:35:48 -10:00
Matt Corallo
d6d17eaf19 Remove unused function 2014-07-27 02:33:17 -04:00
Matt Corallo
3696214edc Add missing localStorage.clear() 2014-07-27 02:30:00 -04:00
Matt Corallo
28779e0b35 Fix tests by returning promises 2014-07-27 02:05:25 -04:00
Matt Corallo
90eb9cb0c8 Remove ping, update to latest spec proposal 2014-07-26 18:15:24 -04:00
Matt Corallo
f6f35c5b61 Fix a missing function and dont blow up on delivery receipts 2014-07-26 01:53:24 -04:00
Matt Corallo
d9f53d4c01 Fix not-allowed inline scripts error 2014-07-26 01:37:47 -04:00
Matt Corallo
a6b0d1f84b Add entirely untested secondary device init 2014-07-26 01:32:05 -04:00
lilia
2751d0e884 Such tests. Very mocha. Much chai. Amaze!!!
ERHMAGERRRD testing frameworks are so the best. Removed all our custom
code for ensuring test exclusivity and doneness and isolating callbacks
and everything. mocha does it all for us, and makes it pretty.

Also rather than return a long chain of promises that eventually resolve
to truthiness, we now use chai to make assertions about what is good and
right in the world.

Recommended reading:
  https://visionmedia.github.io/mocha
  http://chaijs.com/api/assert/
2014-07-25 18:01:19 -10:00
Matt Corallo
6455da5c9a Refactor a bunch of stuff re: session closing, add test cases 2014-07-25 19:55:49 -04:00
Matt Corallo
c427da04f0 Add closeSession tests as Alice and fix re-requesting prekeys 2014-07-24 20:15:27 -04:00
Matt Corallo
6f3ee151f3 Add a BOB test-case around session closure 2014-07-24 17:11:53 -04:00
Matt Corallo
a6426194ef Update BOB test cases 2014-07-24 06:42:41 -04:00
Matt Corallo
957587bd9a Add identity keys to MAC, begin updating test cases 2014-07-24 06:29:11 -04:00
Matt Corallo
eab0911d3d I lied, there is no verification tag 2014-07-24 05:14:38 -04:00
Matt Corallo
85f33345ab Move test shuffling to js/testvectors.js 2014-07-23 20:29:45 -04:00
Matt Corallo
0088721343 Move AXOLOTL test vectors to js/testvectors.js 2014-07-23 18:22:16 -04:00
Matt Corallo
07f79cb4bf Fix tester 2014-07-23 03:59:22 -04:00
Matt Corallo
7013c5e031 First steps towards BOB test vectors 2014-07-23 03:57:50 -04:00
Matt Corallo
ebcfd4736e Fix session lookup in duplicate prekeymessage case 2014-07-23 03:36:11 -04:00
Matt Corallo
5040bfbe44 Fix pending verifications 2014-07-23 02:53:31 -04:00
Matt Corallo
a76ae2f1f8 Add verification tags, make alice tests strict(ish) again 2014-07-23 02:49:47 -04:00
Matt Corallo
287b55120d First cut of ALICE test vectors 2014-07-23 01:49:13 -04:00
Matt Corallo
a8908646aa Fix null flags in v3 2014-07-22 21:38:48 -04:00
Matt Corallo
0d4ae6a8cb Fix undefined variable in for's (browser update to strict mode?) 2014-07-22 21:33:35 -04:00
Matt Corallo
de83429962 v3 steps 2014-07-22 21:23:52 -04:00
Matt Corallo
66bf371aa7 Use staging server (ie update to server keys v2) and protocolv3 2014-07-22 21:23:35 -04:00
Matt Corallo
53f8ac9ad9 Generate signed keys (breaks registration) 2014-07-22 21:23:35 -04:00
Matt Corallo
4c3ee6f23b Compare equality w/o getString (in the future) 2014-07-22 21:23:35 -04:00
Matt Corallo
3190fe97f9 HMAC Update for Protov3 2014-07-22 21:23:35 -04:00
Matt Corallo
b5c6e3d101 JS ed25519 2014-07-20 16:49:40 -04:00
Matt Corallo
b94ba6b726 USE_NACL = true 2014-07-20 16:49:40 -04:00
Matt Corallo
7d27df9868 Report testing done 2014-07-20 16:29:42 -04:00
Matt Corallo
a2da4fffb0 Remove useless function 2014-07-17 18:13:32 -04:00
Marco
13a9329bcf improved number validation (based on google's libphonenumber) 2014-06-29 16:39:05 -07:00
Matt Corallo
92514ad08f Fix missing baseKey 2014-06-09 20:27:09 -04:00
Matt Corallo
ceca03c5d0 Close chainKey.key 2014-06-09 20:27:09 -04:00
lilia
ce3c5eb909 Refactor conversation list view
Pull apart UI classes for displaying and creating threads.
Also get rid of ugly alert popup in favor of Whisper.notify.
2014-06-07 16:31:40 -07:00
Matt Corallo
1ec6b0aed6 Better TODO wording 2014-06-05 22:34:01 -04:00
Matt Corallo
12a849957a Refresh groups on (probably) new identity key (maybe more often?) 2014-06-05 22:28:30 -04:00
Matt Corallo
0f126fc0f8 Keep track of number->groups, add TODO to refresh, other tweaks 2014-06-05 21:05:42 -04:00
Matt Corallo
e495e8e3db Group updates to match real protocol and get better checking 2014-06-05 19:20:09 -04:00
lilia
ec900e0ea4 Fix double display of outgoing messages 2014-06-03 20:05:41 -07:00
lilia
a09a4776d3 Fix incoming message display/storage
There were a few problems.

1. The message event was being triggered in background, not popup
2. The initial message/thread fetches from localStorage were mis-ordered
3. The timestamp wasn't being extracted from the right place
4. #3 caused messages to fail validation and not be saved

1-3 are fixed. To address 4 I switched validate() to log a warning
instead of preventing save.
2014-06-03 19:57:03 -07:00
Matt Corallo
c90b9a5c59 Some group update verification 2014-06-03 22:23:51 -04:00
Matt Corallo
b1ec02fa92 Group API 2014-06-03 21:09:04 -04:00
Matt Corallo
c953c6c16d closeSession 2014-06-03 17:44:30 -04:00
Matt Corallo
d0fd3e94d8 sendMessage refactor, initial group stuff (breaks message storage) 2014-06-03 15:28:30 -04:00
Matt Corallo
fb2aa6144c Merge pull request #45 from codedust/extractchrome
moved some chromium-specific code into chromium.js
2014-06-02 00:41:51 +00:00
Marco
5cddcb59aa improved some css for options.html 2014-06-01 22:31:19 +02:00
Marco
69ba6581b0 moved some chromium-specific code into chromium.js (using extension.navigator namespace) 2014-06-01 21:33:58 +02:00
Matt Corallo
cf35b7056f Retry API, standardize <script> list 2014-06-01 13:39:35 -04:00
Matt Corallo
8f49d201e6 Fix longstanding(?) attachment bug 2014-05-31 13:33:41 -04:00
Matt Corallo
c2d1d816f2 Save sessions in deviceObjects, test using fake_api, minor tweaks 2014-05-31 13:28:46 -04:00
Matt Corallo
1724d122d3 More typos from me being too tired 2014-05-28 04:33:01 +02:00
Matt Corallo
5cea7b6857 Few typos blocking registration 2014-05-28 04:03:23 +02:00
Matt Corallo
eb80a10ed1 Fix new function(){}() typo (thanks codedust on GitHub) 2014-05-28 03:53:43 +02:00
Matt Corallo
aec36468bc Request new keys (largely untested) 2014-05-28 03:45:40 +02:00
Matt Corallo
56433bd9af One more tiny error refactor 2014-05-28 03:45:40 +02:00
Matt Corallo
68131a6e2a Add human readable version of errors 2014-05-28 03:45:40 +02:00
Matt Corallo
753a950816 Redo registration process 2014-05-28 03:45:40 +02:00
lilia
83508abab8 Thread model and UI improvements
Adds thread model/collection for managing conversation-level state, such
as unreadCounts, group membership, thread order, etc... plus various UI
improvements enabled by thread model, including an improved compose
flow, and thread-destroy button.

Adds Whisper.notify for presenting messages to the user in an orderly
fashion. Currently using a growl-style fade in/out effect.

Also some housekeeping:
Cut up views into separate files.
Partial fix for formatTimestamp.
Tweaked buttons and other styles.
2014-05-26 15:33:45 -07:00
Matt Corallo
2d12a33ead Fix decoding/protos/tests 2014-05-26 01:48:41 +02:00
Matt Corallo
ac48d552fa Fix some bugs recently introduced 2014-05-26 00:45:55 +02:00
Matt Corallo
21b95ce1d3 Re-create some of d9bf0a4, which was broken and reverted in 1e6720 2014-05-26 00:45:55 +02:00
Matt Corallo
18f1eed70f Some number verification refactor stuff 2014-05-26 00:45:55 +02:00
Matt Corallo
d387cd22f5 s/getEncodedNumber// (with XXXs) 2014-05-26 00:45:55 +02:00
Matt Corallo
9aae93fc99 textsecure.protos 2014-05-26 00:45:55 +02:00
lilia
1e672030de Fix a couple things broken in d9bf0a4
Slight revert from said commit. We really do need the
IncomingPushMessageSignal protobuf at the UI layer, mostly because
it contains the 'source' attribute, without which we don't know
who sent the message.

Also fix a crash when there are no attachments on a message.
2014-05-22 21:59:34 -07:00
lilia
de0a1df3ca Fix broken registration flow
Better load the functions defined in chromium.js before trying to use
them. Hmm.. also, options.js should probably wait for the DOM to load
before it tries to initialize things in it.
2014-05-20 21:39:29 -07:00
Matt Corallo
d9bf0a41fb textsecure.storage, chromium.js 2014-05-20 22:21:07 -04:00
Matt Corallo
ee2f43aba4 Fix, display (image) attachments 2014-05-19 03:07:01 -04:00
Matt Corallo
be82547ea1 Move message saving out of helpers.js 2014-05-18 19:50:30 -04:00
lilia
3bd559bbaa DRY up PushMessageContentProtobuf construction
Messages now know how to protobuf-ify themselves.
2014-05-18 14:33:18 -07:00
lilia
2601c3cc3a Rename some things to be a little more semantic
The 'sender' field actually holds the recipient for outgoing
messages. Rename that field to 'person', indicating the 2nd
party generically.

Also decouples the thread name from thread recipients at the
view layer, in preparation for group support.
2014-05-18 13:49:11 -07:00
Marco
14ebef70cb fixed 'TypeError: Promise.resolve is not a constructor' in Firefox 2014-05-18 21:58:53 +02:00