settings.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:hive_flutter/hive_flutter.dart';
  2. import 'package:supabase_flutter/supabase_flutter.dart';
  3. class Settings {
  4. static const box = "settings";
  5. static get(String key, {String? defaultValue}) {
  6. Hive.box(box).get(key, defaultValue: defaultValue);
  7. }
  8. Future<Map<String, dynamic>?> getFresh(String key, {String? userId}) async {
  9. SupabaseClient supabase = Supabase.instance.client;
  10. final session = supabase.auth.currentSession;
  11. if (session != null) {
  12. final response = await Supabase.instance.client
  13. .from('settings')
  14. .select()
  15. .eq('user_id', userId ?? session.user.id)
  16. .eq('field', key)
  17. .single();
  18. return response as Map<String, dynamic>?;
  19. }
  20. }
  21. static put(String key, value) {
  22. Hive.box(box).put(key, value);
  23. SupabaseClient supabase = Supabase.instance.client;
  24. if (supabase.auth.currentSession != null) {
  25. upsertSettings(
  26. userid: supabase.auth.currentSession!.user.id,
  27. field: key,
  28. value: value);
  29. }
  30. }
  31. static Future<void> upsertSettings({userid, field, value}) async {
  32. final response = await Supabase.instance.client.from('settings').upsert(
  33. {'user_id': userid, 'field': field, 'value': value},
  34. onConflict: 'user_id,field',
  35. ).select();
  36. print('settings: upsertsettings: response: $response');
  37. }
  38. static delete(String key) => Hive.box(box).delete(key);
  39. static clear() => Hive.box(box).clear();
  40. static close() => Hive.box(box).close();
  41. static isOpen() => Hive.box(box).isOpen;
  42. static openBox() => Hive.openBox(box);
  43. }