65 lines
1.7 KiB
Dart
65 lines
1.7 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:device_info/device_info.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:invoiceninja_flutter/constants.dart';
|
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
|
import 'package:sentry/sentry.dart';
|
|
|
|
Future<Event> getSentryEvent(
|
|
{AppState state, dynamic exception, dynamic stackTrace}) async {
|
|
OperatingSystem os;
|
|
Device device;
|
|
|
|
if (kIsWeb) {
|
|
// TODO track web info
|
|
os = OperatingSystem(
|
|
name: 'Web',
|
|
);
|
|
} else {
|
|
//final packageInfo = await PackageInfo.fromPlatform();
|
|
final deviceInfo = DeviceInfoPlugin();
|
|
|
|
if (Platform.isAndroid) {
|
|
final androidInfo = await deviceInfo.androidInfo;
|
|
os = OperatingSystem(
|
|
name: 'Android',
|
|
version: androidInfo.version.release,
|
|
);
|
|
device = Device(
|
|
model: androidInfo.model,
|
|
manufacturer: androidInfo.manufacturer,
|
|
modelId: androidInfo.product,
|
|
);
|
|
} else if (Platform.isIOS) {
|
|
final iosInfo = await deviceInfo.iosInfo;
|
|
os = OperatingSystem(
|
|
name: iosInfo.systemName,
|
|
version: iosInfo.systemVersion,
|
|
);
|
|
device = Device(
|
|
model: iosInfo.utsname.machine,
|
|
manufacturer: 'Apple',
|
|
family: iosInfo.model,
|
|
);
|
|
}
|
|
}
|
|
|
|
return Event(
|
|
release: kAppVersion,
|
|
//release: packageInfo.version,
|
|
environment: state.isHosted ? 'Hosted' : 'Selfhosted',
|
|
stackTrace: stackTrace,
|
|
exception: exception,
|
|
contexts: Contexts(
|
|
operatingSystem: os,
|
|
device: device,
|
|
app: App(
|
|
version: kAppVersion,
|
|
//name: packageInfo.appName,
|
|
//version: packageInfo.version,
|
|
//build: packageInfo.buildNumber,
|
|
)),
|
|
);
|
|
}
|