diff --git a/lib/providers/sync_provider.dart b/lib/providers/sync_provider.dart index f06c354..f484e51 100644 --- a/lib/providers/sync_provider.dart +++ b/lib/providers/sync_provider.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:io'; +import 'package:fladder/util/string_extensions.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide ConnectionState; @@ -620,11 +621,11 @@ extension SyncNotifierHelpers on SyncNotifier { if (parent == null) { await _db.insertItem(syncItem); } - + return syncItem.copyWith( fileSize: response.mediaSources?.firstOrNull?.size ?? 0, syncing: false, - videoFileName: response.path?.split('/').lastOrNull ?? "", + videoFileName: response.path?.universalBasename ?? "", ); } diff --git a/lib/util/string_extensions.dart b/lib/util/string_extensions.dart index b7f8982..c8d62a2 100644 --- a/lib/util/string_extensions.dart +++ b/lib/util/string_extensions.dart @@ -1,4 +1,5 @@ import 'package:fladder/models/items/item_shared_models.dart'; +import 'package:path/path.dart' as path; extension StringExtensions on String { String capitalize() { @@ -49,6 +50,13 @@ extension StringExtensions on String { return result; } + + /// Supports both Linux and Windows server path separators as referenced in [path.separator]. + /// Instead of the [path.basename] method, which returns the last part of the path for the current client platform. + String get universalBasename { + final parts = split(RegExp(r'[\\/]+')); + return parts.where((s)=>s.isNotEmpty).lastOrNull ?? ''; + } } extension ListExtensions on List {