Error to sentry (#499)

* send error to sentry

---------

Co-authored-by: neil molina <neil@neils-MacBook-Pro.local>
This commit is contained in:
Neil 2023-04-25 12:25:13 +08:00 committed by GitHub
parent 28c1142872
commit 45828b3f40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 108 additions and 21 deletions

View file

@ -4,7 +4,7 @@ import { setupTitlebar, attachTitlebarToWindow } from "custom-electron-titlebar/
import * as Sentry from "@sentry/electron";
import contextMenu from "electron-context-menu";
import serve from "electron-serve";
import * as log from "electron-log";
import log, { setSentryLogging } from "./libs/logger";
import path from "path";
import { nameToSlug } from "./libs/package";
import { checkUpdater } from "./libs/auto-updater";
@ -26,11 +26,11 @@ if (app.isPackaged) {
maxQueueCount: 30,
beforeSend: async () => {
const ol = await net.isOnline();
log.log("isOnline", ol);
return ol ? "send" : "queue";
}
}
});
setSentryLogging(Sentry);
}
init();

View file

@ -3,7 +3,7 @@ import path from "path";
import fs from "fs";
import { getTeaPath } from "./tea-dir";
import { app } from "electron";
import * as log from "electron-log";
import log from "./logger";
import axios from "axios";
const sessionFilePath = path.join(getTeaPath(), "tea.xyz/gui/tmp.dat");

View file

@ -1,5 +1,5 @@
import { type AppUpdater, autoUpdater } from "electron-updater";
import * as log from "electron-log";
import log from "./logger";
import { BrowserWindow } from "electron";
type AutoUpdateStatus = {

View file

@ -5,7 +5,7 @@ import path from "path";
import initializeTeaCli from "./initialize";
import { app } from "electron";
import * as log from "electron-log";
import log from "./logger";
import { MainWindowNotifier } from "./types";
const destinationDirectory = getGuiPath();

View file

@ -1,6 +1,6 @@
import fs from "fs";
import { getGuiPath } from "./tea-dir";
import * as log from "electron-log";
import log from "./logger";
import semver from "semver";
import { cliBinPath, asyncExec } from "./cli";
import { createInitialSessionFile } from "./auth";

View file

@ -2,7 +2,7 @@ import { ipcMain, app, BrowserWindow } from "electron";
import { deletePackageFolder, getInstalledPackages, cacheImage } from "./tea-dir";
import { readSessionData, writeSessionData } from "./auth";
import type { Packages, Session } from "../../src/libs/types";
import * as log from "electron-log";
import log from "./logger";
import { syncLogsAt } from "./v1-client";
import { installPackage, openTerminal, syncPantry } from "./cli";

View file

@ -0,0 +1,13 @@
import log from "electron-log";
export const setSentryLogging = (sentry: any) => {
const oldError = log.error;
log.error = (...params: any[]) => {
oldError(params);
sentry.captureException(params[0].message);
};
};
// Export the log object to use it throughout the app
export default log;

View file

@ -1,7 +1,7 @@
import path from "path";
import { mkdirp } from "mkdirp";
import fs from "fs";
import * as log from "electron-log";
import log from "./logger";
import { getTeaPath } from "./tea-dir";
import { Packages } from "../../src/libs/types";

View file

@ -1,7 +1,7 @@
import Pushy from "pushy-electron";
import { readSessionData } from "./auth";
import { post } from "./v1-client";
import * as log from "electron-log";
import log from "./logger";
import { Notification, BrowserWindow } from "electron";
import { nameToSlug } from "./package";
import {

View file

@ -3,7 +3,7 @@ import fs from "fs";
import path from "path";
import { app } from "electron";
import semver, { SemVer } from "semver";
import * as log from "electron-log";
import log from "./logger";
import type { InstalledPackage } from "../../src/libs/types";
import semverCompare from "semver/functions/compare";
import { mkdirp } from "mkdirp";

View file

@ -1,7 +1,7 @@
import { app } from "electron";
import axios from "axios";
import path from "path";
import * as log from "electron-log";
import log from "./logger";
import bcrypt from "bcryptjs";
import { createReadStream, statSync } from "fs";
import { deepReadDir } from "./tea-dir";

View file

@ -75,6 +75,7 @@
"dependencies": {
"@crowdin/ota-client": "^0.7.0",
"@electron/asar": "^3.2.3",
"@sentry/browser": "^7.49.0",
"@sentry/electron": "^4.4.0",
"@sentry/svelte": "^7.47.0",
"@types/electron": "^1.6.10",

View file

@ -0,0 +1,10 @@
const log = window ? window.require("electron-log") : console;
import { captureException } from "./sentry";
// TODO: figure out how to detect if pkaged
const oldError = log.error;
log.error = (...params: any[]) => {
oldError(params);
captureException(params[0].message);
};
export default log;

View file

@ -27,8 +27,7 @@ import { PackageStates, type InstalledPackage } from "./types";
import { get as apiGet } from "$libs/v1-client";
import axios from "axios";
import withRetry from "./utils/retry";
const log = window.require("electron-log");
import log from "./logger";
const { ipcRenderer, shell } = window.require("electron");
export async function getDistPackages(): Promise<Package[]> {

View file

@ -0,0 +1,11 @@
import * as Sentry from "@sentry/browser";
export function initSentry() {
Sentry.init({
dsn: "https://5ff29bb5b3b64cd4bd4f4960ef1db2e3@o4504750197899264.ingest.sentry.io/4504750206746624"
});
}
export function captureException(exception: any) {
Sentry.captureException(exception);
}

View file

@ -1,8 +1,5 @@
import { writable } from "svelte/store";
import { goto } from "$app/navigation";
import { updateSession } from "@native";
const log = window.require("electron-log");
export default function initNavStore() {
const historyStore = writable<string[]>(["/"]);

View file

@ -26,7 +26,7 @@ import { trimGithubSlug } from "$libs/github";
import { notificationStore } from "$libs/stores";
import withRetry from "$libs/utils/retry";
const log = window.require("electron-log");
import log from "$libs/logger";
const packageRefreshInterval = 1000 * 60 * 60; // 1 hour

View file

@ -1,4 +1,4 @@
const log = window.require("electron-log");
import log from "$libs/logger";
type DebounceableFunc = (...args: any[]) => void;

View file

@ -1,4 +1,4 @@
const log = window.require("electron-log");
import log from "$libs/logger";
export type RetryOptions = {
// Number of times to retry. default 10

View file

@ -1,6 +1,7 @@
<script lang="ts">
import "$appcss";
import { goto } from "$app/navigation";
import { initSentry } from "$libs/sentry";
import { navigating } from "$app/stores";
import { afterNavigate } from "$app/navigation";
import TopBar from "$components/top-bar/top-bar.svelte";
@ -49,6 +50,7 @@
return false;
});
packagesStore.init();
initSentry();
});
onDestroy(() => {

View file

@ -13,8 +13,7 @@
import NotificationBar from "$components/notification-bar/notification-bar.svelte";
import WelcomeModal from "$components/welcome-modal/welcome-modal.svelte";
import Button from "@tea/ui/button/button.svelte";
const log = window.require("electron-log");
import log from "$libs/logger";
const { packageList } = packagesStore;
const { session } = authStore;

View file

@ -19,6 +19,7 @@ importers:
'@electron/notarize': ^1.2.3
'@playwright/experimental-ct-svelte': ^1.29.2
'@playwright/test': 1.25.0
'@sentry/browser': ^7.49.0
'@sentry/electron': ^4.4.0
'@sentry/svelte': ^7.47.0
'@sveltejs/adapter-auto': ^1.0.0
@ -92,6 +93,7 @@ importers:
dependencies:
'@crowdin/ota-client': 0.7.0
'@electron/asar': 3.2.3
'@sentry/browser': 7.49.0
'@sentry/electron': 4.4.0
'@sentry/svelte': 7.47.0_svelte@3.55.1
'@types/electron': 1.6.10
@ -2457,6 +2459,16 @@ packages:
tslib: 1.14.1
dev: false
/@sentry-internal/tracing/7.49.0:
resolution: {integrity: sha512-ESh3+ZneQk/3HESTUmIPNrW5GVPu/HrRJU+eAJJto74vm+6vP7zDn2YV2gJ1w18O/37nc7W/bVCgZJlhZ3cwew==}
engines: {node: '>=8'}
dependencies:
'@sentry/core': 7.49.0
'@sentry/types': 7.49.0
'@sentry/utils': 7.49.0
tslib: 1.14.1
dev: false
/@sentry/browser/7.46.0:
resolution: {integrity: sha512-4rX9hKPjxzfH5LhZzO5DlS5NXQ8qZg2ibepaqEgcDHrpYh5813mjjnE4OQA8wiZ6WuG3xKFgHBrGeliD5jXz9w==}
engines: {node: '>=8'}
@ -2481,6 +2493,18 @@ packages:
tslib: 1.14.1
dev: false
/@sentry/browser/7.49.0:
resolution: {integrity: sha512-x2DekKkQoY7/dhBzE4J25mdQ978NtPBTVQb+uZqlF/t5mp4K44TAszmPqy8lC/CmVHkp7qcpRGSCIzeboUL4KA==}
engines: {node: '>=8'}
dependencies:
'@sentry-internal/tracing': 7.49.0
'@sentry/core': 7.49.0
'@sentry/replay': 7.49.0
'@sentry/types': 7.49.0
'@sentry/utils': 7.49.0
tslib: 1.14.1
dev: false
/@sentry/core/7.46.0:
resolution: {integrity: sha512-BnNHGh/ZTztqQedFko7vb2u6yLs/kWesOQNivav32ZbsEpVCjcmG1gOJXh2YmGIvj3jXOC9a4xfIuh+lYFcA6A==}
engines: {node: '>=8'}
@ -2499,6 +2523,15 @@ packages:
tslib: 1.14.1
dev: false
/@sentry/core/7.49.0:
resolution: {integrity: sha512-AlSnCYgfEbvK8pkNluUkmdW/cD9UpvOVCa+ERQswXNRkAv5aDGCL6Ihv6fnIajE++BYuwZh0+HwZUBVKTFzoZg==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.49.0
'@sentry/utils': 7.49.0
tslib: 1.14.1
dev: false
/@sentry/electron/4.4.0:
resolution: {integrity: sha512-E6uggv/aujDMImO3JE46MIVrE9uZXWwR5Pm2EWwaqVYEY4+twnH4pWX/NG0PheGKSW1177FjPkcvEyCwq0pElg==}
dependencies:
@ -2547,6 +2580,15 @@ packages:
'@sentry/utils': 7.47.0
dev: false
/@sentry/replay/7.49.0:
resolution: {integrity: sha512-UY3bHoBDPOu4Dpq3m3oxNjLrq09NiFVYUfrTN4QOq1Am2SA04XbuCj/YZ+jNVy/NrFtoz9cTovK6oQbNw53jog==}
engines: {node: '>=12'}
dependencies:
'@sentry/core': 7.49.0
'@sentry/types': 7.49.0
'@sentry/utils': 7.49.0
dev: false
/@sentry/svelte/7.47.0_svelte@3.55.1:
resolution: {integrity: sha512-oxuefbpCs+aVAyLIDZM2jyayJzSnCo39/MI800442uS+sOR0MXq/OKcfbiqytwbjX4zvsj4m+E0/pL9rY1yOMw==}
engines: {node: '>=8'}
@ -2571,6 +2613,11 @@ packages:
engines: {node: '>=8'}
dev: false
/@sentry/types/7.49.0:
resolution: {integrity: sha512-9yXXh7iv76+O6h2ONUVx0wsL1auqJFWez62mTjWk4350SgMmWp/zUkBxnVXhmcYqscz/CepC+Loz9vITLXtgxg==}
engines: {node: '>=8'}
dev: false
/@sentry/utils/7.46.0:
resolution: {integrity: sha512-elRezDAF84guMG0OVIIZEWm6wUpgbda4HGks98CFnPsrnMm3N1bdBI9XdlxYLtf+ir5KsGR5YlEIf/a0kRUwAQ==}
engines: {node: '>=8'}
@ -2587,6 +2634,14 @@ packages:
tslib: 1.14.1
dev: false
/@sentry/utils/7.49.0:
resolution: {integrity: sha512-JdC9yGnOgev4ISJVwmIoFsk8Zx0psDZJAj2DV7x4wMZsO6QK+YjC7G3mUED/S5D5lsrkBZ/3uvQQhr8DQI4UcQ==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.49.0
tslib: 1.14.1
dev: false
/@sinclair/typebox/0.24.51:
resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==}
dev: true