// Flutter imports:
import 'package:flutter/material.dart' show ThemeMode;
import 'package:remever/common/resources.dart';
import 'package:remever/common/storage.dart';
import 'package:remever/components/extensions/theme_mode.dart';
import 'package:remever/interfaces/warmup_service.dart';

import 'core_service.dart';

///
/// Сервис для работы с темой приложения
///
class ThemeService extends CoreService implements IWarmupService {
  @override
  Future<void> init() async {
    final ThemeMode? theme = hiveTheme.get(StorageKeys.themeKey);

    if (theme == null) {
      await hiveTheme.put(StorageKeys.themeKey, ThemeMode.light);
    }
  }

  ///
  /// Получение текущего значения для темы
  ///
  /// По-умолчанию - светлый
  ///
  ThemeMode get themeMode {
    return hiveTheme.get(StorageKeys.themeKey, defaultValue: ThemeMode.light)!;
  }

  ///
  /// Обновление темы приложения
  ///
  /// [oldThemeMode] должно быть текущее значение темы. Автоматически будет
  /// вызван метод {inversed}
  ///
  Future<void> update(ThemeMode oldThemeMode) async {
    return updateInversed(oldThemeMode.inversed);
  }

  ///
  /// Обновление темы приложения
  ///
  Future<void> updateInversed(ThemeMode themeMode) async {
    return hiveTheme.put(StorageKeys.themeKey, themeMode);
  }
}
