video_dao.dart 936 Bytes
import 'package:wow_english/common/request/request_client.dart';
import 'package:wow_english/pages/video/zone/video_zone_item.dart';

class VideoDao {
  /// 获取已上架的视频列表。
  static Future<List<VideoZoneItem>> list() async {
    final data = await requestClient.get<List<dynamic>>(Apis.videoList);
    return (data ?? const <dynamic>[])
        .whereType<Map>()
        .map((item) => VideoZoneItem.fromJson(Map<String, dynamic>.from(item)))
        .toList();
  }

  /// 保存视频播放记录。
  static Future<void> savePlayRecord({
    required int videoId,
    required int progressSeconds,
    required int durationSeconds,
    required bool completed,
  }) async {
    await requestClient.post(
      Apis.videoPlayRecord,
      data: {
        'videoId': videoId,
        'progressSeconds': progressSeconds,
        'durationSeconds': durationSeconds,
        'completed': completed,
      },
    );
  }
}