diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2021-01-08 21:43:56 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2021-01-08 21:43:56 +0900 |
| commit | b3a198cae64b422706d3fc7d1049bb2cb0b79f29 (patch) | |
| tree | f978b029021ff2482ec9738a6e2fdbed737f6160 /src/client/os.ts | |
| parent | NoteDetailed で一部 Renote した人の情報になっているのを修... (diff) | |
| download | sharkey-b3a198cae64b422706d3fc7d1049bb2cb0b79f29.tar.gz sharkey-b3a198cae64b422706d3fc7d1049bb2cb0b79f29.tar.bz2 sharkey-b3a198cae64b422706d3fc7d1049bb2cb0b79f29.zip | |
Sentry integration
Diffstat (limited to 'src/client/os.ts')
| -rw-r--r-- | src/client/os.ts | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/client/os.ts b/src/client/os.ts index f7d870cfdd..95dcd3eb65 100644 --- a/src/client/os.ts +++ b/src/client/os.ts @@ -1,11 +1,13 @@ import { Component, defineAsyncComponent, markRaw, reactive, Ref, ref } from 'vue'; import { EventEmitter } from 'eventemitter3'; +import * as Sentry from '@sentry/browser'; import Stream from '@/scripts/stream'; import { apiUrl, debug } from '@/config'; import MkPostFormDialog from '@/components/post-form-dialog.vue'; import MkWaitingDialog from '@/components/waiting-dialog.vue'; import { resolve } from '@/router'; -import { $i } from './account'; +import { $i } from '@/account'; +import { defaultStore } from '@/store'; const ua = navigator.userAgent.toLowerCase(); export const isMobile = /mobile|iphone|ipad|android/.test(ua); @@ -54,19 +56,32 @@ export function api(endpoint: string, data: Record<string, any> = {}, token?: st if (res.status === 200) { resolve(body); if (debug) { - log.res = markRaw(body); - log.state = 'success'; + log!.res = markRaw(body); + log!.state = 'success'; } } else if (res.status === 204) { resolve(); if (debug) { - log.state = 'success'; + log!.state = 'success'; } } else { reject(body.error); if (debug) { - log.res = markRaw(body.error); - log.state = 'failed'; + log!.res = markRaw(body.error); + log!.state = 'failed'; + } + + if (defaultStore.state.reportError && !_DEV_) { + Sentry.withScope((scope) => { + scope.setTag('api_endpoint', endpoint); + scope.setContext('api params', data); + scope.setContext('api error info', body.info); + scope.setTag('api_error_id', body.id); + scope.setTag('api_error_code', body.code); + scope.setTag('api_error_kind', body.kind); + scope.setLevel(Sentry.Severity.Error); + Sentry.captureMessage('API error'); + }); } } }).catch(reject); |