diff --git a/lib/services/entry_manager_service.dart b/lib/services/entry_manager_service.dart index 64cd4b5..637c690 100644 --- a/lib/services/entry_manager_service.dart +++ b/lib/services/entry_manager_service.dart @@ -85,7 +85,8 @@ class EntryManagerService extends ChangeNotifier { return Result.ok(true); } - FutureResult createNewStatus(String text, { + FutureResult createNewStatus( + String text, { String spoilerText = '', String inReplyToId = '', required NewEntryMediaItems mediaItems, @@ -122,11 +123,10 @@ class EntryManagerService extends ChangeNotifier { } final uploadResult = - await MediaUploadAttachmentHelper.getUploadableImageBytes( + await MediaUploadAttachmentHelper.getUploadableImageBytes( item.localFilePath, ).andThenAsync( - (imageBytes) async => - await client.uploadFileAsAttachment( + (imageBytes) async => await client.uploadFileAsAttachment( bytes: imageBytes, album: mediaItems.albumName, description: item.description, @@ -144,10 +144,10 @@ class EntryManagerService extends ChangeNotifier { final result = await client .createNewStatus( - text: text, - spoilerText: spoilerText, - inReplyToId: inReplyToId, - mediaIds: mediaIds) + text: text, + spoilerText: spoilerText, + inReplyToId: inReplyToId, + mediaIds: mediaIds) .andThenSuccessAsync((item) async { await processNewItems([item], client.credentials.username, null); return item; @@ -168,7 +168,7 @@ class EntryManagerService extends ChangeNotifier { _logger.finest('${status.id} status created'); return true; }).mapError( - (error) { + (error) { _logger.finest('Error creating post: $error'); return ExecError( type: ErrorType.localError, @@ -190,7 +190,7 @@ class EntryManagerService extends ChangeNotifier { final client = clientResult.value; final itemsResult = - await client.getTimeline(type: type, maxId: maxId, sinceId: sinceId); + await client.getTimeline(type: type, maxId: maxId, sinceId: sinceId); if (itemsResult.isFailure) { _logger.severe('Error getting timeline: ${itemsResult.error}'); return itemsResult.errorCast(); @@ -198,11 +198,9 @@ class EntryManagerService extends ChangeNotifier { itemsResult.value.sort((t1, t2) => t1.id.compareTo(t2.id)); final updatedPosts = - await processNewItems(itemsResult.value, auth.currentId, client); + await processNewItems(itemsResult.value, auth.currentId, client); _logger.finest(() { - final postCount = _entries.values - .where((e) => e.parentId.isEmpty) - .length; + final postCount = _entries.values.where((e) => e.parentId.isEmpty).length; final commentCount = _entries.length - postCount; final orphanCount = _entries.values .where( @@ -213,9 +211,11 @@ class EntryManagerService extends ChangeNotifier { return Result.ok(updatedPosts); } - Future> processNewItems(List items, - String currentId, - FriendicaClient? client,) async { + Future> processNewItems( + List items, + String currentId, + FriendicaClient? client, + ) async { items.sort((i1, i2) => int.parse(i1.id).compareTo(int.parse(i2.id))); final allSeenItems = [...items]; for (final item in items) { @@ -242,9 +242,7 @@ class EntryManagerService extends ChangeNotifier { await client ?.getPostOrComment(o.id, fullContext: true) .andThenSuccessAsync((items) async { - final parentPostId = items - .firstWhere((e) => e.parentId.isEmpty) - .id; + final parentPostId = items.firstWhere((e) => e.parentId.isEmpty).id; _parentPostIds[o.id] = parentPostId; allSeenItems.addAll(items); for (final item in items) { @@ -282,9 +280,7 @@ class EntryManagerService extends ChangeNotifier { .toList(); _logger.finest( - 'Completed processing new items ${client == null - ? 'sub level' - : 'top level'}'); + 'Completed processing new items ${client == null ? 'sub level' : 'top level'}'); return updatedPosts; } @@ -300,11 +296,10 @@ class EntryManagerService extends ChangeNotifier { final client = clientResult.value; final result = await client .getPostOrComment(id, fullContext: false) - .andThenAsync((rootItems) async => - await client - .getPostOrComment(id, fullContext: true) - .andThenSuccessAsync( - (contextItems) async => [...rootItems, ...contextItems])) + .andThenAsync((rootItems) async => await client + .getPostOrComment(id, fullContext: true) + .andThenSuccessAsync( + (contextItems) async => [...rootItems, ...contextItems])) .andThenSuccessAsync((items) async { await processNewItems(items, client.credentials.username, null); }); @@ -313,7 +308,7 @@ class EntryManagerService extends ChangeNotifier { _logger.finest('$id post updated'); return _nodeToTreeItem(_getPostRootNode(id)!, auth.currentId); }).mapError( - (error) { + (error) { _logger.finest('$id error updating: $error'); return ExecError( type: ErrorType.localError, @@ -334,7 +329,7 @@ class EntryManagerService extends ChangeNotifier { final client = clientResult.value; final result = - await client.resharePost(id).andThenSuccessAsync((item) async { + await client.resharePost(id).andThenSuccessAsync((item) async { await processNewItems([item], client.credentials.username, null); }); @@ -342,7 +337,7 @@ class EntryManagerService extends ChangeNotifier { _logger.finest('$id post updated after reshare'); return _nodeToTreeItem(_postNodes[id]!, auth.currentId); }).mapError( - (error) { + (error) { _logger.finest('$id error updating: $error'); return ExecError( type: ErrorType.localError, @@ -363,7 +358,7 @@ class EntryManagerService extends ChangeNotifier { final client = clientResult.value; final result = - await client.unResharePost(id).andThenSuccessAsync((item) async { + await client.unResharePost(id).andThenSuccessAsync((item) async { await processNewItems([item], client.credentials.username, null); }); @@ -377,8 +372,8 @@ class EntryManagerService extends ChangeNotifier { return Result.ok(true); } - FutureResult toggleFavorited(String id, - bool newStatus) async { + FutureResult toggleFavorited( + String id, bool newStatus) async { final auth = getIt(); final clientResult = auth.currentClient; if (clientResult.isFailure) { @@ -407,7 +402,8 @@ class EntryManagerService extends ChangeNotifier { childenEntries[c.id] = _nodeToTreeItem(c, currentId); } final entry = _entries[node.id]!; - final isMine = entry.authorId == currentId; + final isMine = + entry.authorId == currentId || entry.reshareAuthorId == currentId; return EntryTreeItem( _entries[node.id]!, isMine: isMine, @@ -474,7 +470,7 @@ class _Node { @override bool operator ==(Object other) => identical(this, other) || - other is _Node && runtimeType == other.runtimeType && id == other.id; + other is _Node && runtimeType == other.runtimeType && id == other.id; @override int get hashCode => id.hashCode;