diff --git a/src/background.js b/src/background.js index 64e09a34..230f552f 100644 --- a/src/background.js +++ b/src/background.js @@ -15,7 +15,7 @@ import { autoUpdater } from 'electron-updater'; import fs from 'fs/promises'; import path from 'path'; import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'; -import { sendError } from './contactMothership'; +import { getUrlAndTokenString, sendError } from './contactMothership'; import { getLanguageMap } from './getLanguageMap'; import { IPC_ACTIONS, IPC_CHANNELS, IPC_MESSAGES } from './messages'; import saveHtmlAsPdf from './saveHtmlAsPdf'; @@ -261,6 +261,10 @@ ipcMain.handle(IPC_ACTIONS.GET_FILE, async (event, options) => { return response; }); +ipcMain.handle(IPC_ACTIONS.GET_CREDS, async (event) => { + return await getUrlAndTokenString(); +}); + /* ------------------------------ * Register autoUpdater events lis * ------------------------------*/ diff --git a/src/initialization.js b/src/initialization.js index f897c82e..188dd716 100644 --- a/src/initialization.js +++ b/src/initialization.js @@ -1,10 +1,11 @@ import config from '@/config'; +import { ipcRenderer } from 'electron'; import SQLiteDatabase from 'frappe/backends/sqlite'; import fs from 'fs'; import models from '../models'; import regionalModelUpdates from '../models/regionalModelUpdates'; import postStart, { setCurrencySymbols } from '../server/postStart'; -import { DB_CONN_FAILURE } from './messages'; +import { DB_CONN_FAILURE, IPC_ACTIONS } from './messages'; import runMigrate from './migrate'; import { getId } from './telemetry/helpers'; import telemetry from './telemetry/telemetry'; @@ -96,9 +97,11 @@ export async function connectToLocalDatabase(filePath) { // second init with currency, normal usage await callInitializeMoneyMaker(); - + const creds = await ipcRenderer.invoke(IPC_ACTIONS.GET_CREDS); + telemetry.setCreds(creds?.telemetryUrl ?? '', creds?.tokenString ?? ''); telemetry.start(); await telemetry.setCount(); + return { connectionSuccess: true, reason: '' }; } diff --git a/src/main.js b/src/main.js index 65d01eca..5a85d945 100644 --- a/src/main.js +++ b/src/main.js @@ -158,7 +158,7 @@ function registerIpcRendererListeners() { return; } - const telemetryData = telemetry.stop(); - navigator.sendBeacon('http://0.0.0.0:6969', telemetryData); + const { url, data } = telemetry.stop(); + navigator.sendBeacon(url, data); }); } diff --git a/src/messages.js b/src/messages.js index ad507fea..4422db3e 100644 --- a/src/messages.js +++ b/src/messages.js @@ -26,6 +26,7 @@ export const IPC_ACTIONS = { GET_LANGUAGE_MAP: 'get-language-map', CHECK_FOR_UPDATES: 'check-for-updates', GET_FILE: 'get-file', + GET_CREDS: 'get-creds', }; // ipcMain.send(...) diff --git a/src/telemetry/telemetry.ts b/src/telemetry/telemetry.ts index 718350e8..6ff4c6ac 100644 --- a/src/telemetry/telemetry.ts +++ b/src/telemetry/telemetry.ts @@ -5,6 +5,8 @@ import { getCounts, getDeviceId, getInstanceId, getLocale } from './helpers'; import { Noun, Telemetry, Verb } from './types'; class TelemetryManager { + #url: string = ''; + #token: string = ''; #started = false; #telemetryObject: Partial = {}; @@ -23,6 +25,11 @@ class TelemetryManager { return telemetrySetting === TelemetrySetting.allow; } + setCreds(url: string, token: string) { + this.#url ||= url; + this.#token ||= token; + } + log(verb: Verb, noun: Noun, more?: Record) { if (!this.#started) { this.start(); @@ -70,7 +77,12 @@ class TelemetryManager { return ''; } - return JSON.stringify(telemetryObject); + const data = JSON.stringify({ + token: this.#token, + telemetryData: telemetryObject, + }); + + return { url: this.#url, data }; } get telemetryObject(): Readonly> {