promo widget WIP

This commit is contained in:
SPRINX0\prochazka
2025-10-17 17:30:27 +02:00
parent 1fa4216b18
commit 59c3381962
3 changed files with 51 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ const {
getCloudContent,
putCloudContent,
removeCloudCachedConnection,
getPromoWidgetData,
} = require('../utility/cloudIntf');
const connections = require('./connections');
const socket = require('../utility/socket');
@@ -283,6 +284,11 @@ module.exports = {
return getAiGatewayServer();
},
premiumPromoWidget_meta: true,
async premiumPromoWidget() {
return getPromoWidgetData();
},
// chatStream_meta: {
// raw: true,
// method: 'post',

View File

@@ -17,6 +17,7 @@ const currentVersion = require('../currentVersion');
const logger = getLogger('cloudIntf');
let cloudFiles = null;
let promoWidgetData = null;
const DBGATE_IDENTITY_URL = process.env.LOCAL_DBGATE_IDENTITY
? 'http://localhost:3103'
@@ -259,6 +260,30 @@ async function getPublicFileData(path) {
return resp.data;
}
async function updatePremiumPromoWidget() {
try {
const fileContent = await fs.readFile(path.join(datadir(), 'promo-widget.json'), 'utf-8');
promoWidgetData = JSON.parse(fileContent);
} catch (err) {
promoWidgetData = null;
}
const tags = (await collectCloudFilesSearchTags()).join(',');
const resp = await axios.default.get(
`${DBGATE_CLOUD_URL}/premium-promo-widget?identifier=${promoWidgetData?.identifier ?? 'nope'}&tags=${tags}`
);
if (!resp.data || resp.data?.state == 'unchanged') {
return;
}
promoWidgetData = resp.data;
await fs.writeFile(path.join(datadir(), 'promo-widget.json'), JSON.stringify(promoWidgetData, null, 2));
socket.emitChanged(`promo-widget-changed`);
}
async function refreshPublicFiles(isRefresh) {
if (!cloudFiles) {
await loadCloudFiles();
@@ -268,6 +293,9 @@ async function refreshPublicFiles(isRefresh) {
} catch (err) {
logger.error(extractErrorLogData(err), 'DBGM-00166 Error updating cloud files');
}
if (!isProApp()) {
await updatePremiumPromoWidget();
}
}
async function callCloudApiGet(endpoint, signinHolder = null, additionalHeaders = {}) {
@@ -432,6 +460,10 @@ async function getPublicIpInfo() {
}
}
function getPromoWidgetData() {
return promoWidgetData;
}
module.exports = {
createDbGateIdentitySession,
startCloudTokenChecking,
@@ -449,4 +481,5 @@ module.exports = {
readCloudTokenHolder,
readCloudTestTokenHolder,
getPublicIpInfo,
getPromoWidgetData,
};