mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-13 07:30:04 -06:00
[client] Fix resource share change
This commit is contained in:
@@ -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,
|
||||
),
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user