mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-09 23:48:14 -07:00
feat: Sync offline/online playback when able (#431)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
15ac3566e2
commit
092836328f
42 changed files with 1002 additions and 497 deletions
|
|
@ -18,7 +18,6 @@ import 'package:fladder/models/items/media_segments_model.dart';
|
|||
import 'package:fladder/models/items/media_streams_model.dart';
|
||||
import 'package:fladder/models/items/trick_play_model.dart';
|
||||
import 'package:fladder/models/syncing/i_synced_item.dart';
|
||||
import 'package:fladder/providers/sync_provider.dart';
|
||||
import 'package:fladder/util/localization_helper.dart';
|
||||
|
||||
part 'sync_item.freezed.dart';
|
||||
|
|
@ -42,6 +41,7 @@ class SyncedItem with _$SyncedItem {
|
|||
ImagesData? fImages,
|
||||
@Default([]) List<Chapter> fChapters,
|
||||
@Default([]) List<SubStreamModel> subtitles,
|
||||
@Default(false) bool unSyncedData,
|
||||
@UserDataJsonSerializer() UserData? userData,
|
||||
// ignore: invalid_annotation_target
|
||||
@JsonKey(includeFromJson: false, includeToJson: false) ItemBaseModel? itemModel,
|
||||
|
|
@ -67,6 +67,13 @@ class SyncedItem with _$SyncedItem {
|
|||
[]);
|
||||
|
||||
File get dataFile => File(joinAll(["$path", "data.json"]));
|
||||
BaseItemDto? get data {
|
||||
return dataFile.existsSync()
|
||||
? BaseItemDto.fromJson(jsonDecode(dataFile.readAsStringSync()))
|
||||
.copyWith(userData: UserData.toDto(userData), path: videoFile.existsSync() ? videoFile.path : '')
|
||||
: null;
|
||||
}
|
||||
|
||||
Directory get trickPlayDirectory => Directory(joinAll(["$path", trickPlayPath]));
|
||||
File get videoFile => File(joinAll(["$path", "$videoFileName"]));
|
||||
Directory get directory => Directory(path ?? "");
|
||||
|
|
@ -104,10 +111,6 @@ class SyncedItem with _$SyncedItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
Future<List<SyncedItem>> getChildren(Ref ref) async => await ref.read(syncProvider.notifier).getChildren(this);
|
||||
Future<List<SyncedItem>> getNestedChildren(Ref ref) async =>
|
||||
await ref.read(syncProvider.notifier).getNestedChildren(this);
|
||||
|
||||
Future<int> get getDirSize async {
|
||||
var files = await directory.list(recursive: true).toList();
|
||||
var dirSize = files.fold(0, (int sum, file) => sum + file.statSync().size);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue