nao sei
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// ...existing code...
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
import 'dart:math';
|
||||
|
||||
@@ -81,14 +82,18 @@ class GameSharingController {
|
||||
.from('profiles')
|
||||
.select('username, full_name')
|
||||
.eq('id', createdBy)
|
||||
.single();
|
||||
.maybeSingle();
|
||||
|
||||
print("👤 Criador: ${creatorData['full_name'] ?? creatorData['username']}");
|
||||
final creatorName = creatorData != null
|
||||
? (creatorData['full_name'] ?? creatorData['username'] ?? 'Utilizador')
|
||||
: 'Utilizador';
|
||||
|
||||
print("👤 Criador: $creatorName");
|
||||
|
||||
return {
|
||||
'session_id': session['id'],
|
||||
'game_id': gameId,
|
||||
'creator_name': creatorData['full_name'] ?? creatorData['username'] ?? 'Utilizador',
|
||||
'creator_name': creatorName,
|
||||
'game': gameData,
|
||||
};
|
||||
} catch (e) {
|
||||
@@ -156,14 +161,16 @@ class GameSharingController {
|
||||
Future<bool> sendSyncEvent(
|
||||
String sessionId,
|
||||
String actionType,
|
||||
Map<String, dynamic> actionData,
|
||||
) async {
|
||||
Map<String, dynamic> actionData, {
|
||||
String? playerId, // opcional: identifica jogador/entidade alvo
|
||||
}) async {
|
||||
try {
|
||||
await _supabase.from('game_sync_events').insert({
|
||||
'session_id': sessionId,
|
||||
'action_type': actionType,
|
||||
'action_data': actionData,
|
||||
'triggered_by': myUserId,
|
||||
if (playerId != null) 'player_id': playerId,
|
||||
});
|
||||
|
||||
print("✅ Evento sincronizado: $actionType");
|
||||
@@ -186,6 +193,24 @@ class GameSharingController {
|
||||
.order('created_at', ascending: false);
|
||||
}
|
||||
|
||||
/// Retorna apenas os eventos que NÃO foram disparados pelo utilizador atual.
|
||||
/// Emite uma lista de eventos (List<Map<String, dynamic>>) por cada atualização.
|
||||
Stream<List<Map<String, dynamic>>> listenToGameSyncOthers(String sessionId) {
|
||||
return listenToGameSync(sessionId).map((data) {
|
||||
List<Map<String, dynamic>> rows = [];
|
||||
try {
|
||||
if (data is List) {
|
||||
rows = List<Map<String, dynamic>>.from(data);
|
||||
} else if (data is Map) {
|
||||
rows = [Map<String, dynamic>.from(data)];
|
||||
}
|
||||
} catch (_) {
|
||||
return <Map<String, dynamic>>[];
|
||||
}
|
||||
return rows.where((r) => (r['triggered_by'] as String?) != myUserId).toList();
|
||||
});
|
||||
}
|
||||
|
||||
// ====================================
|
||||
// 6️⃣ OBTER ÚLTIMOS EVENTOS
|
||||
// ====================================
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user