[client] Move server data tracking to ResourceAction

This commit is contained in:
Abhishek Shroff
2024-12-29 21:33:38 +05:30
parent bfae57ff59
commit d9361f76f4
5 changed files with 31 additions and 21 deletions

View File

@@ -1,16 +1,39 @@
import 'dart:async';
import 'package:meta/meta.dart';
import 'package:offtheline/offtheline.dart';
import 'package:phylum/libphylum/phylum_api_types.dart';
abstract class ResourceAction extends PhylumAction {
@visibleForOverriding
bool get trackServerData => false;
String _resourceId;
String get resourceId => _resourceId;
ResourceAction({required String resourceId}) : _resourceId = resourceId;
@override
@mustCallSuper
Future<void> initialize() {
if (trackServerData) {
return account.resourceRepository.trackServerData(resourceId);
}
return Future.value(null);
}
@override
@mustCallSuper
Future<void> dispose() {
if (trackServerData) {
return account.resourceRepository.stopTrackingServerData(resourceId);
}
return Future.value(null);
}
void updateResourceId(String resourceId) {
account.resourceRepository.stopTrackingServerData(_resourceId);
_resourceId = resourceId;
account.resourceRepository.trackServerData(_resourceId);
}
@override

View File

@@ -18,6 +18,9 @@ class ResourceMoveAction extends ResourceBindAction with JsonApiAction {
@override
String get endpoint => '/api/v1/fs/mv/$resourceId';
@override
bool get trackServerData => true;
final DateTime modified;
final String description;
@@ -78,16 +81,6 @@ class ResourceMoveAction extends ResourceBindAction with JsonApiAction {
};
}
@override
Future<void> initialize() {
return account.resourceRepository.trackServerData(resourceId);
}
@override
Future<void> dispose() {
return account.resourceRepository.stopTrackingServerData(resourceId);
}
@override
Future<void> applyOptimisticUpdate() {
return account.resourceRepository.updateResource(

View File

@@ -20,6 +20,9 @@ class ResourceShareAction extends ResourceAction with JsonApiAction {
@override
String get endpoint => '/api/v1/fs/share/$resourceId';
@override
bool get trackServerData => true;
final String username;
final int permission;
final DateTime modified;
@@ -78,16 +81,6 @@ class ResourceShareAction extends ResourceAction with JsonApiAction {
};
}
@override
Future<void> initialize() {
return account.resourceRepository.trackServerData(resourceId);
}
@override
Future<void> dispose() {
return account.resourceRepository.stopTrackingServerData(resourceId);
}
@override
Future<void> applyOptimisticUpdate() async {
final resource = await account.resourceRepository.getResource(resourceId);

View File

@@ -558,7 +558,7 @@ packages:
source: hosted
version: "0.11.1"
meta:
dependency: transitive
dependency: "direct main"
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7

View File

@@ -34,6 +34,7 @@ dependencies:
super_clipboard:
super_drag_and_drop:
uri:
meta: ^1.15.0
dev_dependencies:
flutter_test: