BugReporterAbstractionUniapp.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * BUG数据提交工具层
  3. *
  4. * Copyright © 2025 imengyu.top imengyu-bugreport-server
  5. */
  6. import Constants, { isProd } from '@/common/config/AppCofig';
  7. import type { BugDetailDeviceInfo, BugReporterAbstractionLayer } from '../index'
  8. const tagString = '[BugReporter] ';
  9. const errStorageClientDataKey = 'BugReporterClientData';
  10. export class BugReporterAbstractionUniapp implements BugReporterAbstractionLayer {
  11. log(str: string): void {
  12. console.log(tagString + str);
  13. }
  14. async getDeviceInfo(): Promise<BugDetailDeviceInfo> {
  15. let dataStorage = await this.getStorage(errStorageClientDataKey);
  16. if (!dataStorage) {
  17. const res = await uni.getSystemInfo({}) as unknown as Record<string, unknown>;
  18. dataStorage = {
  19. deviceName: res.mode + '/' + res.model + '/' + res.brand + '/' + res.pixelRatio,
  20. deviceVersion: res.system + '/' + res.version + '/SDKVersion: ' + res.SDKVersion,
  21. appVersion: Constants.version,
  22. } as BugDetailDeviceInfo;
  23. await this.setStorage(errStorageClientDataKey, dataStorage);
  24. }
  25. return dataStorage as BugDetailDeviceInfo;
  26. }
  27. async enable(): Promise<boolean> {
  28. return isProd;
  29. }
  30. async doPost(url: string, body: unknown): Promise<void> {
  31. await uni.request({
  32. url,
  33. data: body as AnyObject,
  34. method: 'POST'
  35. });
  36. }
  37. async getStorage(key: string): Promise<unknown> {
  38. try {
  39. const str = await uni.getStorage({ key }) as unknown as Record<string, string>;
  40. return str.data ? JSON.parse(str.data) : null;
  41. } catch {
  42. return null;
  43. }
  44. }
  45. async setStorage(key: string, value: unknown): Promise<void> {
  46. await uni.setStorage({ key, data: JSON.stringify(value) });
  47. }
  48. async reomveStorage(key: string): Promise<void> {
  49. await uni.removeStorage({ key });
  50. }
  51. }