Fix backup/restore issue

This commit is contained in:
yflory 2025-09-29 16:41:38 +02:00
parent dbfec317a1
commit 2ee8487cc2
2 changed files with 49 additions and 29 deletions

View File

@ -431,6 +431,14 @@ define([
cb(obj);
});
};
common.getAccountObject = function (teamId, cb) {
postMessage("GET", {
teamId: teamId,
key: []
}, function (obj) {
cb(obj);
});
};
common.getSharedFolder = function (data, cb) {
postMessage("GET_SHARED_FOLDER", data, function (obj) {
cb(obj);

View File

@ -23,43 +23,55 @@ define([
});
});
sframeChan.on('Q_SETTINGS_DRIVE_GET', function (d, cb) {
if (d !== "full") {
Cryptpad.getAccountObject(null, function (obj) {
cb(obj);
});
return;
}
Cryptpad.getUserObject(null, function (obj) {
if (obj.error) { return void cb(obj); }
if (d === "full") {
// We want shared folders too
var result = {
uo: obj,
sf: {}
};
if (!obj.drive || !obj.drive.sharedFolders) { return void cb(result); }
Utils.nThen(function (waitFor) {
Object.keys(obj.drive.sharedFolders).forEach(function (id) {
Cryptpad.getSharedFolder({
id: id
}, waitFor(function (obj) {
result.sf[id] = obj;
}));
});
}).nThen(function () {
cb(result);
// We want shared folders too
var result = {
uo: obj,
sf: {}
};
if (!obj.drive || !obj.drive.sharedFolders) { return void cb(result); }
Utils.nThen(function (waitFor) {
Object.keys(obj.drive.sharedFolders).forEach(function (id) {
Cryptpad.getSharedFolder({
id: id
}, waitFor(function (obj) {
result.sf[id] = obj;
}));
});
return;
}
// We want only the user object
cb(obj);
}).nThen(function () {
cb(result);
});
});
});
sframeChan.on('Q_SETTINGS_DRIVE_SET', function (data, cb) {
if (data && data.uo) { data = data.uo; }
var sjson = JSON.stringify(data);
require([
'/common/cryptget.js',
], function (Crypt) {
var k = Cryptpad.userHash || Utils.LocalStore.getFSHash();
Crypt.put(k, sjson, function (err) {
cb(err);
const drive = JSON.parse(JSON.stringify(data.drive || ''));
const todo = () => {
var sjson = JSON.stringify(data);
require([
'/common/cryptget.js',
], function (Crypt) {
var k = Cryptpad.userHash || Utils.LocalStore.getFSHash();
Crypt.put(k, sjson, function (err) {
cb(err);
});
});
});
};
if (Object.keys(data).length === 1 && data.drive) {
return Cryptpad.getAccountObject(null, function (obj) {
data = JSON.parse(JSON.stringify(obj));
data.drive = drive;
todo();
});
}
todo();
});
sframeChan.on('Q_SETTINGS_LOGOUT_PROPERLY', function (data, cb) {
Utils.LocalStore.clearLoginToken();