cloud content refactor

This commit is contained in:
SPRINX0\prochazka
2025-06-12 16:55:55 +02:00
parent e9a086ad23
commit e33df8f12d
6 changed files with 62 additions and 17 deletions

View File

@@ -58,7 +58,7 @@ module.exports = {
putContent_meta: true,
async putContent({ folid, cntid, content, name, type }) {
const resp = await putCloudContent(folid, cntid, content, name, type);
const resp = await putCloudContent(folid, cntid, content, name, type, {});
socket.emitChanged('cloud-content-changed');
socket.emit('cloud-content-updated');
return resp;
@@ -129,7 +129,11 @@ module.exports = {
undefined,
JSON.stringify(connToSend),
getConnectionLabel(conn),
'connection'
'connection',
{
connectionColor: conn.connectionColor,
connectionEngine: conn.engine,
}
);
return resp;
},
@@ -157,7 +161,11 @@ module.exports = {
cntid,
JSON.stringify(recryptedConn),
getConnectionLabel(recryptedConn),
'connection'
'connection',
{
connectionColor: connection.connectionColor,
connectionEngine: connection.engine,
}
);
if (resp.apiErrorMessage) {
@@ -188,7 +196,10 @@ module.exports = {
...conn,
displayName: getConnectionLabel(conn) + ' - copy',
};
const respPut = await putCloudContent(folid, undefined, JSON.stringify(conn2), conn2.displayName, 'connection');
const respPut = await putCloudContent(folid, undefined, JSON.stringify(conn2), conn2.displayName, 'connection', {
connectionColor: conn.connectionColor,
connectionEngine: conn.engine,
});
return respPut;
},
@@ -224,7 +235,7 @@ module.exports = {
saveFile_meta: true,
async saveFile({ folid, cntid, fileName, data, contentFolder, format }) {
const resp = await putCloudContent(folid, cntid, data, fileName, 'file', contentFolder, format);
const resp = await putCloudContent(folid, cntid, data, fileName, 'file', { contentFolder, contentType: format });
socket.emitChanged('cloud-content-changed');
socket.emit('cloud-content-updated');
return resp;

View File

@@ -86,6 +86,16 @@ async function loadCloudFiles() {
}
}
async function getCloudUsedEngines() {
try {
const resp = await callCloudApiGet('content-engines');
return resp || [];
} catch (err) {
logger.error(extractErrorLogData(err), 'Error getting cloud content list');
return [];
}
}
async function collectCloudFilesSearchTags() {
const res = [];
if (platformInfo.isElectron) {
@@ -120,11 +130,14 @@ async function collectCloudFilesSearchTags() {
const engines = await connections.getUsedEngines();
const engineTags = engines.map(engine => engine.split('@')[0]);
res.push(...engineTags);
const cloudEngines = await getCloudUsedEngines();
const cloudEngineTags = cloudEngines.map(engine => engine.split('@')[0]);
res.push(...cloudEngineTags);
// team-premium and trials will return the same cloud files as premium - no need to check
res.push(isProApp() ? 'premium' : 'community');
return res;
return _.uniq(res);
}
async function getCloudSigninHolder() {
@@ -293,7 +306,7 @@ async function getCloudContent(folid, cntid) {
const encryptor = simpleEncryptor.createEncryptor(signinHolder.encryptionKey);
const { content, name, type, contentFolder, contentType, apiErrorMessage } = await callCloudApiGet(
const { content, name, type, contentAttributes, apiErrorMessage } = await callCloudApiGet(
`content/${folid}/${cntid}`,
signinHolder,
{
@@ -309,8 +322,7 @@ async function getCloudContent(folid, cntid) {
content: encryptor.decrypt(content),
name,
type,
contentFolder,
contentType,
contentAttributes,
};
}
@@ -318,7 +330,7 @@ async function getCloudContent(folid, cntid) {
*
* @returns Promise<{ cntid: string } | { apiErrorMessage: string }>
*/
async function putCloudContent(folid, cntid, content, name, type, contentFolder = null, contentType = null) {
async function putCloudContent(folid, cntid, content, name, type, contentAttributes) {
const signinHolder = await getCloudSigninHolder();
if (!signinHolder) {
throw new Error('No signed in');
@@ -335,8 +347,7 @@ async function putCloudContent(folid, cntid, content, name, type, contentFolder
type,
kehid: signinHolder.kehid,
content: encryptor.encrypt(content),
contentFolder,
contentType,
contentAttributes,
},
signinHolder
);