From fbc5924ace9f59f800745e875085b481d80eb15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Sun, 26 Oct 2025 08:06:29 +0100 Subject: [PATCH] chore: Make store getter type safe --- lib/config/setting_keys.dart | 54 ++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 8533b8846..926cdadd2 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'package:async/async.dart'; import 'package:flutter/foundation.dart'; +import 'package:async/async.dart'; import 'package:http/http.dart' as http; import 'package:matrix/matrix_api_lite/utils/logs.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -125,25 +125,69 @@ enum AppSettings { } extension AppSettingsBoolExtension on AppSettings { - bool get value => AppSettings.store.getBool(key) ?? defaultValue; + bool get value { + final value = Result(() => AppSettings.store.getBool(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } Future setItem(bool value) => AppSettings.store.setBool(key, value); } extension AppSettingsStringExtension on AppSettings { - String get value => AppSettings.store.getString(key) ?? defaultValue; + String get value { + final value = Result(() => AppSettings.store.getString(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } Future setItem(String value) => AppSettings.store.setString(key, value); } extension AppSettingsIntExtension on AppSettings { - int get value => AppSettings.store.getInt(key) ?? defaultValue; + int get value { + final value = Result(() => AppSettings.store.getInt(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } Future setItem(int value) => AppSettings.store.setInt(key, value); } extension AppSettingsDoubleExtension on AppSettings { - double get value => AppSettings.store.getDouble(key) ?? defaultValue; + double get value { + final value = Result(() => AppSettings.store.getDouble(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } Future setItem(double value) => AppSettings.store.setDouble(key, value); }