summaryrefslogtreecommitdiff
path: root/src/client/os.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2021-01-08 21:43:56 +0900
committersyuilo <syuilotan@yahoo.co.jp>2021-01-08 21:43:56 +0900
commitb3a198cae64b422706d3fc7d1049bb2cb0b79f29 (patch)
treef978b029021ff2482ec9738a6e2fdbed737f6160 /src/client/os.ts
parentNoteDetailed で一部 Renote した人の情報になっているのを修... (diff)
downloadsharkey-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.ts27
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);