[client] Fix resource share change

This commit is contained in:
Abhishek Shroff
2025-05-26 01:33:11 +05:30
parent 0c56a09a78
commit 94deab0561
2 changed files with 9 additions and 14 deletions

View File

@@ -28,7 +28,7 @@ class ResourceShareAction extends ResourceAction with JsonApiAction {
List<LocalChange> get localChanges => [
UpdateResourcePermissionsChange(
objectId: resourceId,
userId: userId,
userId: userId.toString(),
permission: permission,
timestamp: modified,
),

View File

@@ -3,11 +3,12 @@ import 'dart:convert';
import 'package:drift/drift.dart';
import 'package:offtheline/offtheline.dart';
import 'package:phylum/libphylum/db/db.dart';
import 'package:phylum/util/permissions.dart';
class UpdateResourcePermissionsChange extends LocalChange<Resource> {
@override
final String objectId;
final int userId;
final String userId;
final int permission;
final DateTime timestamp;
@@ -24,25 +25,19 @@ class UpdateResourcePermissionsChange extends LocalChange<Resource> {
@override
Resource? apply(Resource? data) {
if (data == null) return null;
var p = data.grants == null ? const <int, Map>{} : (jsonDecode(data.grants!) as Map).cast<int, Map>();
if ((p[userId]?['p'] ?? 0) == permission) {
var p = data.grants == null
? const <String, Permission>{}
: (jsonDecode(data.grants!) as Map).cast<String, Permission>();
if ((p[userId] ?? 0) == permission) {
return data;
}
if (permission == 0) {
p.remove(userId);
} else if (p.isEmpty) {
// Empty means const map, so we can't add to it
p = {
userId: <String, int>{
'p': permission,
't': DateTime.now().millisecondsSinceEpoch,
},
};
p = {userId: permission};
} else {
p[userId] = <String, int>{
'p': permission,
't': DateTime.now().millisecondsSinceEpoch,
};
p[userId] = permission;
}
final serialized = p.isEmpty ? null : json.encode(p);
return data.copyWith(