• JC Brand's avatar
    Support for IndexedDB. updates #1105 · 1fa203c9
    JC Brand authored
    Depend on latest backbone.browserStorage which has support for IndexedDB
    via localforage.
    
    Storage operations are now asynchronous and transactional.
    
    Bugs fixed (mostly by waiting for operations to complete):
    
    * Rooms are now fetched asynchronously, so wait before triggering `show`
      or when closing.
    * Make sure chat create/update transactions complete before firing events
    * Make sure chats and messages have been fetched before creating new ones.
    * When doing a `fetch` with `wait: false` on a collection and then
      creating a model in that collection, then once the read
      operation finishes (after creating the model), the collection is emptied again.
    * Patch and wait when saving.
      Otherwise we have previously set attributes overriding later ones.
    * Make sure api.roomviews.close returns a promise
    
    Test fixes:
    
    * Chats are now asynchronously returned, so we need to use `await`
    * Wait for the storage transaction to complete when creating and updating messages
    * Wait for all chatboxes to close
        Otherwise we get sessionStorage inconsistencies due to the async nature of localforage.
    * Wait for room views to close in spec/chatroom.js
    
    In the process, remove the `closeAllChatBoxes` override in
    converse-controlbox by letting the `close` method decide whether it
    should be closed or not.
    1fa203c9
minchats.js 8.8 KB