Commit Graph

266 Commits (cd888f66ef8a361381276da73efa04199e3d55ad)

Author SHA1 Message Date
lilia 3a00e49791 Open the most recent conversation on load 11 years ago
lilia 1023ea1732 Refactor textsecure.protos -> textsecure.protobuf
DRY up protobuf declarations and move to a slightly briefer naming
convention.

Also dropped some ArrayBuffer -> string conversions as
ProtoBuf.js handles ArrayBuffers just fine, and in fact, more
efficiently than strings.

Finally, dropped the btoa() wrappers, because that incurs an extra
string -> string conversion before the protobuf's internal string ->
array buffer conversion. In lieu of btoa, we can simply pass in the
optional string encoding argument to the protobuf's decode method,
which in these cases should be 'binary'.

Related: #17
11 years ago
lilia 03cc667e48 Standardize some whitespace
The preferred style is 4 spaces.
11 years ago
Arnaud Benard e568e2c528 Fixes #61 - Order by timestamps with tests 11 years ago
lilia cc5327dbc9 Fix group loop
All the group messages were being sent to the last recipient in the
list, due to the persistence of `var number` in later loops and async
calls. An easy mistake to make, when you use for instead of each.
11 years ago
lilia ac5c359053 Fix strange loop in sendMessageProto
Don't declare a new `var i`  within the scope of an existing `var i`.

Fixes #63
11 years ago
lilia cd55c0a1f1 Put groupid back in id field also 11 years ago
lilia 0bd5f3e3c2 If for some reason a group has no name, provide a default 11 years ago
lilia 0036e4ef74 Store group ids as strings 11 years ago
lilia 8288e298fc Group ids should be converted to ArrayBuffers for transport 11 years ago
lilia 143254cec8 Group ids are stored in groupId 11 years ago
lilia bbe57ef0bf Stringify incoming group ids
Otherwise when we try to make their local storage keys they look like:
"egroupByteBuffer(offset=4,markedOffset=-1,length=28,capacity=112)"
11 years ago
lilia 4f21bbd21f Use textsecure.messaging to create groups
Not textsecure.storage. Sigh. Also accomodate the fact that
the group id is not returned directly, but rather at the end
of a promise chain.
11 years ago
lilia fa4c385598 Make initial timestamp on a thread match the 1st message 11 years ago
lilia f14cd2eed1 Don't validate presence of thread id
It's undefined until the first save();
11 years ago
lilia 7e9c0e2394 Group ids should be strings (or stringables)
ArrayBuffer was a bad choice.
11 years ago
lilia 6db3eeb52e Convert incoming timestamps into numbers
Fixes #59

protip: don't use << for anything over 2^32. The operands of all bitwise
operators are converted to signed 32-bit integers
11 years ago
lilia d7edfd4efb Remove reference to undefined function 11 years ago
lilia 43f4f6cf99 Open a group's view after it's created 11 years ago
lilia 320d1f18ae Fix exception when protbuf-encoding groupIds
An exception is thrown when protobuf tries to encode a number as the
group id, which is declared to have type 'bytes'.

Fix by make it an ArrayBuffer instead, and increase the length to 16,
which is what the Android client uses:

c632b32ff8/src/org/thoughtcrime/securesms/database/GroupDatabase.java (L222)
11 years ago
lilia 5b0573293f Fix references to GroupContext Type ENUM values 11 years ago
lilia 01f9fc1f17 More frontend groups fixes 11 years ago
lilia e89e691957 Fix bug in groupId generation
Previously, if calling createNewGroup with an undefined groupId,
no groupId was generated.

This occurred because no entry for "group" + undefined exists in
localStorage, which caused this code to think undefined was a
valid group id.

Fixed by adding `|| groupId == undefined` to the while clause.
Also decoupled the groupId collision check for clarity.
11 years ago
lilia dc41ebf701 Small frontend fixes for the new group view 11 years ago
lilia 2bd77693e1 Refactor options page and style using bootstrap 11 years ago
lilia 81e4af5827 Move phonenumbery utils to libphonenumber object
Slowly whittling away at helpers.js...
11 years ago
lilia 9fc14cfa30 Remove erroneous comment re: MDN copyright
In fact, the code samples we have copied from MDN are declared to be
public domain (see link below):

  "Code samples added on or after August 20, 2010 are in the public
  domain."

https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses

AFAICT we're using code from this page, last updated 10/4/14:
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
11 years ago
lilia 75e78caec8 Function-wrap options.js 11 years ago
lilia 683c373943 Relaxes verification code validation
When codes are sent they are formatted as xxx-xxx. Previously when I
would paste these from GVoice they failed validation thanks to the dash
and whatever whitespace I happened to grab.
11 years ago
lilia 27708cd8d7 Switch to staging. -ca is now production 11 years ago
lilia 0f4b53c176 Update records list in BBLocalStorage on fetch
Previously, would only update the known messages.
11 years ago
lilia 2288f8adc1 Fix new group ui not showing 11 years ago
lilia 266600e5ab There's no need to wrap this function inside a function afaict 11 years ago
lilia ae98b8680f Fix whitespace in popup.js
Our official standard is 4 space indentation.
11 years ago
lilia ef066ea9d2 Make conversations open when they are created 11 years ago
lilia 230d24a69e Views already have a #remove() 11 years ago
lilia db86abdf70 Add list view tests
Also,
 * moved fetch out of the list view
 * removed unused #last() function
 * put test setup lines in their own tiny file.
 * added data-cover to view script tags for code coveage reports.
11 years ago
lilia ad7456b367 Refactor away this poorly named and overloaded file 11 years ago
lilia b9640a54bd Move new convo stuff to its own file 11 years ago
lilia 9af18ce6ae Encapsulate page layout js
The layout class is the only class that should have knowledge of
page-level constant markup, such as #gutter and #contacts, and
should be pretty much the only place we find elements by id (with
the exception of template elements).

This change removes references to #gutter from views. Rather than
hardcoding assumptions about page layout, view elements should
ask the layout to insert themselves into the main content area by
calling Whisper.Layout.setContent.
11 years ago
lilia 5ddcc516e4 remove extra insertion, it's already happening 11 years ago
lilia 2f0b0f7a1b Get overflow scrolls working
Had to resort to a resize event handler.
A bit slow at times, but it works.
11 years ago
lilia 546cdf82cb Fix some markup issues
* Remove spurious search div
* Fix nested uls
* Use class name selected, not closed (the inverse)
* Restor nacl div
11 years ago
lilia c2beda8e40 Get single recipient message composition working again 11 years ago
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
11 years ago
lilia 8d83a8fb27 This element is constant, so let's bootstrap it 11 years ago
lilia 5f74a60364 Format thread timestamps 11 years ago
lilia 44f272a181 Get messages sending with new ui
Also convert index.html to 4-space indentation.
11 years ago
lilia 95c31629b7 get frontend rendering with new markup/css 11 years ago
lilia 850a91c77d Fix message sending 11 years ago
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.
11 years ago
lilia 9d0be46a53 Close an open conversation before opening another 11 years ago
lilia bbb5d56516 Don't reopen a currently selected conversation 11 years ago
lilia 98cfc1b701 Remove old convo compose view 11 years ago
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.
11 years ago
lilia 6ff6ef07a9 Parse the template before binding render to an event 11 years ago
lilia d615a5a18b Let list view changes the color of selected conversations 11 years ago
lilia dc957415c2 Cull dead code
Most of this no longer needed because of templating and list views.
11 years ago
lilia 9082781e09 Make header and footer/form work without overflowing 11 years ago
lilia df95a7f71a Move ui init out of nacl callback and remove some lines that no longer apply 11 years ago
lilia def32f42d4 New layout/design
Two column layout and style tweaks. Templatized conversation views.
Generalized list view.
11 years ago
lilia 6d5e32bca8 Don't make a new collection on every call to thread.messages() 11 years ago
lilia 7e20838128 Rename file 11 years ago
lilia 4724c96ecb Use $.find so these locals can go away 11 years ago
lilia 2e3d89ef78 Use mustache template for message rendering 11 years ago
lilia 25fecc949e Condense some code using Backbone.View's event framework 11 years ago
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
11 years ago
lilia c6b79236d9 Fix whitespace, lint 11 years ago
lilia ebf1b3352f Use separate message collections for each thread to facilitate lookup and lazy loading 11 years ago
Matt Corallo d6d17eaf19 Remove unused function 11 years ago
Matt Corallo 3696214edc Add missing localStorage.clear() 11 years ago
Matt Corallo 28779e0b35 Fix tests by returning promises 11 years ago
Matt Corallo 90eb9cb0c8 Remove ping, update to latest spec proposal 11 years ago
Matt Corallo f6f35c5b61 Fix a missing function and dont blow up on delivery receipts 11 years ago
Matt Corallo d9f53d4c01 Fix not-allowed inline scripts error 11 years ago
Matt Corallo a6b0d1f84b Add entirely untested secondary device init 11 years ago
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/
11 years ago
Matt Corallo 6455da5c9a Refactor a bunch of stuff re: session closing, add test cases 11 years ago
Matt Corallo c427da04f0 Add closeSession tests as Alice and fix re-requesting prekeys 11 years ago
Matt Corallo 6f3ee151f3 Add a BOB test-case around session closure 11 years ago
Matt Corallo a6426194ef Update BOB test cases 11 years ago
Matt Corallo 957587bd9a Add identity keys to MAC, begin updating test cases 11 years ago
Matt Corallo eab0911d3d I lied, there is no verification tag 11 years ago
Matt Corallo 85f33345ab Move test shuffling to js/testvectors.js 11 years ago
Matt Corallo 0088721343 Move AXOLOTL test vectors to js/testvectors.js 11 years ago
Matt Corallo 07f79cb4bf Fix tester 11 years ago
Matt Corallo 7013c5e031 First steps towards BOB test vectors 11 years ago
Matt Corallo ebcfd4736e Fix session lookup in duplicate prekeymessage case 11 years ago
Matt Corallo 5040bfbe44 Fix pending verifications 11 years ago
Matt Corallo a76ae2f1f8 Add verification tags, make alice tests strict(ish) again 11 years ago
Matt Corallo 287b55120d First cut of ALICE test vectors 11 years ago
Matt Corallo a8908646aa Fix null flags in v3 11 years ago
Matt Corallo 0d4ae6a8cb Fix undefined variable in for's (browser update to strict mode?) 11 years ago
Matt Corallo de83429962 v3 steps 11 years ago
Matt Corallo 66bf371aa7 Use staging server (ie update to server keys v2) and protocolv3 11 years ago
Matt Corallo 53f8ac9ad9 Generate signed keys (breaks registration) 11 years ago
Matt Corallo 4c3ee6f23b Compare equality w/o getString (in the future) 11 years ago
Matt Corallo 3190fe97f9 HMAC Update for Protov3 11 years ago
Matt Corallo b5c6e3d101 JS ed25519 11 years ago
Matt Corallo b94ba6b726 USE_NACL = true 11 years ago