ssb: Shore more context when presenting a request for permissions to post a message.
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 18m38s
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 18m38s
This commit is contained in:
@@ -29,7 +29,10 @@ const k_api = {
|
|||||||
error: {args: ['error'], func: api_error},
|
error: {args: ['error'], func: api_error},
|
||||||
localStorageSet: {args: ['key', 'value'], func: api_localStorageSet},
|
localStorageSet: {args: ['key', 'value'], func: api_localStorageSet},
|
||||||
localStorageGet: {args: ['key'], func: api_localStorageGet},
|
localStorageGet: {args: ['key'], func: api_localStorageGet},
|
||||||
requestPermission: {args: ['permission', 'id'], func: api_requestPermission},
|
requestPermission: {
|
||||||
|
args: ['permission', 'id', 'description'],
|
||||||
|
func: api_requestPermission,
|
||||||
|
},
|
||||||
print: {args: ['...'], func: api_print},
|
print: {args: ['...'], func: api_print},
|
||||||
setHash: {args: ['hash'], func: api_setHash},
|
setHash: {args: ['hash'], func: api_setHash},
|
||||||
};
|
};
|
||||||
@@ -1222,10 +1225,10 @@ function api_localStorageGet(key) {
|
|||||||
/**
|
/**
|
||||||
* Request a permission
|
* Request a permission
|
||||||
* @param permission The permission to request.
|
* @param permission The permission to request.
|
||||||
* @param id The id requeesting the permission.
|
* @param description An optional human-readable description of the action for which the permission is being requested.
|
||||||
* @return A promise fulfilled if the permission was granted.
|
* @return A promise fulfilled if the permission was granted.
|
||||||
*/
|
*/
|
||||||
function api_requestPermission(permission, id) {
|
function api_requestPermission(permission, description) {
|
||||||
let outer = document.createElement('div');
|
let outer = document.createElement('div');
|
||||||
outer.classList.add('permissions');
|
outer.classList.add('permissions');
|
||||||
|
|
||||||
@@ -1242,6 +1245,16 @@ function api_requestPermission(permission, id) {
|
|||||||
div.appendChild(span);
|
div.appendChild(span);
|
||||||
container.appendChild(div);
|
container.appendChild(div);
|
||||||
|
|
||||||
|
if (description) {
|
||||||
|
container.appendChild(document.createTextNode('for the action:'));
|
||||||
|
let description_div = document.createElement('div');
|
||||||
|
description_div.classList.add('w3-border');
|
||||||
|
description_div.style.maxHeight = '3em';
|
||||||
|
description_div.style.overflow = 'auto';
|
||||||
|
description_div.appendChild(document.createTextNode(description));
|
||||||
|
container.appendChild(description_div);
|
||||||
|
}
|
||||||
|
|
||||||
div = document.createElement('div');
|
div = document.createElement('div');
|
||||||
div.style = 'padding: 1em';
|
div.style = 'padding: 1em';
|
||||||
let check = document.createElement('input');
|
let check = document.createElement('input');
|
||||||
|
|||||||
16
core/core.js
16
core/core.js
@@ -212,7 +212,7 @@ async function getProcessBlob(blobId, key, options) {
|
|||||||
return settings.userPermissions[user];
|
return settings.userPermissions[user];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
permissionTest: async function (permission) {
|
permissionTest: async function (permission, description) {
|
||||||
let user = process?.credentials?.session?.name;
|
let user = process?.credentials?.session?.name;
|
||||||
let settings = await loadSettings();
|
let settings = await loadSettings();
|
||||||
if (!user || !options?.packageOwner || !options?.packageName) {
|
if (!user || !options?.packageOwner || !options?.packageName) {
|
||||||
@@ -239,7 +239,7 @@ async function getProcessBlob(blobId, key, options) {
|
|||||||
}
|
}
|
||||||
} else if (process.app) {
|
} else if (process.app) {
|
||||||
return process.app
|
return process.app
|
||||||
.makeFunction(['requestPermission'])(permission)
|
.makeFunction(['requestPermission'])(permission, description)
|
||||||
.then(async function (value) {
|
.then(async function (value) {
|
||||||
if (value == 'allow') {
|
if (value == 'allow') {
|
||||||
await ssb.setUserPermission(
|
await ssb.setUserPermission(
|
||||||
@@ -436,8 +436,18 @@ async function getProcessBlob(blobId, key, options) {
|
|||||||
process.credentials.session &&
|
process.credentials.session &&
|
||||||
process.credentials.session.name
|
process.credentials.session.name
|
||||||
) {
|
) {
|
||||||
|
let action;
|
||||||
|
try {
|
||||||
|
if (message?.type === 'vote' && message?.vote?.expression) {
|
||||||
|
action = `React with ${message?.vote?.expression}.`;
|
||||||
|
} else if (typeof message === 'string') {
|
||||||
|
action = `Post a private message.`;
|
||||||
|
} else {
|
||||||
|
action = `Post a ${message?.type}.`;
|
||||||
|
}
|
||||||
|
} catch {}
|
||||||
return Promise.resolve(
|
return Promise.resolve(
|
||||||
imports.core.permissionTest('ssb_append')
|
imports.core.permissionTest('ssb_append', action)
|
||||||
).then(function () {
|
).then(function () {
|
||||||
return ssb.appendMessageWithIdentity(
|
return ssb.appendMessageWithIdentity(
|
||||||
process.credentials.session.name,
|
process.credentials.session.name,
|
||||||
|
|||||||
@@ -152,4 +152,5 @@ body {
|
|||||||
border-bottom: 4px solid #fff;
|
border-bottom: 4px solid #fff;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
max-width: 80%;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user