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},
|
||||
localStorageSet: {args: ['key', 'value'], func: api_localStorageSet},
|
||||
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},
|
||||
setHash: {args: ['hash'], func: api_setHash},
|
||||
};
|
||||
@@ -1222,10 +1225,10 @@ function api_localStorageGet(key) {
|
||||
/**
|
||||
* Request a permission
|
||||
* @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.
|
||||
*/
|
||||
function api_requestPermission(permission, id) {
|
||||
function api_requestPermission(permission, description) {
|
||||
let outer = document.createElement('div');
|
||||
outer.classList.add('permissions');
|
||||
|
||||
@@ -1242,6 +1245,16 @@ function api_requestPermission(permission, id) {
|
||||
div.appendChild(span);
|
||||
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.style = 'padding: 1em';
|
||||
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];
|
||||
}
|
||||
},
|
||||
permissionTest: async function (permission) {
|
||||
permissionTest: async function (permission, description) {
|
||||
let user = process?.credentials?.session?.name;
|
||||
let settings = await loadSettings();
|
||||
if (!user || !options?.packageOwner || !options?.packageName) {
|
||||
@@ -239,7 +239,7 @@ async function getProcessBlob(blobId, key, options) {
|
||||
}
|
||||
} else if (process.app) {
|
||||
return process.app
|
||||
.makeFunction(['requestPermission'])(permission)
|
||||
.makeFunction(['requestPermission'])(permission, description)
|
||||
.then(async function (value) {
|
||||
if (value == 'allow') {
|
||||
await ssb.setUserPermission(
|
||||
@@ -436,8 +436,18 @@ async function getProcessBlob(blobId, key, options) {
|
||||
process.credentials.session &&
|
||||
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(
|
||||
imports.core.permissionTest('ssb_append')
|
||||
imports.core.permissionTest('ssb_append', action)
|
||||
).then(function () {
|
||||
return ssb.appendMessageWithIdentity(
|
||||
process.credentials.session.name,
|
||||
|
||||
@@ -152,4 +152,5 @@ body {
|
||||
border-bottom: 4px solid #fff;
|
||||
padding: 1em;
|
||||
margin: 0 auto;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user