bedf10056b
Also: - All the necessary wire-up to update things in real time. If you have a safety number page up via a group member view as well as via a 1:1 conversation with that contact, they'll both be updated as the underlying model changes. Similarly, the overall group will update in real-time as members change. - A bit of special-casing for yourself in a group conversation - you're shown as 'me' and are not clickable, where normally that would take you to the Safety Number screen for that contact. You are also not included in the trust calculations for a given group. FREEBIE
667 lines
25 KiB
HTML
667 lines
25 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<script type='text/x-tmpl-mustache' id='two-column'>
|
|
<div class='gutter'>
|
|
<div class='network-status-container'></div>
|
|
<div class='title-bar active' id='header'>
|
|
<div class='header-buttons right'>
|
|
<div class='vertical-align'>
|
|
<div class='global-menu menu'>
|
|
<button class='hamburger' alt='signal menu'></button>
|
|
<ul class='menu-list'>
|
|
<li class='showSettings'>{{ settings }}</li>
|
|
<li class='show-debug-log'>{{ submitDebugLog }}</li>
|
|
<li class='restart-signal'>{{ restartSignal }}</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h1>Signal</h1>
|
|
<div class='tool-bar clearfix'>
|
|
<input type='search' class='search' placeholder='{{ searchForPeopleOrGroups }}' dir='auto'>
|
|
<span class='search-icon'></span>
|
|
</div>
|
|
</div>
|
|
<div class='content'>
|
|
<div class='conversations inbox'></div>
|
|
<div class='conversations search-results hide'>
|
|
<div class='new-contact contact hide'></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='conversation-stack'>
|
|
<div class='conversation placeholder'>
|
|
<div class='conversation-header'></div>
|
|
<div class='content'>
|
|
<img src='/images/icon_128.png' />
|
|
<h3>{{ welcomeToSignal }}</h3>
|
|
<p>{{ selectAContact }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='scroll-down-button-view'>
|
|
<button class='text {{ cssClass }}' alt='{{ moreBelow }}'>
|
|
<div class='icon'></div>
|
|
</button>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='last-seen-indicator-view'>
|
|
<div class='bar'>
|
|
<div class='text'>
|
|
{{ unreadMessages }}
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='expired_alert'>
|
|
<a target='_blank' href='https://chrome.google.com/webstore/detail/bikioccmkafdpakkkcpdbppfkghcmihk'>
|
|
<button class='upgrade'>{{ upgrade }}</button>
|
|
</a>
|
|
{{ expiredWarning }}
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='toast'>
|
|
{{ toastMessage }}
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='hint'>
|
|
<p> {{ content }}</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='conversation-title'>
|
|
{{ #name }}
|
|
<span class='conversation-name' dir='auto'>{{ name }}</span>
|
|
{{ /name }}
|
|
{{ #number }}
|
|
<span class='conversation-number'>{{ number }}</span>
|
|
{{ /number }}
|
|
{{ #verified }}
|
|
<span class='verified'>✓ Verified</span>
|
|
{{ /verified }}
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='conversation'>
|
|
<div class='conversation-header {{ avatar.color }}'>
|
|
<div class='header-buttons left'>
|
|
<div class='vertical-align'>
|
|
<button class='back hide'></button>
|
|
</div>
|
|
</div>
|
|
<div class='header-buttons right'>
|
|
<div class='vertical-align'>
|
|
<div class='conversation-menu menu'>
|
|
<button class='hamburger' alt='conversation menu'></button>
|
|
<ul class='menu-list'>
|
|
<li class='disappearing-messages'>{{ disappearing-messages }}</li>
|
|
{{#group}}
|
|
<li class='show-members'>{{ show-members }}</li>
|
|
<!-- <li class='update-group'>Update group</li> -->
|
|
<!-- <li class='leave-group'>Leave group</li> -->
|
|
{{/group}}
|
|
{{^group}}
|
|
<li class='show-identity'>{{ show-identity }}</li>
|
|
<li class='end-session'>{{ end-session }}</li>
|
|
{{/group}}
|
|
<li class='destroy'>{{ destroy }}</li>
|
|
</ul>
|
|
</div>
|
|
<div class='timer-menu menu'>
|
|
<button class='clock' alt='timer menu'></button>
|
|
<ul class='menu-list'>
|
|
{{ #timer_options }}
|
|
<li data-seconds={{ attributes.seconds }}>{{ getName }}</li>
|
|
{{ /timer_options }}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<span class='conversation-title'></span>
|
|
{{> avatar }}
|
|
</div>
|
|
<div class='main panel'>
|
|
<div class='discussion-container'>
|
|
<div class='bar-container hide'>
|
|
<div class='bar active progress-bar-striped progress-bar'></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class='bottom-bar' id='footer'>
|
|
<form class='send clearfix'>
|
|
<div class='attachment-previews'></div>
|
|
<div class='flex'>
|
|
<div class='choose-file'>
|
|
<button class='paperclip thumbnail'></button>
|
|
<input type='file' class='file-input'>
|
|
</div>
|
|
<textarea class='send-message' placeholder='{{ send-message }}' rows='1' dir='auto'></textarea>
|
|
<div class='capture-audio'>
|
|
<button class='microphone'></button>
|
|
</div>
|
|
<div class='android-length-warning'>
|
|
{{ android-length-warning }}
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='recorder'>
|
|
<button class='finish'><span class='icon'></span></button>
|
|
<span class='time'>0:00</span>
|
|
<button class='close'><span class='icon'></span></button>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='lightbox'>
|
|
<div class='content'>
|
|
<div class='controls'>
|
|
<a class='x close' alt='Close image.' href='#'></a>
|
|
<a class='save' alt='Save as...' href='#'></a>
|
|
</div>
|
|
<img class='image' src='{{ url }}' />
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='confirmation-dialog'>
|
|
<div class="content">
|
|
<div class='message'>{{ message }}</div>
|
|
<div class='buttons'>
|
|
<button class='cancel'>{{ cancel }}</button>
|
|
<button class='ok'>{{ ok }}</button>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='attachment-preview'>
|
|
<img src='{{ source }}' class='preview' />
|
|
<a class='x close' alt='remove attachment' href='#'></a>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='file-view'>
|
|
<div class='icon {{ mediaType }}'></div>
|
|
<div class='text'>
|
|
<div class='fileName' title='{{ altText }}'>
|
|
{{ fileName }}
|
|
</div>
|
|
<div class='fileSize'>{{ fileSize }}</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='hasRetry'>
|
|
{{ messageNotSent }}
|
|
<span href='#' class='retry'>{{ resend }}</span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='keychange'>
|
|
<span class='content' dir='auto'>{{ content }}</span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='message'>
|
|
{{> avatar }}
|
|
<div class='bubble {{ avatar.color }}'>
|
|
<div class='sender' dir='auto'>{{ sender }}</div>
|
|
<div class='attachments'></div>
|
|
<p class='content' dir='auto'>
|
|
{{ #message }}<span class='body'>{{ message }}</span>{{ /message }}
|
|
</p>
|
|
<div class='meta'>
|
|
<span class='timestamp' data-timestamp={{ timestamp }}></span>
|
|
<span class='status hide'></span>
|
|
<span class='timer'></span>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='hourglass'>
|
|
<span class='hourglass'><span class='sand'></span></span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='expirationTimerUpdate'>
|
|
<span class='content'>{{ content }}</span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-group-update'>
|
|
<div class='conversation-header'>
|
|
<button class='back'></button>
|
|
<button class='send check'></button>
|
|
<span class='conversation-title'>Update group</span>
|
|
</div>
|
|
{{> group_info_input }}
|
|
<div class='container'>
|
|
<div class='scrollable'></div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='identicon-svg'>
|
|
<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
|
|
<circle cx='50' cy='50' r='40' fill='{{ color }}' />
|
|
<text text-anchor='middle' fill='white' font-family='sans-serif' font-size='24px' x='50' y='50' baseline-shift='-8px'>
|
|
{{ content }}
|
|
</text>
|
|
</svg>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='avatar'>
|
|
<span aria-hidden class='avatar
|
|
{{ ^avatar.url }}
|
|
{{ avatar.color }}
|
|
{{ /avatar.url }}
|
|
'
|
|
{{ #avatar.url }}
|
|
style='background-image: url("{{ avatar.url }}");'
|
|
{{ /avatar.url }}
|
|
>
|
|
{{ avatar.content }}
|
|
</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_name_and_number'>
|
|
<h3 class='name' dir='auto'> {{ title }} </h3>
|
|
<div class='number'>{{ #verified }}✓ Verified ·{{ /verified }} {{ number }}</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact'>
|
|
{{> avatar }}
|
|
<div class='contact-details {{ class }}'> {{> contact_name_and_number }} </div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-contact'>
|
|
{{> avatar }}
|
|
<div class='contact-details'>
|
|
{{> contact_name_and_number }}
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='conversation-preview'>
|
|
{{> avatar }}
|
|
<div class='contact-details'>
|
|
<span class='last-timestamp' data-timestamp='{{ last_message_timestamp }}' dir='auto' > </span>
|
|
{{> contact_name_and_number }}
|
|
{{ #unreadCount }}
|
|
<span class='unread-count'>{{ unreadCount }}</span>
|
|
{{ /unreadCount }}
|
|
{{ #last_message }}
|
|
<p class='last-message' dir='auto'> {{ last_message }} </p>
|
|
{{ /last_message }}
|
|
</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'>
|
|
{{ file-size-warning }}
|
|
({{ limit }}{{ units }})
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='attachment-type-modal'>
|
|
Sorry, your attachment has a type, {{type}}, that is not currently supported.
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='message-detail'>
|
|
<div class='container'>
|
|
<div class='message-container'></div>
|
|
<div class='info'>
|
|
<table>
|
|
{{ #errors }}
|
|
<tr>
|
|
<td class='label'>{{ errorLabel }}</td>
|
|
<td> <span class='error-message'>{{message}}</span> </td>
|
|
</tr>
|
|
{{ /errors }}
|
|
<tr>
|
|
<td class='label'>{{ sent }}</td>
|
|
<td> {{ sent_at }}</td>
|
|
</tr>
|
|
{{ #received_at }}
|
|
<tr>
|
|
<td class='label'>{{ received }}</td>
|
|
<td> {{ received_at }}</td>
|
|
</tr>
|
|
{{ /received_at }}
|
|
<tr> <td class='tofrom label'>{{tofrom}}</td> </tr>
|
|
</table>
|
|
<div class='contacts'>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='group-member-list'>
|
|
<div class='container'></div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='key-verification'>
|
|
<div class='container'>
|
|
{{ ^has_their_key }}
|
|
<div class='placeholder'>{{ their_key_unknown }}</div>
|
|
{{ /has_their_key }}
|
|
{{ #has_their_key }}
|
|
<label> {{ yourSafetyNumberWith }} </label>
|
|
<!--<div class='qr'></div>-->
|
|
<div class='key'>
|
|
{{ #chunks }} <span>{{ . }}</span> {{ /chunks }}
|
|
</div>
|
|
{{ /has_their_key }}
|
|
{{ verifyHelp }}
|
|
<p> {{> link_to_support }} </p>
|
|
<div class='verify'>
|
|
<button class='verify'>
|
|
{{ verifyButton }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<!-- index -->
|
|
<script type='text/x-tmpl-mustache' id='group_info_input'>
|
|
<div class='group-info-input'>
|
|
<div class='group-avatar'>
|
|
<div class='choose-file attachment-previews thumbnail'>
|
|
{{> avatar }}
|
|
</div>
|
|
<input type='file' name='avatar' class='file-input'>
|
|
</div>
|
|
<input type='text' name='name' class='name' placeholder='Group Name' value='{{ name }}'>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-conversation'>
|
|
<div class='conversation-header'>
|
|
<button class='back'></button>
|
|
<button class='create check hide'></button>
|
|
<span class='conversation-title'>New Message</span>
|
|
</div>
|
|
{{> group_info_input }}
|
|
<div class='container'>
|
|
<div class='scrollable'>
|
|
</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='{{ placeholder }}' dir='auto' />
|
|
</div>
|
|
<div class='results'>
|
|
<div class='new-contact contact hide'></div>
|
|
<div class='contacts'></div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='generic-error'>
|
|
<p>{{ message }}</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='error-icon'>
|
|
<span class='error-icon'>
|
|
</span>
|
|
{{ #message }}
|
|
<span class='error-message'>{{message}}</span>
|
|
{{ /message }}
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact-detail'>
|
|
<div class='clearfix'>
|
|
{{> avatar }}
|
|
<div class='contact-details'>
|
|
{{ #errors }}
|
|
<div class='error-icon-container'>
|
|
<span class='error-icon'></span>
|
|
</div>
|
|
{{ /errors }}
|
|
<span class='name' dir='auto'>{{ name }}</span>
|
|
{{ #errors }}
|
|
{{ #message }}
|
|
<p class='error-message'>{{message}}</p>
|
|
{{ /message }}
|
|
{{ /errors }}
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='link_to_support'>
|
|
<a href='http://support.whispersystems.org/hc/articles/213134107' target='_blank'>
|
|
{{ learnMore }}
|
|
</a>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='debug-log'>
|
|
<div class='content'>
|
|
<div>
|
|
<a class='x close' alt='close debug log' href='#'></a>
|
|
<h1> {{ title }} </h1>
|
|
<p> {{ debugLogExplanation }}</p>
|
|
</div>
|
|
<textarea rows='5'></textarea>
|
|
<div class='buttons'>
|
|
<button class='grey submit'>{{ submit }}</button>
|
|
</div>
|
|
<div class='result'>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='debug-log-link'>
|
|
<div class='input-group clearfix'>
|
|
<input type='text' class='link' readonly value='{{ url }}' />
|
|
<a class='open' alt='open in a new browser tab' target='_blank' href='{{ url }}'></a>
|
|
</div>
|
|
<p>
|
|
<a class='report-link' target='_blank'
|
|
href='https://github.com/WhisperSystems/Signal-Desktop/issues/new/'>
|
|
{{ reportIssue }}
|
|
</a>
|
|
</p>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='settings'>
|
|
<div class='content'>
|
|
<a class='x close' alt='close settings' href='#'></a>
|
|
<h2>{{ settings }}</h2>
|
|
<hr>
|
|
<div class='theme-settings'>
|
|
<h3>{{ theme }}</h3>
|
|
<div>
|
|
<input type='radio' name='theme' id='theme-setting-android' value='android'>
|
|
<label for='theme-setting-android'>Android</label>
|
|
</div>
|
|
<div>
|
|
<input type='radio' name='theme' id='theme-setting-android-dark' value='android-dark'>
|
|
<label for='theme-setting-android-dark'>{{ themeAndroidDark }}</label>
|
|
</div>
|
|
<div>
|
|
<input type='radio' name='theme' id='theme-setting-ios' value='ios'/>
|
|
<label for='theme-setting-ios'>iOS</label>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class='notification-settings'>
|
|
<h3>{{ notifications }}</h3>
|
|
<p>{{ notificationSettingsDialog }}</p>
|
|
<div>
|
|
<input type='radio' name='notifications' id='notification-setting-message' value='message'>
|
|
<label for='notification-setting-message'>{{ nameAndMessage }} </label>
|
|
</div>
|
|
<div>
|
|
<input type='radio' name='notifications' id='notification-setting-name' value='name'/>
|
|
<label for='notification-setting-name'>{{ nameOnly }} </label>
|
|
</div>
|
|
<div>
|
|
<input type='radio' name='notifications' id='notification-setting-count' value='count'/>
|
|
<label for='notification-setting-count'>{{ noNameOrMessage }} </label>
|
|
</div>
|
|
<div>
|
|
<input type='radio' name='notifications' id='notification-setting-off' value='off'/>
|
|
<label for='notification-setting-off'>{{ disableNotifications }} </label>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class='audio-notification-setting'>
|
|
<input type='checkbox' name='audio-notification' id='audio-notification'/>
|
|
<label for='audio-notification'>{{ audioNotificationDescription }}</label>
|
|
</div>
|
|
<hr>
|
|
<div class='safety-numbers-settings'>
|
|
<h3>{{ safetyNumbersSettingHeader }}</h3>
|
|
<input type='checkbox' name='safety-numbers-approval' id='safety-numbers-approval'/>
|
|
<label for='safety-numbers-approval'>{{ safetyNumbersSettingDescription }}</label>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='syncSettings'>
|
|
<hr>
|
|
<h3>{{ sync }}</h3>
|
|
<div>
|
|
<button class='grey sync'>{{ syncNow }}</button>
|
|
<p>
|
|
{{ syncExplanation }}
|
|
<div class='synced_at'>
|
|
{{ lastSynced }} {{ syncDate }} {{ syncTime }}
|
|
</div>
|
|
<div class='sync_failed'>{{ syncFailed }}</div>
|
|
</p>
|
|
</div>
|
|
</script>
|
|
|
|
<script type='text/x-tmpl-mustache' id='networkStatus'>
|
|
<div class='network-status-message'>
|
|
<h3>{{ message }}</h3>
|
|
<span>{{ instructions }}</span>
|
|
</div>
|
|
{{ #reconnectDurationAsSeconds }}
|
|
<div class="network-status-message">
|
|
{{ attemptingReconnectionMessage }}
|
|
</div>
|
|
{{/reconnectDurationAsSeconds }}
|
|
{{ #action }}
|
|
<div class="action">
|
|
<button class='small blue {{ buttonClass }}'>{{ action }}</button>
|
|
</div>
|
|
{{/action }}
|
|
</script>
|
|
|
|
<script type='text/x-tmpl-mustache' id='install_flow_template'>
|
|
<div id='step1' class='step'>
|
|
<div class='inner'>
|
|
<div class='step-body'>
|
|
<img id='signal-icon' src='/images/icon_250.png'/>
|
|
<h1>{{ installWelcome }}</h1>
|
|
<p>{{ installTagline }}</p>
|
|
</div>
|
|
<div class='nav'>
|
|
<div> <a class='button step2'>{{ installGetStartedButton }}</a> </div>
|
|
<span class='dot step1 selected'></span>
|
|
<span class='dot step2'></span>
|
|
<span class='dot step3'></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id='step2' class='step'>
|
|
<div class='inner'>
|
|
<div class='step-body'>
|
|
<img id='signal-phone' src='/images/signal-phone.png'>
|
|
<p>{{{ installSignalLink }}}</p>
|
|
</div>
|
|
<div class='nav'>
|
|
<div> <a class='button step3'>{{ installIHaveSignalButton }}</a> </div>
|
|
<span class='dot step1'></span>
|
|
<span class='dot step2 selected'></span>
|
|
<span class='dot step3'></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id='step3' class='step'>
|
|
<div class='inner'>
|
|
<div class='step-body'>
|
|
<div id="qr"></div>
|
|
<p>{{ installAndroidInstructions }}</p>
|
|
</div>
|
|
<div class='nav'>
|
|
<span class='dot step1'></span>
|
|
<span class='dot step2'></span>
|
|
<span class='dot step3 selected'></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<form id='step4' class='step'>
|
|
<div class='inner'>
|
|
<div class='step-body'>
|
|
<p>{{ installLinkingWithNumber }}</p>
|
|
<h2 class='number'></h2>
|
|
<img id='signal-computer' src='/images/signal-laptop.png'>
|
|
<p>{{ installComputerName }}</p>
|
|
<div>
|
|
<input type='text' id='device-name' spellcheck='false' maxlength='50' />
|
|
</div>
|
|
</div>
|
|
<div class='nav'>
|
|
<div>
|
|
<input type='submit' class='button' id='sync' value='{{ installFinalButton }}' />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
<div id='step5' class='step'>
|
|
<div class='inner'>
|
|
<div class='step-body'>
|
|
<img id='signal-icon' src='/images/icon_250.png'/>
|
|
<div class='progress-dialog'>
|
|
<p class='status'></p>
|
|
<div class='bar-container'><div class='bar progress-bar'></div></div>
|
|
</div>
|
|
</div>
|
|
<div class='nav'>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id='stepTooManyDevices' class='step'>
|
|
<div class='inner error-dialog clearfix'>
|
|
<div class='panel step-body'>{{ installTooManyDevices }}</div>
|
|
<div class='nav'>
|
|
<button class='ok step3'>{{ ok }}</button>
|
|
</div>
|
|
</div>
|
|
</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/debugLog.js'></script>
|
|
<script type='text/javascript' src='js/storage.js'></script>
|
|
<script type='text/javascript' src='js/signal_protocol_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/delivery_receipts.js'></script>
|
|
<script type='text/javascript' src='js/read_receipts.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/models/blockedNumbers.js'></script>
|
|
<script type='text/javascript' src='js/expiring_messages.js'></script>
|
|
|
|
<script type='text/javascript' src='js/chromium.js'></script>
|
|
<script type='text/javascript' src='js/registration.js'></script>
|
|
<script type='text/javascript' src='js/expire.js'></script>
|
|
<script type='text/javascript' src='js/conversation_controller.js'></script>
|
|
<script type='text/javascript' src='js/panel_controller.js'></script>
|
|
<script type='text/javascript' src='js/emoji_util.js'></script>
|
|
|
|
<script type='text/javascript' src='js/views/whisper_view.js'></script>
|
|
<script type='text/javascript' src='js/views/last_seen_indicator_view.js'></script>
|
|
<script type='text/javascript' src='js/views/scroll_down_button_view.js'></script>
|
|
<script type='text/javascript' src='js/views/debug_log_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/contact_list_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/error_view.js'></script>
|
|
<script type='text/javascript' src='js/views/timestamp_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/group_member_list_view.js'></script>
|
|
<script type='text/javascript' src='js/views/recorder_view.js'></script>
|
|
<script type='text/javascript' src='js/views/conversation_view.js'></script>
|
|
<script type='text/javascript' src='js/views/conversation_search_view.js'></script>
|
|
<script type='text/javascript' src='js/views/hint_view.js'></script>
|
|
<script type='text/javascript' src='js/views/inbox_view.js'></script>
|
|
<script type='text/javascript' src='js/views/network_status_view.js'></script>
|
|
<script type='text/javascript' src='js/views/confirmation_dialog_view.js'></script>
|
|
<script type='text/javascript' src='js/views/identicon_svg_view.js'></script>
|
|
<script type='text/javascript' src='js/views/settings_view.js'></script>
|
|
<script type="text/javascript" src="js/views/install_view.js"></script>
|
|
|
|
<script type='text/javascript' src='js/wall_clock_listener.js'></script>
|
|
<script type='text/javascript' src='js/rotate_signed_prekey_listener.js'></script>
|
|
<script type='text/javascript' src='js/keychange_listener.js'></script>
|
|
<script type='text/javascript' src='js/background.js'></script>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|