3f37cd21a9
Add window.storage to the background page, which loads all data from the 'items' store in indexeddb, caching them in memory for synchronous access, then override textsecure storage to use that in memory store.
271 lines
10 KiB
HTML
271 lines
10 KiB
HTML
<!--This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
-->
|
|
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<script type='text/x-tmpl-mustache' id='conversation'>
|
|
<div class='title-bar' id='header'>
|
|
<div class='menu'>
|
|
<button class='hamburger'></button>
|
|
<ul class='menu-list'>
|
|
{{#group}}
|
|
<li><a class='new-group-update'>Update group</a></li>
|
|
<li><a class='leave-group'>Leave group</a></li>
|
|
{{/group}}
|
|
{{^group}}
|
|
<li><a class='end-session'>Reset Session</a></li>
|
|
<li><a class='verify-identity'>Verify Identity</a></li>
|
|
{{/group}}
|
|
<li><a class='destroy'>Delete messages</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class='discussion-container'></div>
|
|
|
|
<div class="bottom-bar" id='footer'>
|
|
<form class='send'>
|
|
<div class='attachments'>
|
|
<div class='paperclip thumbnail'></div>
|
|
<input type='file' class='file-input'>
|
|
</div>
|
|
<input class="send-btn" type='submit' value='' />
|
|
<input class='send-message' type='textarea' placeholder="Send a message">
|
|
</form>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='attachment-preview'>
|
|
<img src="{{ source }}" class="preview" />
|
|
<div class="close">x</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='message'>
|
|
<div class='sender'>{{ sender }}</div>
|
|
{{> avatar }}
|
|
<div class="bubble">
|
|
<p class="content">{{ message }}</p>
|
|
<div class='attachments'></div>
|
|
<div class='meta'>
|
|
<span class='timestamp'>{{ timestamp }}</span>
|
|
<span class='checkmark hide'>✓</span>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-group-update-form'>
|
|
<div class='title-bar' id='header'>
|
|
<button class='back'></button>
|
|
<button class='send check'></button>
|
|
<span class='title-text'>Update group</span>
|
|
</div>
|
|
<div class='container'>
|
|
<div class='scrollable'>
|
|
<div class='clearfix'>
|
|
<div class='group-avatar'>
|
|
<div class='thumbnail'>
|
|
{{> avatar }}
|
|
</div>
|
|
<input type='file' name='avatar' class='file-input'>
|
|
</div>
|
|
<div>
|
|
<input type='text' name='name' class='name' placeholder='Group Name' value="{{ name }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='avatar'>
|
|
<span class='avatar' style='background-image: url("{{ avatar_url }}");' ></span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact_pill'>
|
|
<span>{{ name }}</span><span class='remove'>x</span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact'>
|
|
{{> avatar }}
|
|
<div class='contact-details'>
|
|
<h3 class='contact-name'>
|
|
{{ contact_name }}
|
|
</h3>
|
|
<p class='number'>{{ number }}</p>
|
|
<p class='last-message'>
|
|
{{ last_message }}
|
|
</p>
|
|
<span class='last-timestamp'>
|
|
{{ last_message_timestamp }}
|
|
</span>
|
|
</div>
|
|
</script>
|
|
<script type="text/x-tmpl-mustache" id="phone-number">
|
|
<div class="phone-input-form">
|
|
<div class="number-container">
|
|
<input type="tel" class="number" placeholder="Phone Number" />
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='file-size-modal'>
|
|
Sorry, the selected file exceeds message size
|
|
restrictions. ({{ limit }}kB)
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='message-detail'>
|
|
<div class='title-bar' id='header'>
|
|
<button class='back'></button>
|
|
<span class='title-text'>Message Detail</span>
|
|
</div>
|
|
<div class='container'>
|
|
<div class='message-container'></div>
|
|
<div class='info'>
|
|
<table>
|
|
<tr><td class='label'>Sent</td><td> {{ sent_at }}</td></tr>
|
|
<tr><td class='label'>Received</td><td> {{ received_at }}</td></tr>
|
|
<tr>
|
|
<td class='tofrom label'>{{ tofrom }}</td>
|
|
<td> <div class='contacts'></div> </td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='key-verification'>
|
|
<div class='title-bar' id='header'>
|
|
<button class='back'></button>
|
|
<span class='title-text'>Verify Identity</span>
|
|
</div>
|
|
<div class='container'>
|
|
<p> Their identity (they read): </p>
|
|
<div class='key'>
|
|
{{ #their_key }} <span>{{ . }}</span> {{ /their_key }}
|
|
</div>
|
|
<p> Your identity (you read): </p>
|
|
<div class='key'>
|
|
{{ #your_key }} <span>{{ . }}</span> {{ /your_key }}
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<!-- index -->
|
|
<script type="text/x-tmpl-mustache" id="inbox">
|
|
<div class='title-bar' id='header'>
|
|
<div class='socket-status'></div>
|
|
</div>
|
|
<div class='gutter'>
|
|
<div class='conversations scrollable'></div>
|
|
<span class='fab'></span>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-conversation'>
|
|
<div class='title-bar' id='header'>
|
|
<button class='back'></button>
|
|
<button class='create check hide'></button>
|
|
<span class='title-text'>New Message</span>
|
|
</div>
|
|
<div class='gutter'>
|
|
<div class='scrollable'>
|
|
<div class='new-group-update-form clearfix'>
|
|
<div class='group-avatar'>
|
|
<div class='thumbnail'>
|
|
<span class='default group-default'></span>
|
|
</div>
|
|
<input type='file' name='avatar' class='file-input'>
|
|
</div>
|
|
<input type='text' name='name' class='name' placeholder='Group Name' value="{{ name }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='recipients-input'>
|
|
<div class='recipients-container'>
|
|
<span class='recipients'></span>
|
|
<input type='text' class='search' placeholder="Name or phone number" />
|
|
</div>
|
|
<div class='results'>
|
|
<div class='new-contact contact hide'></div>
|
|
<div class='contacts'></div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='incoming-key-conflict'>
|
|
<p>
|
|
Received message with unknown identity key.
|
|
Click to process and display.
|
|
</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='outgoing-key-conflict'>
|
|
<p>
|
|
This contact's identity key.has changed.
|
|
Click to process and display.
|
|
</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='generic-error'>
|
|
<p>{{ message }}</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact-detail'>
|
|
<div>
|
|
{{> avatar }}
|
|
<span class='name'>{{ name }}</span>
|
|
{{ #conflict }}
|
|
<button class='conflict'><span>Verify</span></button>
|
|
{{ /conflict }}
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='key-conflict-dialogue'>
|
|
<div class='content'>
|
|
<p> {{ message }} </p>
|
|
<p>
|
|
You may wish to <span class='verify'>verify</span> this contact.
|
|
</p>
|
|
<p>
|
|
<button class='cancel'>Cancel</button>
|
|
<button class='resolve'>Accept new key</button>
|
|
</p>
|
|
</div>
|
|
</script>
|
|
<script type="text/javascript" src="js/components.js"></script>
|
|
<script type="text/javascript" src="js/database.js"></script>
|
|
<script type="text/javascript" src="js/storage.js"></script>
|
|
<script type="text/javascript" src="js/axolotl_store.js"></script>
|
|
<script type="text/javascript" src="js/libtextsecure.js"></script>
|
|
|
|
<script type="text/javascript" src="js/notifications.js"></script>
|
|
<script type="text/javascript" src="js/libphonenumber-util.js"></script>
|
|
<script type="text/javascript" src="js/models/messages.js"></script>
|
|
<script type="text/javascript" src="js/models/conversations.js"></script>
|
|
|
|
<script type="text/javascript" src="js/chromium.js"></script>
|
|
|
|
<script type="text/javascript" src="js/views/whisper_view.js"></script>
|
|
<script type="text/javascript" src="js/views/toast_view.js"></script>
|
|
<script type="text/javascript" src="js/views/attachment_preview_view.js"></script>
|
|
<script type="text/javascript" src="js/views/file_input_view.js"></script>
|
|
<script type="text/javascript" src="js/views/list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_list_item_view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/recipients_input_view.js"></script>
|
|
<script type="text/javascript" src="js/views/new_group_update_view.js"></script>
|
|
<script type="text/javascript" src="js/views/attachment_view.js"></script>
|
|
<script type="text/javascript" src="js/views/key_conflict_dialogue_view.js"></script>
|
|
<script type="text/javascript" src="js/views/error_view.js"></script>
|
|
<script type="text/javascript" src="js/views/message_view.js"></script>
|
|
<script type="text/javascript" src="js/views/key_verification_view.js"></script>
|
|
<script type="text/javascript" src="js/views/message_detail_view.js"></script>
|
|
<script type="text/javascript" src="js/views/message_list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_view.js"></script>
|
|
<script type="text/javascript" src="js/views/new_conversation_view.js"></script>
|
|
<script type="text/javascript" src="js/views/inbox_view.js"></script>
|
|
<script type="text/javascript" src="js/inbox_controller.js"></script>
|
|
|
|
<script type="text/javascript" src="js/bimap.js"></script>
|
|
<script type="text/javascript" src="js/panel_controller.js"></script>
|
|
<script type="text/javascript" src="js/background.js"></script>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|