Skip to content

Commit 153ce5b

Browse files
Chore: Revise metadata fetch setup for telemetry (ToolJet#2610)
* revise metadata service for telemetry * send finish installation metric only on prod * fix endpoint * keep fetching metadata with an interval * fix version check error * remove ip address on telemetry
1 parent 9732004 commit 153ce5b

File tree

3 files changed

+25
-27
lines changed

3 files changed

+25
-27
lines changed

frontend/src/App/App.jsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,23 @@ class App extends React.Component {
3434
};
3535
}
3636

37+
fetchMetadata = () => {
38+
if (this.state.currentUser) {
39+
tooljetService.fetchMetaData().then((data) => {
40+
this.setState({ onboarded: data.onboarded });
41+
42+
if (data.latest_version && lt(data.installed_version, data.latest_version) && data.version_ignored === false) {
43+
this.setState({ updateAvailable: true });
44+
}
45+
});
46+
}
47+
};
48+
3749
componentDidMount() {
3850
authenticationService.currentUser.subscribe((x) => {
3951
this.setState({ currentUser: x });
52+
this.fetchMetadata();
53+
setInterval(this.fetchMetadata, 1000 * 60 * 60 * 1);
4054
});
4155
}
4256

@@ -51,7 +65,7 @@ class App extends React.Component {
5165
};
5266

5367
render() {
54-
const { currentUser, fetchedMetadata, updateAvailable, onboarded, darkMode } = this.state;
68+
const { updateAvailable, onboarded, darkMode } = this.state;
5569
let toastOptions = {};
5670

5771
if (darkMode) {
@@ -64,16 +78,6 @@ class App extends React.Component {
6478
};
6579
}
6680

67-
if (currentUser && fetchedMetadata === false) {
68-
tooljetService.fetchMetaData().then((data) => {
69-
this.setState({ fetchedMetadata: true, onboarded: data.onboarded });
70-
71-
if (lt(data.installed_version, data.latest_version) && data.version_ignored === false) {
72-
this.setState({ updateAvailable: true });
73-
}
74-
});
75-
}
76-
7781
return (
7882
<>
7983
<Router history={history}>
@@ -124,7 +128,10 @@ class App extends React.Component {
124128
<Redirect
125129
to={{
126130
pathname: '/confirm',
127-
state: { token: props.match.params.token, search: props.location.search },
131+
state: {
132+
token: props.match.params.token,
133+
search: props.location.search,
134+
},
128135
}}
129136
/>
130137
)}

server/src/controllers/metadata.controller.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,13 @@ export class MetadataController {
4747
async getMetadata(@Request() req) {
4848
const metadata = await this.metadataService.getMetaData();
4949
const data = metadata.data;
50-
5150
let latestVersion = data['latest_version'];
5251
let versionIgnored = data['version_ignored'] || false;
53-
const installedVersion = globalThis.TOOLJET_VERSION;
5452
const onboarded = data['onboarded'];
55-
const ignoredVersion = data['ignored_version'];
56-
const now = new Date();
5753

58-
const updateLastCheckedAt = new Date(data['last_checked'] || null);
59-
const diffTime = (now.getTime() - updateLastCheckedAt.getTime()) / 1000;
60-
61-
if (diffTime > 86400 && process.env.NODE_ENV == 'production') {
54+
if (process.env.NODE_ENV == 'production') {
6255
if (process.env.CHECK_FOR_UPDATES) {
63-
const result = await this.metadataService.checkForUpdates(installedVersion, ignoredVersion);
56+
const result = await this.metadataService.checkForUpdates(metadata);
6457
latestVersion = result.latestVersion;
6558
versionIgnored = false;
6659
}
@@ -71,7 +64,7 @@ export class MetadataController {
7164
}
7265

7366
return {
74-
installed_version: installedVersion,
67+
installed_version: globalThis.TOOLJET_VERSION,
7568
latest_version: latestVersion,
7669
onboarded: onboarded,
7770
version_ignored: versionIgnored,

server/src/services/metadata.service.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,24 @@ export class MetadataService {
6363
});
6464
}
6565

66-
async checkForUpdates(installedVersion: string, ignoredVersion: string) {
66+
async checkForUpdates(metadata: Metadata) {
67+
const installedVersion = globalThis.TOOLJET_VERSION;
6768
const response = await got('https://hub.tooljet.io/updates', {
6869
method: 'post',
69-
json: { installed_version: installedVersion },
7070
});
71-
7271
const data = JSON.parse(response.body);
7372
const latestVersion = data['latest_version'];
7473

7574
const newOptions = {
7675
last_checked: new Date(),
7776
};
7877

79-
if (gt(latestVersion, installedVersion) && installedVersion !== ignoredVersion) {
78+
if (gt(latestVersion, installedVersion) && installedVersion !== metadata.data['ignored_version']) {
8079
newOptions['latest_version'] = latestVersion;
8180
newOptions['version_ignored'] = false;
8281
}
8382

8483
await this.updateMetaData(newOptions);
85-
8684
return { latestVersion };
8785
}
8886
}

0 commit comments

Comments
 (0)