MessageListSent.coffee 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. class MessageListSent extends MessageList
  2. constructor: ->
  3. super
  4. @reload = true
  5. @loading = false
  6. @messages = []
  7. @title = "Sent"
  8. getMessages: ->
  9. if @reload and Page.site_info and Page.site_info.cert_user_id and not @loading
  10. @reload = false
  11. @loading = true
  12. query = """
  13. SELECT date_added, encrypted
  14. FROM message
  15. LEFT JOIN json USING (json_id)
  16. WHERE ?
  17. ORDER BY date_added DESC
  18. """
  19. Page.cmd "dbQuery", [query, {"json.directory": Page.site_info.auth_address}], (db_rows) =>
  20. encrypted_messages = (row.encrypted.split(",") for row in db_rows)
  21. Page.user.getDecryptedSecretsSent (sent_secrets) =>
  22. keys = (aes_key for address, aes_key of sent_secrets)
  23. Page.cmd "aesDecrypt", [encrypted_messages, keys], (decrypted_messages) =>
  24. message_rows = []
  25. usernames = []
  26. for decrypted_message, i in decrypted_messages
  27. if not decrypted_message then continue
  28. message_row = Text.jsonDecode(decrypted_message)
  29. message_row.date_added = db_rows[i].date_added
  30. message_row.key = "sent-"+message_row.date_added
  31. message_row.message_id = db_rows[i].date_added
  32. message_row.sender = "Unknown"
  33. message_row.folder = "sent"
  34. message_rows.push(message_row)
  35. if message_row.to not in usernames
  36. usernames.push(message_row.to)
  37. Page.users.getAddress usernames, (addresses) =>
  38. for message_row in message_rows
  39. message_row.to_address = addresses[message_row.to]
  40. message_row.to_address ?= ""
  41. @syncMessages(message_rows)
  42. Page.projector.scheduleRender()
  43. @loading = false
  44. @loaded = true
  45. return @messages
  46. deleteMessage: (message) ->
  47. super
  48. delete Page.user.data.message[message.row.message_id]
  49. Page.user.saveData().then (res) =>
  50. @log "Delete result", res
  51. window.MessageListSent = MessageListSent