🐛 Dozens of bug fixes
This commit is contained in:
@@ -360,6 +360,25 @@ class AppDatabase extends _$AppDatabase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> saveChatRooms(List<SnChatRoom> rooms) async {
|
Future<void> saveChatRooms(List<SnChatRoom> rooms) async {
|
||||||
|
await transaction(() async {
|
||||||
|
// 1. Identify rooms to remove
|
||||||
|
final remoteRoomIds = rooms.map((r) => r.id).toSet();
|
||||||
|
final currentRooms = await select(chatRooms).get();
|
||||||
|
final currentRoomIds = currentRooms.map((r) => r.id).toSet();
|
||||||
|
final idsToRemove = currentRoomIds.difference(remoteRoomIds);
|
||||||
|
|
||||||
|
if (idsToRemove.isNotEmpty) {
|
||||||
|
final idsList = idsToRemove.toList();
|
||||||
|
// Remove messages
|
||||||
|
await (delete(chatMessages)..where((t) => t.roomId.isIn(idsList))).go();
|
||||||
|
// Remove members
|
||||||
|
await (delete(chatMembers)
|
||||||
|
..where((t) => t.chatRoomId.isIn(idsList))).go();
|
||||||
|
// Remove rooms
|
||||||
|
await (delete(chatRooms)..where((t) => t.id.isIn(idsList))).go();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Upsert remote rooms
|
||||||
await batch((batch) {
|
await batch((batch) {
|
||||||
for (final room in rooms) {
|
for (final room in rooms) {
|
||||||
batch.insert(
|
batch.insert(
|
||||||
@@ -376,6 +395,7 @@ class AppDatabase extends _$AppDatabase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methods for post drafts
|
// Methods for post drafts
|
||||||
|
|||||||
@@ -846,7 +846,7 @@ class _PublisherMemberListSheet extends HookConsumerWidget {
|
|||||||
try {
|
try {
|
||||||
final apiClient = ref.watch(apiClientProvider);
|
final apiClient = ref.watch(apiClientProvider);
|
||||||
await apiClient.post(
|
await apiClient.post(
|
||||||
'/sphere/publishers/$publisherUname/invites',
|
'/sphere/publishers/invites/$publisherUname',
|
||||||
data: {'related_user_id': result.id, 'role': 0},
|
data: {'related_user_id': result.id, 'role': 0},
|
||||||
);
|
);
|
||||||
// Refresh both providers
|
// Refresh both providers
|
||||||
@@ -1134,7 +1134,7 @@ class _PublisherInviteSheet extends HookConsumerWidget {
|
|||||||
try {
|
try {
|
||||||
final client = ref.read(apiClientProvider);
|
final client = ref.read(apiClientProvider);
|
||||||
await client.post(
|
await client.post(
|
||||||
'/publishers/invites/${invite.publisher!.name}/accept',
|
'/sphere/publishers/invites/${invite.publisher!.name}/accept',
|
||||||
);
|
);
|
||||||
ref.invalidate(publisherInvitesProvider);
|
ref.invalidate(publisherInvitesProvider);
|
||||||
ref.invalidate(publishersManagedProvider);
|
ref.invalidate(publishersManagedProvider);
|
||||||
@@ -1147,7 +1147,7 @@ class _PublisherInviteSheet extends HookConsumerWidget {
|
|||||||
try {
|
try {
|
||||||
final client = ref.read(apiClientProvider);
|
final client = ref.read(apiClientProvider);
|
||||||
await client.post(
|
await client.post(
|
||||||
'/publishers/invites/${invite.publisher!.name}/decline',
|
'/sphere/publishers/invites/${invite.publisher!.name}/decline',
|
||||||
);
|
);
|
||||||
ref.invalidate(publisherInvitesProvider);
|
ref.invalidate(publisherInvitesProvider);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ class ActivityHeatmapWidget extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
height: 12,
|
height: 12,
|
||||||
margin: const EdgeInsets.all(0.5),
|
margin: const EdgeInsets.all(1),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: getActivityColor(value),
|
color: getActivityColor(value),
|
||||||
borderRadius: BorderRadius.circular(2),
|
borderRadius: BorderRadius.circular(2),
|
||||||
|
|||||||
Reference in New Issue
Block a user