forked from cory/tildefriends
Add a thing to remove apps from your app list. Should I have called in 'uninstall'?
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3916 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
c9e01f220d
commit
718383205b
@ -366,6 +366,22 @@ function save(save_to) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteApp() {
|
||||||
|
let name = document.getElementById("name");
|
||||||
|
let path = name && name.value ? name.value : url();
|
||||||
|
|
||||||
|
if (confirm(`Are you sure you want to delete the app '${path}'?`)) {
|
||||||
|
fetch(path + 'delete').then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(response.status + ' ' + response.statusText);
|
||||||
|
}
|
||||||
|
alert('Deleted.');
|
||||||
|
}).catch(function(error) {
|
||||||
|
alert(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function pullFromParent() {
|
function pullFromParent() {
|
||||||
load(gParentApp ? gParentApp.path : null).then(x => save()).catch(function(error) {
|
load(gParentApp ? gParentApp.path : null).then(x => save()).catch(function(error) {
|
||||||
alert(error)
|
alert(error)
|
||||||
|
30
core/core.js
30
core/core.js
@ -459,6 +459,34 @@ async function blobHandler(request, response, blobId, uri) {
|
|||||||
|
|
||||||
response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});
|
response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});
|
||||||
response.end("/" + newBlobId);
|
response.end("/" + newBlobId);
|
||||||
|
} else if (uri == "/delete") {
|
||||||
|
let match;
|
||||||
|
if (match = /^\/\~(\w+)\/(\w+)$/.exec(blobId)) {
|
||||||
|
var user = match[1];
|
||||||
|
var appName = match[2];
|
||||||
|
var credentials = auth.query(request.headers);
|
||||||
|
if (credentials && credentials.session &&
|
||||||
|
(credentials.session.name == user ||
|
||||||
|
(credentials.permissions.administration && user == 'core'))) {
|
||||||
|
var database = new Database(user);
|
||||||
|
var apps = new Set();
|
||||||
|
try {
|
||||||
|
apps = new Set(JSON.parse(database.get('apps')));
|
||||||
|
} catch {
|
||||||
|
}
|
||||||
|
if (apps.delete(appName)) {
|
||||||
|
database.set('apps', JSON.stringify([...apps]));
|
||||||
|
}
|
||||||
|
database.remove('path:' + appName);
|
||||||
|
} else {
|
||||||
|
response.writeHead(401, {"Content-Type": "text/plain; charset=utf-8"});
|
||||||
|
response.end("401 Unauthorized");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});
|
||||||
|
response.end('OK');
|
||||||
} else {
|
} else {
|
||||||
var data;
|
var data;
|
||||||
var type;
|
var type;
|
||||||
@ -581,7 +609,7 @@ loadSettings().then(function() {
|
|||||||
return staticDirectoryHandler(request, response, 'deps/split/', match[1]);
|
return staticDirectoryHandler(request, response, 'deps/split/', match[1]);
|
||||||
} else if (match = /^\/smoothie\/([\.\w-/]*)$/.exec(request.uri)) {
|
} else if (match = /^\/smoothie\/([\.\w-/]*)$/.exec(request.uri)) {
|
||||||
return staticDirectoryHandler(request, response, 'deps/smoothie/', match[1]);
|
return staticDirectoryHandler(request, response, 'deps/smoothie/', match[1]);
|
||||||
} else if (match = /^(.*)(\/save?)$/.exec(request.uri)) {
|
} else if (match = /^(.*)(\/(?:save|delete)?)$/.exec(request.uri)) {
|
||||||
return blobHandler(request, response, match[1], match[2]);
|
return blobHandler(request, response, match[1], match[2]);
|
||||||
} else if (match = /^\/trace$/.exec(request.uri)) {
|
} else if (match = /^\/trace$/.exec(request.uri)) {
|
||||||
var data = trace();
|
var data = trace();
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
<input type="button" id="push_to_parent" value="Push to Parent" onclick="pushToParent()">
|
<input type="button" id="push_to_parent" value="Push to Parent" onclick="pushToParent()">
|
||||||
<input type="button" id="pull_from_parent" value="Pull from Parent" onclick="pullFromParent()">
|
<input type="button" id="pull_from_parent" value="Pull from Parent" onclick="pullFromParent()">
|
||||||
<input type="button" id="revert" name="revert" value="Revert to Saved" onclick="revert()">
|
<input type="button" id="revert" name="revert" value="Revert to Saved" onclick="revert()">
|
||||||
|
<input type="button" id="delete" name="delete" value="Delete" onclick="deleteApp()">
|
||||||
</div>
|
</div>
|
||||||
<div class="hbox" style="height: 100%">
|
<div class="hbox" style="height: 100%">
|
||||||
<div id="filesPane">
|
<div id="filesPane">
|
||||||
|
Loading…
Reference in New Issue
Block a user