mirror of
https://github.com/irislib/iris-messenger.git
synced 2024-10-18 22:23:23 +00:00
StaleWhileRevalidate, bgsync, email privkey to yourself
This commit is contained in:
parent
8041583292
commit
88b931d364
2
dist/200.html
vendored
2
dist/200.html
vendored
File diff suppressed because one or more lines are too long
1529
dist/bundle.68229.esm.js
vendored
1529
dist/bundle.68229.esm.js
vendored
File diff suppressed because one or more lines are too long
1
dist/bundle.68229.esm.js.map
vendored
1
dist/bundle.68229.esm.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/bundle.e2ee3.js
vendored
2
dist/bundle.e2ee3.js
vendored
File diff suppressed because one or more lines are too long
1
dist/bundle.e2ee3.js.map
vendored
1
dist/bundle.e2ee3.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/index.html
vendored
2
dist/index.html
vendored
File diff suppressed because one or more lines are too long
2
dist/push-manifest.json
vendored
2
dist/push-manifest.json
vendored
@ -1 +1 @@
|
||||
{"/":{"bundle.61bf3.css":{"type":"style","weight":1},"bundle.68229.esm.js":{"type":"script","weight":1}}}
|
||||
{"/":{"bundle.61bf3.css":{"type":"style","weight":1},"bundle.a5476.esm.js":{"type":"script","weight":1}}}
|
2
dist/sw-esm.js
vendored
2
dist/sw-esm.js
vendored
File diff suppressed because one or more lines are too long
2
dist/sw-esm.js.map
vendored
2
dist/sw-esm.js.map
vendored
File diff suppressed because one or more lines are too long
@ -121,6 +121,9 @@ export default {
|
||||
feed_top: 'Newest',
|
||||
feed_down: 'Older',
|
||||
feed_bottom: 'Oldest',
|
||||
email_privkey_to_yourself: 'Email the private key to yourself',
|
||||
email: "Email",
|
||||
retype_email: "Retype email",
|
||||
email_optional: "Email (optional)",
|
||||
delivery: "Delivery",
|
||||
address: "Address",
|
||||
|
@ -40,7 +40,6 @@ class MessageFeed extends Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
console.log(this.props);
|
||||
let first = true;
|
||||
State.local.get('scrollUp').on(() => {
|
||||
!first && Helpers.animateScrollTop('.main-view');
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Component } from 'preact';
|
||||
import { Component, createRef } from 'preact';
|
||||
import Helpers, {html} from '../Helpers.js';
|
||||
import Session from "../Session.js";
|
||||
import { translate as tr } from '../Translation.js';
|
||||
@ -12,10 +12,8 @@ const isAudio = f => isOfType(f, ['.mp3', '.wav', '.m4a']);
|
||||
const isImage = f => isOfType(f, ['.jpg', 'jpeg', '.gif', '.png']);
|
||||
|
||||
class Torrent extends Component {
|
||||
constructor() {
|
||||
super();
|
||||
this.eventListeners = {};
|
||||
}
|
||||
eventListeners = {};
|
||||
coverRef = createRef();
|
||||
|
||||
componentDidMount() {
|
||||
State.local.get('player').on((player,a,b,e) => {
|
||||
@ -142,13 +140,14 @@ class Torrent extends Component {
|
||||
}
|
||||
|
||||
onTorrent(torrent, clicked) {
|
||||
if (!this.coverRef.current) { return; }
|
||||
this.torrent = torrent;
|
||||
const video = torrent.files.find(f => isVideo(f));
|
||||
const audio = torrent.files.find(f => isAudio(f));
|
||||
const img = torrent.files.find(f => isImage(f));
|
||||
let poster = torrent.files.find(f => isImage(f) && (f.name.indexOf('cover') > -1 || f.name.indexOf('poster') > -1));
|
||||
poster = poster || img;
|
||||
poster && poster.appendTo($(this.base).find('.cover').get(0));
|
||||
poster && poster.appendTo(this.coverRef.current);
|
||||
|
||||
const file = this.getActiveFile(torrent) || video || audio || img || torrent.files[0];
|
||||
this.setState({torrent, cover: img});
|
||||
@ -184,7 +183,7 @@ class Torrent extends Component {
|
||||
<a href="" onClick=${e => this.openTorrentClicked(e)}>Show attachment</a>
|
||||
`:''}
|
||||
${s.torrenting && !s.torrent ? html`<p>Loading attachment...</p>`:''}
|
||||
<div class="cover" style=${s.isAudioOpen ? '' : 'display:none'}></div>
|
||||
<div class="cover" ref=${this.coverRef} style=${s.isAudioOpen ? '' : 'display:none'}></div>
|
||||
<div class="info">
|
||||
${s.splitPath ? s.splitPath.map(
|
||||
(str, i) => {
|
||||
|
@ -29,6 +29,13 @@ class Settings extends View {
|
||||
State.public.user().get('profile').get('photo').put(src);
|
||||
}
|
||||
|
||||
mailtoSubmit(e) {
|
||||
e.preventDefault();
|
||||
if (this.state.email && this.state.email === this.state.retypeEmail) {
|
||||
window.location.href = `mailto:${this.state.email}?&subject=Iris%20private%20key&body=${JSON.stringify(Session.getKey())}`;
|
||||
}
|
||||
}
|
||||
|
||||
renderView() {
|
||||
const blockedUsers = _.filter(Object.keys(this.state.blockedUsers), user => this.state.blockedUsers[user]);
|
||||
return html`
|
||||
@ -54,6 +61,16 @@ class Settings extends View {
|
||||
<button onClick=${e => togglePrivateKeyQR(e)}>${t('show_privkey_qr')}</button>
|
||||
</p>
|
||||
<div id="private-key-qr" class="qr-container"></div>
|
||||
<p>
|
||||
${t('email_privkey_to_yourself')}:
|
||||
</p>
|
||||
<p>
|
||||
<form onSubmit=${e => this.mailtoSubmit(e)}>
|
||||
<input name="email" type="email" onChange=${e => this.setState({email:e.target.value.trim()})} placeholder=${t('email')}/>
|
||||
<input name="verify_email" type="email" onChange=${e => this.setState({retypeEmail:e.target.value.trim()})} placeholder=${t('retype_email')}/>
|
||||
<button type="submit">${t('go')}</button>
|
||||
</form>
|
||||
</p>
|
||||
<p><small dangerouslySetInnerHTML=${{ __html: t('privkey_storage_recommendation')}}></small></p>
|
||||
<hr/>
|
||||
<h3>${t('language')}</h3>
|
||||
|
18
src/sw.js
18
src/sw.js
@ -1,7 +1,25 @@
|
||||
import Gun from 'gun';
|
||||
import localforage from './js/lib/localforage.min.js';
|
||||
import { getFiles, setupPrecaching, setupRouting } from 'preact-cli/sw';
|
||||
import { registerRoute } from 'workbox-routing';
|
||||
import {StaleWhileRevalidate, NetworkOnly} from 'workbox-strategies';
|
||||
import { BackgroundSyncPlugin } from 'workbox-background-sync';
|
||||
|
||||
const bgSyncPlugin = new BackgroundSyncPlugin('apiRequests', {
|
||||
maxRetentionTime: 14 * 24 * 60
|
||||
});
|
||||
|
||||
registerRoute(
|
||||
'https://iris-notifications.herokuapp.com/notify',
|
||||
new NetworkOnly({
|
||||
plugins: [bgSyncPlugin]
|
||||
}),
|
||||
'POST'
|
||||
);
|
||||
registerRoute(
|
||||
() => true,
|
||||
new StaleWhileRevalidate()
|
||||
);
|
||||
setupRouting();
|
||||
|
||||
const urlsToCache = getFiles();
|
||||
|
Loading…
Reference in New Issue
Block a user