mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 00:56:02 +00:00
promo widget WIP
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -183,12 +183,16 @@ const cloudContentListLoader = () => ({
|
||||
params: {},
|
||||
reloadTrigger: { key: `cloud-content-changed` },
|
||||
});
|
||||
|
||||
const teamFilesLoader = () => ({
|
||||
url: 'team-files/list',
|
||||
params: {},
|
||||
reloadTrigger: { key: `team-files-changed` },
|
||||
});
|
||||
const promoWidgetLoader = () => ({
|
||||
url: 'cloud/premium-promo-widget',
|
||||
params: {},
|
||||
reloadTrigger: { key: `promo-widget-changed` },
|
||||
});
|
||||
|
||||
async function getCore(loader, args) {
|
||||
const { url, params, reloadTrigger, transform, onLoaded, errorValue } = loader(args);
|
||||
@@ -536,3 +540,10 @@ export function getTeamFiles(args) {
|
||||
export function useTeamFiles(args) {
|
||||
return useCore(teamFilesLoader, args);
|
||||
}
|
||||
|
||||
export function getPromoWidget(args) {
|
||||
return getCore(promoWidgetLoader, args);
|
||||
}
|
||||
export function usePromoWidget(args) {
|
||||
return useCore(promoWidgetLoader, args);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user