Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion lib/data/repositories/base_local_health_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -160,12 +160,17 @@ interface class BaseLocalHealthRepoImpl extends BaseLocalHealthRepository {
preview.activityType == ActivityType.running) {
return null;
}
// The distance is in km, so we need to convert it to m
// We multiply by 100 and round it to 2 decimal places and then divide it back to kilometers
// This step is need as dart does not provide a way to round to decimal places
// After that we multiply it by 1000 to convert it to meters
double distance = (((preview.distance ?? 0) * 100).round() / 100) * 1000;
success = await Health().writeWorkoutData(
activityType: HealthWorkoutActivityType.values.firstWhere(
(element) => element.name == preview.activityType?.name),
start: startTime,
end: endTime,
totalDistance: (preview.distance ?? 0).toInt() * 1000,
totalDistance: distance.toInt(),
totalDistanceUnit: HealthDataUnit.METER);
} catch (e) {
log.info(e);
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"common_theme_dark": "Dunkler Modus",
"common_about": "Über",
"common_version": "Version",
"common_version_copied": "Version in die Zwischenablage kopiert",
"common_error_version": "Fehler beim Laden der Version",
"common_error": "Fehler {error}",
"common_unknown": "Unbekannt",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"common_theme_dark": "Dark Mode",
"common_about": "About",
"common_version": "Version",
"common_version_copied": "Successfully copied version",
"common_error_version": "Error loading version",
"common_error": "Error {error}",
"common_unknown": "Unknown",
Expand Down
27 changes: 27 additions & 0 deletions lib/presentation/profile/screen/widgets/about_section.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import 'dart:io';

import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Expand Down Expand Up @@ -240,6 +243,27 @@ class VersionInfoTile extends StatelessWidget {
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!;

Future<void> copyVersionToClipboard() async {
final data = ClipboardData(text: packageInfo.version);
await Clipboard.setData(data);
if (!context.mounted) return;

// Determine if we should show a snackbar based on platform
// Don't show on Android 12+ (API 32+) as it has its own clipboard notification
if (Platform.isAndroid) {
final deviceInfo = DeviceInfoPlugin();
final androidInfo = await deviceInfo.androidInfo;
if (androidInfo.version.sdkInt >= 32) {
return; // Android 12+ has native clipboard notifications
}
}

// Show snackbar on all other platforms and older Android versions
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(l10n.common_version_copied)),
);
}

return InkWell(
onTap: () {
hiddenLogAccessNotifier.incrementClickCount();
Expand All @@ -249,6 +273,9 @@ class VersionInfoTile extends StatelessWidget {
context.go('$profilePath/$profileLoggingPath');
}
},
onLongPress: () {
copyVersionToClipboard();
},
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(vertical: 8.0),
Expand Down
Loading