Fix some obvious things now that the RPC is slightly better.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3957 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
d70dba021a
commit
fc9c3982c2
@ -1 +1 @@
|
|||||||
{"type":"tildefriends-app","files":{"app.js":"&xotWQ8M3xgnWAPM/1TdrLmkcCyxGPiXqg9CsBm2ngcc=.sha256","index.html":"&PrdNng+/SYCFSEbx+E7tMKxs4/ypPDxbRlak4tGN/SM=.sha256","lit.min.js":"&3FfrVflmGr0n4lvN0GriN1Qz1lEw31SbZxRSJrcXR28=.sha256","script.js":"&hW7AyNMgC+paQBFDcggxmhwNWmEY+5HofubRalcz6u8=.sha256"}}
|
{"type":"tildefriends-app","files":{"app.js":"&NhFznWHPiG2TKpaGK+DrqzCr67trV3wYgDS+xwZml+Q=.sha256","index.html":"&PrdNng+/SYCFSEbx+E7tMKxs4/ypPDxbRlak4tGN/SM=.sha256","lit.min.js":"&3FfrVflmGr0n4lvN0GriN1Qz1lEw31SbZxRSJrcXR28=.sha256","script.js":"&hgxmXRvzwz27iH2BATFq20aLX4rtvL/AI/5QJV487XM=.sha256"}}
|
@ -5,9 +5,10 @@ tfrpc.register(function delete_user(user) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
let data = {
|
let data = {users: {}};
|
||||||
users: await core.users(),
|
for (let user of await core.users()) {
|
||||||
};
|
data.users[user] = await core.permissionsForUser(user);
|
||||||
|
}
|
||||||
await app.setDocument(utf8Decode(getFile('index.html')).replace('$data', JSON.stringify(data)));
|
await app.setDocument(utf8Decode(getFile('index.html')).replace('$data', JSON.stringify(data)));
|
||||||
}
|
}
|
||||||
main();
|
main();
|
@ -12,10 +12,20 @@ function delete_user(user) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('load', function() {
|
window.addEventListener('load', function() {
|
||||||
const user_template = (user) => html`<li><button @click=${(e) => delete_user(user)}>Delete</button> ${user}</li>`;
|
const permission_template = (permission) =>
|
||||||
|
html` <code>${permission}</code>`;
|
||||||
|
const user_template = (user, permissions) => html`
|
||||||
|
<li>
|
||||||
|
<button @click=${(e) => delete_user(user)}>
|
||||||
|
Delete
|
||||||
|
</button>
|
||||||
|
${user}:
|
||||||
|
${permissions.map(x => permission_template(x))}
|
||||||
|
</li>
|
||||||
|
`;
|
||||||
const users_template = (users) =>
|
const users_template = (users) =>
|
||||||
html`<ul>
|
html`<ul>
|
||||||
${users.map(u => user_template(u))}
|
${users.map(u => user_template(u[0], u[1]))}
|
||||||
</ul>`;
|
</ul>`;
|
||||||
render(users_template(g_data.users), document.body);
|
render(users_template(Object.entries(g_data.users)), document.body);
|
||||||
});
|
});
|
@ -1 +1 @@
|
|||||||
{"type":"tildefriends-app","files":{"app.js":"&bblne6t8jCLxRO/NJ9LhacmC/mjvx69xAyGsOVAOteI=.sha256","index.html":"&SFYAxbNRcpB1WU6vH8sL7oYzHsumyErk5mfN+UGU0Ck=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&kQhf+sq/eFsfa7jHPhw7trycL02fZ0YAKfX46tiqwNs=.sha256","tf-message.js":"&uMXQxfJ3eeVE6Ta2LMAvb0XA1KztMTD4pApYnfBc1Nc=.sha256","tf.js":"&9e2q6GPmU2PC4K+/+Qc6mOskPE5/SH73g3Vj7SaRfE0=.sha256","commonmark.min.js":"&EP0OeR9zyLwZannz+0ga4s9AGES2RLvvIIQYHqqV6+k=.sha256","vue.js":"&g1wvA+yHl1sVC+eufTsg9If7ZeVyMTBU+h0tks7ZNzE=.sha256","vue-material-theme-default-dark.css":"&RP2nr+2CR18BpHHw5ST9a5GJUCOG9n0G2kuGkcQioWE=.sha256","vue-material.min.css":"&kGbUM2QgFSyHZRzqQb0b+0S3EVIlZ0AXpdiAVjIhou8=.sha256","roboto.css":"&jJv43Om673mQO5JK0jj7714s5E+5Yrf82H6LcDx7wUs=.sha256","material-icons.css":"&a28PdcVvgq/DxyIvJAx/e+ZOEtOuHnr3kjLWKyzH11M=.sha256","tf-shared.js":"&MPINm55jkpz2rrNbwsYl09PKGvbgL3nwgBy6CMQkSnw=.sha256","style.css":"&qegBNCrVUihxffRUxGFuG/6u+0Y6d18zHtfNHBZtZ04=.sha256"}}
|
{"type":"tildefriends-app","files":{"app.js":"&W/og3+Bmi2YJJ9PudClLLIhK5ZgplUMpsOowSF5o05s=.sha256","index.html":"&ye2GeqCrDi3Dbl3UVIfE8H5GzCxN8O46FWj5zhLnZAw=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&cI/JLy83mOngcqYCEP8Vej8urDvAQAV1WxFsL67/K3M=.sha256","tf-message.js":"&JVARtJEQkq3XjjL0Jv/NUDkO2WZnXGIqkWsqYvTPXBI=.sha256","tf.js":"&m6it9k3I6Ou1xhckbtoMlAg9Y1tca5HV9GUmuFqPD7k=.sha256","commonmark.min.js":"&EP0OeR9zyLwZannz+0ga4s9AGES2RLvvIIQYHqqV6+k=.sha256","vue.js":"&g1wvA+yHl1sVC+eufTsg9If7ZeVyMTBU+h0tks7ZNzE=.sha256","vue-material-theme-default-dark.css":"&RP2nr+2CR18BpHHw5ST9a5GJUCOG9n0G2kuGkcQioWE=.sha256","vue-material.min.css":"&kGbUM2QgFSyHZRzqQb0b+0S3EVIlZ0AXpdiAVjIhou8=.sha256","roboto.css":"&jJv43Om673mQO5JK0jj7714s5E+5Yrf82H6LcDx7wUs=.sha256","material-icons.css":"&a28PdcVvgq/DxyIvJAx/e+ZOEtOuHnr3kjLWKyzH11M=.sha256","tf-shared.js":"&LXyUSm6zSakN/ghJlZ1Qg2VJfV5alhN0gl8F7txIIOU=.sha256","style.css":"&qegBNCrVUihxffRUxGFuG/6u+0Y6d18zHtfNHBZtZ04=.sha256"}}
|
@ -396,9 +396,10 @@ async function getPosts(db, ids) {
|
|||||||
|
|
||||||
tfrpc.register(async function ready() {
|
tfrpc.register(async function ready() {
|
||||||
let identities = await ssb.getIdentities();
|
let identities = await ssb.getIdentities();
|
||||||
|
let whoami = await app.localStorageGet('whoami');
|
||||||
await tfrpc.rpc.set_identities(identities);
|
await tfrpc.rpc.set_identities(identities);
|
||||||
g_ready = true;
|
g_ready = true;
|
||||||
refresh_internal(g_whoami, g_selected, true);
|
refresh_internal(whoami, g_selected, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
tfrpc.register(async function store_blob(blob) {
|
tfrpc.register(async function store_blob(blob) {
|
||||||
@ -442,11 +443,10 @@ async function updateSequences(db) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function refresh_internal(whoami, selected, force) {
|
async function refresh_internal(whoami, selected, force) {
|
||||||
if (!g_ready) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let hash = selected || undefined;
|
|
||||||
if (whoami !== g_whoami || selected !== g_selected || force) {
|
if (whoami !== g_whoami || selected !== g_selected || force) {
|
||||||
|
if (g_whoami !== whoami && whoami) {
|
||||||
|
await app.localStorageSet('whoami', whoami);
|
||||||
|
}
|
||||||
g_whoami = whoami;
|
g_whoami = whoami;
|
||||||
g_selected = selected;
|
g_selected = selected;
|
||||||
} else {
|
} else {
|
||||||
@ -455,12 +455,16 @@ async function refresh_internal(whoami, selected, force) {
|
|||||||
if (typeof(whoami) !== 'string') {
|
if (typeof(whoami) !== 'string') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!g_ready) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var timing = [];
|
var timing = [];
|
||||||
timing.push({name: 'start', time: new Date()});
|
timing.push({name: 'start', time: new Date()});
|
||||||
g_following_cache = {};
|
g_following_cache = {};
|
||||||
g_following_deep_cache = {};
|
g_following_deep_cache = {};
|
||||||
await tfrpc.rpc.clear();
|
await tfrpc.rpc.clear();
|
||||||
await tfrpc.rpc.set_identities(await ssb.getIdentities());
|
await tfrpc.rpc.set_identities(await ssb.getIdentities());
|
||||||
|
await tfrpc.rpc.set('selected', selected);
|
||||||
var db = await database("ssb");
|
var db = await database("ssb");
|
||||||
g_sequence = {};
|
g_sequence = {};
|
||||||
try {
|
try {
|
||||||
@ -598,13 +602,8 @@ core.register('message', async function(m) {
|
|||||||
}
|
}
|
||||||
} else if (m.event == 'hashChange') {
|
} else if (m.event == 'hashChange') {
|
||||||
let hash = m.hash.length > 1 ? m.hash.substring(1) : null;
|
let hash = m.hash.length > 1 ? m.hash.substring(1) : null;
|
||||||
if (hash) {
|
let changed = g_selected !== hash;
|
||||||
let parts = hash.split(':');
|
await refresh_internal(g_whoami, hash, changed);
|
||||||
let changed = g_whoami !== parts[0] || g_selected !== parts[1];
|
|
||||||
g_whoami = parts[0];
|
|
||||||
g_selected = parts[1];
|
|
||||||
await refresh_internal(g_whoami, g_selected, changed);
|
|
||||||
}
|
|
||||||
} else if (m.event == 'focus' || m.event == 'blur') {
|
} else if (m.event == 'focus' || m.event == 'blur') {
|
||||||
/* Shh. */
|
/* Shh. */
|
||||||
} else {
|
} else {
|
||||||
|
@ -110,7 +110,7 @@
|
|||||||
</md-card-actions>
|
</md-card-actions>
|
||||||
</md-card>
|
</md-card>
|
||||||
|
|
||||||
<md-button v-if="selected?.length" class="md-raised md-primary" style="margin: 1em" @click="selected = null">
|
<md-button v-if="selected !== undefined" class="md-raised md-primary" style="margin: 1em" @click="selected = null">
|
||||||
<md-icon>home</md-icon> Home
|
<md-icon>home</md-icon> Home
|
||||||
</md-button>
|
</md-button>
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Vue.component('tf-message', {
|
|||||||
show_message: function() {
|
show_message: function() {
|
||||||
window.parent.postMessage({
|
window.parent.postMessage({
|
||||||
action: 'setHash',
|
action: 'setHash',
|
||||||
hash: tf.g_data.whoami + ':' + this.message.id,
|
hash: this.message.id,
|
||||||
}, '*');
|
}, '*');
|
||||||
},
|
},
|
||||||
expand_image: function(event) {
|
expand_image: function(event) {
|
||||||
@ -89,7 +89,12 @@ Vue.component('tf-message', {
|
|||||||
img.style.objectFit = 'contain';
|
img.style.objectFit = 'contain';
|
||||||
img.style.width = '100%';
|
img.style.width = '100%';
|
||||||
div.appendChild(img);
|
div.appendChild(img);
|
||||||
div.onclick = function() { document.body.removeChild(div); };
|
function image_close(event) {
|
||||||
|
document.body.removeChild(div);
|
||||||
|
window.removeEventListener('keydown', image_close);
|
||||||
|
}
|
||||||
|
div.onclick = image_close;
|
||||||
|
window.addEventListener('keydown', image_close);
|
||||||
document.body.appendChild(div);
|
document.body.appendChild(div);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import * as tf from './tf.js';
|
||||||
|
|
||||||
export function markdown(md) {
|
export function markdown(md) {
|
||||||
var reader = new commonmark.Parser({safe: true});
|
var reader = new commonmark.Parser({safe: true});
|
||||||
var writer = new commonmark.HtmlRenderer();
|
var writer = new commonmark.HtmlRenderer();
|
||||||
|
@ -15,12 +15,12 @@ Vue.component('tf-user', {
|
|||||||
show_user: function() {
|
show_user: function() {
|
||||||
window.parent.postMessage({
|
window.parent.postMessage({
|
||||||
action: 'setHash',
|
action: 'setHash',
|
||||||
hash: tf.g_data.whoami + ':' + this.id,
|
hash: this.id,
|
||||||
}, '*');
|
}, '*');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
template: `<md-chip :class="following ? 'md-accent' : ''">
|
template: `<md-chip :class="following ? 'md-accent' : ''">
|
||||||
<a :href="'#' + whoami + ':' + id" style="color: #fff">{{users[id] && users[id].name ? users[id].name : id}}</a>
|
<a :href="'#' + id" style="color: #fff">{{users[id] && users[id].name ? users[id].name : id}}</a>
|
||||||
<md-tooltip v-if="users[id] && users[id].name">{{id}}</md-tooltip>
|
<md-tooltip v-if="users[id] && users[id].name">{{id}}</md-tooltip>
|
||||||
</md-chip>`,
|
</md-chip>`,
|
||||||
});
|
});
|
@ -262,9 +262,7 @@ window.addEventListener('load', function() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
set_hash() {
|
set_hash() {
|
||||||
let hash = this.whoami && this.selected ?
|
let hash = this.selected ?? '#';
|
||||||
this.whoami + ':' + this.selected :
|
|
||||||
(this.whoami ? this.whoami : '#');
|
|
||||||
window.parent.postMessage({
|
window.parent.postMessage({
|
||||||
action: 'setHash',
|
action: 'setHash',
|
||||||
hash: hash,
|
hash: hash,
|
||||||
|
Loading…
Reference in New Issue
Block a user