import 'dart:convert';
import 'package:flutter/services.dart';

/// 本地草稿持久化服务，通过 MethodChannel 调用原生 SharedPreferences / NSUserDefaults。
///
/// 避免引入 shared_preferences 包，不需要 Kotlin 插件。
class DraftStorage {
  static const _channel = MethodChannel('com.tboss.oa/storage');
  static const _prefix = 'oa_draft_';

  /// 保存草稿
  static Future<void> save(String key, Map<String, dynamic> data) async {
    await _channel.invokeMethod('setString', {
      'key': _prefix + key,
      'value': jsonEncode(data),
    });
  }

  /// 读取草稿，不存在返回 null
  static Future<Map<String, dynamic>?> load(String key) async {
    try {
      final raw = await _channel.invokeMethod<String>('getString', {
        'key': _prefix + key,
      });
      if (raw == null || raw.isEmpty) return null;
      return jsonDecode(raw) as Map<String, dynamic>;
    } catch (_) {
      return null;
    }
  }

  /// 是否有草稿
  static Future<bool> has(String key) async {
    try {
      final result = await _channel.invokeMethod<bool>('hasKey', {
        'key': _prefix + key,
      });
      return result ?? false;
    } catch (_) {
      return false;
    }
  }

  /// 删除草稿
  static Future<void> delete(String key) async {
    await _channel.invokeMethod('remove', {'key': _prefix + key});
  }
}
