Make reshare unavailable on posts that are reshared from you already.

merge-requests/67/merge
Hank Grabowski 2022-12-28 08:52:55 -05:00
rodzic 03a7ebc788
commit 4ceaabe02b
1 zmienionych plików z 32 dodań i 36 usunięć

Wyświetl plik

@ -85,7 +85,8 @@ class EntryManagerService extends ChangeNotifier {
return Result.ok(true);
}
FutureResult<bool, ExecError> createNewStatus(String text, {
FutureResult<bool, ExecError> createNewStatus(
String text, {
String spoilerText = '',
String inReplyToId = '',
required NewEntryMediaItems mediaItems,
@ -125,8 +126,7 @@ class EntryManagerService extends ChangeNotifier {
await MediaUploadAttachmentHelper.getUploadableImageBytes(
item.localFilePath,
).andThenAsync(
(imageBytes) async =>
await client.uploadFileAsAttachment(
(imageBytes) async => await client.uploadFileAsAttachment(
bytes: imageBytes,
album: mediaItems.albumName,
description: item.description,
@ -200,9 +200,7 @@ class EntryManagerService extends ChangeNotifier {
final updatedPosts =
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<List<EntryTreeItem>> processNewItems(List<TimelineEntry> items,
Future<List<EntryTreeItem>> processNewItems(
List<TimelineEntry> items,
String currentId,
FriendicaClient? client,) async {
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,8 +296,7 @@ class EntryManagerService extends ChangeNotifier {
final client = clientResult.value;
final result = await client
.getPostOrComment(id, fullContext: false)
.andThenAsync((rootItems) async =>
await client
.andThenAsync((rootItems) async => await client
.getPostOrComment(id, fullContext: true)
.andThenSuccessAsync(
(contextItems) async => [...rootItems, ...contextItems]))
@ -377,8 +372,8 @@ class EntryManagerService extends ChangeNotifier {
return Result.ok(true);
}
FutureResult<EntryTreeItem, ExecError> toggleFavorited(String id,
bool newStatus) async {
FutureResult<EntryTreeItem, ExecError> toggleFavorited(
String id, bool newStatus) async {
final auth = getIt<AuthService>();
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,