Autostore base
This commit is contained in:
@@ -879,5 +879,37 @@ define([
|
||||
|
||||
UI.createRadio = Pages.createRadio;
|
||||
|
||||
UI.cornerPopup = function (text, actions, footer) {
|
||||
// XXX create "minimize" icon
|
||||
var popup = h('div.cp-corner-container', [
|
||||
h('div.cp-corner-filler', { style: "width:130px;" }),
|
||||
h('div.cp-corner-filler', { style: "width:90px;" }),
|
||||
h('div.cp-corner-filler', { style: "width:60px;" }),
|
||||
h('div.cp-corner-filler', { style: "width:40px;" }),
|
||||
h('div.cp-corner-filler', { style: "width:20px;" }),
|
||||
h('div.cp-corner-text', text),
|
||||
h('div.cp-corner-actions', actions),
|
||||
h('div.cp-corner-footer', footer)
|
||||
]);
|
||||
|
||||
var hide = function () {
|
||||
$(popup).hide();
|
||||
};
|
||||
var show = function () {
|
||||
$(popup).show();
|
||||
};
|
||||
var deletePopup = function () {
|
||||
$(popup).remove();
|
||||
};
|
||||
|
||||
$('body').append(popup);
|
||||
|
||||
return {
|
||||
hide: hide,
|
||||
show: show,
|
||||
delete: deletePopup
|
||||
};
|
||||
};
|
||||
|
||||
return UI;
|
||||
});
|
||||
|
||||
@@ -2308,5 +2308,39 @@ define([
|
||||
$(password).find('.cp-password-input').focus();
|
||||
};
|
||||
|
||||
var storePopupState = false;
|
||||
UIElements.displayStorePadPopup = function (common) {
|
||||
if (storePopupState) { return; }
|
||||
storePopupState = true;
|
||||
|
||||
var text = Messages.manual_notstored;
|
||||
var footer = Messages.manual_settings;
|
||||
|
||||
var hide = h('button.cp-corner-cancel', Messages.manual_hide);
|
||||
var store = h('button.cp-corner-primary', Messages.manual_store);
|
||||
var actions = h('div', [
|
||||
store,
|
||||
hide,
|
||||
]);
|
||||
|
||||
console.log(text, footer);
|
||||
var modal = UI.cornerPopup(text, actions, footer);
|
||||
|
||||
$(hide).click(function () {
|
||||
modal.delete();
|
||||
});
|
||||
$(store).click(function () {
|
||||
modal.delete();
|
||||
common.getSframeChannel().query("Q_AUTOSTORE_STORE", null, function (err, obj) {
|
||||
if (err || (obj && obj.error)) {
|
||||
console.error(err || obj.error);
|
||||
return void UI.warn("Error"); // XXX
|
||||
}
|
||||
UI.log("Saved"); // XXX
|
||||
});
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
return UIElements;
|
||||
});
|
||||
|
||||
@@ -547,7 +547,7 @@ define([
|
||||
|
||||
postMessage("SET_PAD_TITLE", data, function (obj) {
|
||||
if (obj && obj.error) {
|
||||
console.log("unable to set pad title");
|
||||
if (obj.error !== "EAUTH") { console.log("unable to set pad title"); }
|
||||
return void cb(obj.error);
|
||||
}
|
||||
cb();
|
||||
@@ -925,6 +925,10 @@ define([
|
||||
common.loading = {};
|
||||
common.loading.onDriveEvent = Util.mkEvent();
|
||||
|
||||
// (Auto)store pads
|
||||
common.autoStore = {};
|
||||
common.autoStore.onStoreRequest = Util.mkEvent();
|
||||
|
||||
common.getFullHistory = function (data, cb) {
|
||||
postMessage("GET_FULL_HISTORY", data, cb);
|
||||
};
|
||||
@@ -1060,7 +1064,9 @@ define([
|
||||
// Account deletion
|
||||
DELETE_ACCOUNT: common.startAccountDeletion,
|
||||
// Loading
|
||||
LOADING_DRIVE: common.loading.onDriveEvent.fire
|
||||
LOADING_DRIVE: common.loading.onDriveEvent.fire,
|
||||
// AutoStore
|
||||
AUTOSTORE_DISPLAY_POPUP: common.autoStore.onStoreRequest.fire,
|
||||
};
|
||||
|
||||
common.hasCSSVariables = function () {
|
||||
|
||||
@@ -765,22 +765,32 @@ define([
|
||||
|
||||
// Add the pad if it does not exist in our drive
|
||||
if (!contains) {
|
||||
var roHref;
|
||||
if (h.mode === "view") {
|
||||
roHref = href;
|
||||
href = undefined;
|
||||
var autoStore = Util.find(store.proxy, ['settings', 'general', 'autostore']);
|
||||
if (autoStore !== 1 && !data.forceSave && !data.path) {
|
||||
// XXX
|
||||
// send event to inner to display the corner popup
|
||||
postMessage(clientId, "AUTOSTORE_DISPLAY_POPUP", {
|
||||
autoStore: autoStore
|
||||
});
|
||||
return void cb({error: "EAUTH"});
|
||||
} else {
|
||||
var roHref;
|
||||
if (h.mode === "view") {
|
||||
roHref = href;
|
||||
href = undefined;
|
||||
}
|
||||
Store.addPad(clientId, {
|
||||
href: href,
|
||||
roHref: roHref,
|
||||
channel: channel,
|
||||
title: title,
|
||||
owners: owners,
|
||||
expire: expire,
|
||||
password: data.password,
|
||||
path: data.path
|
||||
}, cb);
|
||||
return;
|
||||
}
|
||||
Store.addPad(clientId, {
|
||||
href: href,
|
||||
roHref: roHref,
|
||||
channel: channel,
|
||||
title: title,
|
||||
owners: owners,
|
||||
expire: expire,
|
||||
password: data.password,
|
||||
path: data.path
|
||||
}, cb);
|
||||
return;
|
||||
} else {
|
||||
sendDriveEvent('DRIVE_CHANGE', {
|
||||
path: ['drive', UserObject.FILES_DATA]
|
||||
|
||||
@@ -93,7 +93,8 @@ define([
|
||||
path: path,
|
||||
password: password,
|
||||
channel: id,
|
||||
owners: metadata.owners
|
||||
owners: metadata.owners,
|
||||
// XXX FORCESAVE ??
|
||||
};
|
||||
common.setPadTitle(data, function (err) {
|
||||
if (err) { return void console.error(err); }
|
||||
|
||||
@@ -358,6 +358,22 @@ define([
|
||||
setDocumentTitle();
|
||||
});
|
||||
|
||||
Cryptpad.autoStore.onStoreRequest.reg(function (data) {
|
||||
sframeChan.event("EV_AUTOSTORE_DISPLAY_POPUP", data);
|
||||
});
|
||||
sframeChan.on('Q_AUTOSTORE_STORE', function (obj, cb) {
|
||||
var data = {
|
||||
password: password,
|
||||
title: currentTitle,
|
||||
channel: secret.channel,
|
||||
path: initialPathInDrive, // Where to store the pad if we don't have it in our drive
|
||||
forceSave: true
|
||||
};
|
||||
Cryptpad.setPadTitle(data, function (err) {
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
sframeChan.on('Q_SETTINGS_SET_DISPLAY_NAME', function (newName, cb) {
|
||||
Cryptpad.setDisplayName(newName, function (err) {
|
||||
@@ -399,6 +415,7 @@ define([
|
||||
Cryptpad.saveAsTemplate(Cryptget.put, data, cb);
|
||||
});
|
||||
|
||||
// Messaging
|
||||
sframeChan.on('Q_SEND_FRIEND_REQUEST', function (netfluxId, cb) {
|
||||
Cryptpad.inviteFromUserlist(netfluxId, cb);
|
||||
});
|
||||
@@ -411,6 +428,7 @@ define([
|
||||
sframeChan.event('EV_FRIEND_REQUEST', data);
|
||||
});
|
||||
|
||||
// History
|
||||
sframeChan.on('Q_GET_FULL_HISTORY', function (data, cb) {
|
||||
var crypto = Crypto.createEncryptor(secret.keys);
|
||||
Cryptpad.getFullHistory({
|
||||
@@ -452,6 +470,7 @@ define([
|
||||
});
|
||||
});
|
||||
|
||||
// Store
|
||||
sframeChan.on('Q_GET_PAD_ATTRIBUTE', function (data, cb) {
|
||||
var href;
|
||||
if (readOnly && hashes.editHash) {
|
||||
|
||||
@@ -452,6 +452,10 @@ define([
|
||||
UI.errorLoadingScreen($err, true, true);
|
||||
});
|
||||
|
||||
ctx.sframeChan.on('EV_AUTOSTORE_DISPLAY_POPUP', function () {
|
||||
UIElements.displayStorePadPopup(funcs);
|
||||
});
|
||||
|
||||
ctx.metadataMgr.onReady(waitFor());
|
||||
}).nThen(function () {
|
||||
try {
|
||||
|
||||
@@ -254,4 +254,7 @@ define({
|
||||
// Get all existing tags
|
||||
'Q_GET_ALL_TAGS': true,
|
||||
|
||||
// Store pads in the drive
|
||||
'EV_AUTOSTORE_DISPLAY_POPUP': true,
|
||||
'Q_AUTOSTORE_STORE': true,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user