SupabaseRealtimePayload.fromJson constructor
SupabaseRealtimePayload.fromJson(
- Map<String, dynamic> json
)
Implementation
factory SupabaseRealtimePayload.fromJson(Map<String, dynamic> json) {
final schema = json['schema'] as String;
final table = json['table'] as String;
final commitTimestamp = json['commit_timestamp'] as String;
final eventType = json['type'] as String;
final primaryKeys = (json['columns'] as List)
.where(
(e) =>
((e as Map<String, dynamic>)['flags'] as List?)
?.contains('key') ==
true,
)
.map((e) => (e as Map<String, dynamic>)['name'] as String)
.toList();
Map<String, dynamic>? newRecord;
if (json['type'] == 'INSERT' || json['type'] == 'UPDATE') {
final columns = convertColumnList(json['columns'] as List<dynamic>?);
final records = json['record'] as Map<String, dynamic>? ?? {};
newRecord = convertChangeData(columns, records);
}
Map<String, dynamic>? oldRecord;
if (json['type'] == 'UPDATE' || json['type'] == 'DELETE') {
final columns = convertColumnList(json['columns'] as List<dynamic>?);
final records = json['old_record'] as Map<String, dynamic>? ?? {};
oldRecord = convertChangeData(columns, records);
}
return SupabaseRealtimePayload(
table: table,
schema: schema,
commitTimestamp: commitTimestamp,
eventType: eventType,
newRecord: newRecord,
oldRecord: oldRecord,
// ignore: deprecated_member_use_from_same_package
primaryKeys: primaryKeys,
);
}