[66] Implement a convenient utility mechanism for working with SharedPreferences
Создать функционал для асинхронной работы с SharedPreferences, позволяющая удобно сохранять данные и обрабатывать результаты операций.
Функциональные требования:
- Функция-расширение должна асинхронно сохранять данные в SharedPreferences с выбором режима записи (APPLY или COMMIT).
- Пользователь должен иметь возможность передать функции обратного вызова для успешного и ошибочного результата операции сохранения данных.
- Функция-расширение должна поддерживать выборочную загрузку данных из SharedPreferences с фильтрацией по ключу.
Нефункциональные требования:
- Функционал должнен быть оптимизирован для работы с функциями высшего порядка.
- Результаты операций (успешный результат и ошибка) должны быть доступны для обработки в вызывающем коде.
- Механизм работы с SharedPreferences должен быть вынесен с главного потока.
- На вход функция должна принимать лямбду с SharedPreferences.Editor, лямбды на успешное завершение и ошибку