import 'package:domain/constants/api_constants.dart';
import 'package:domain/entity/notice_board_announ_entity.dart';
import 'package:domain/entity/server_time.dart';
import 'package:plugin_platform/platform_export.dart';
import 'package:plugin_platform/http/dio_engine.dart';
import 'package:plugin_platform/http/http_result.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:shared/utils/log_utils.dart';
import 'package:shared/utils/util.dart';

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:plugin_basic/provider/http_provider/http_provider.dart';

import '../page/announ_state.dart';
part 'announ_repository.g.dart';

@Riverpod(keepAlive: true)
AnnounRepository announRepository(Ref ref) {
  final dioEngine = ref.watch(dioEngineProvider);
  return AnnounRepository(dioEngine: dioEngine);
}

/*
 * 数据仓库
 */
class AnnounRepository {
  DioEngine dioEngine;

  AnnounRepository({required this.dioEngine});

  Future<HttpResult<Object>> fetchList(
    Map<String, dynamic>? data, {
    CancelToken? cancelToken,
  }) async {
    Map<String, dynamic> params = {};

    params = data!;

    Map<String, String> headers = {};

    headers["Content-Type"] = "application/x-www-form-urlencoded";
    headers["Accept"] = "application/x.yyjobs-api.v1+json";

    final result = await dioEngine.requestNetResult(
      // ApiConstants.apiServerTime, // api 地址
      '/api/v1/user/notice/announcement/index', // api 地址
      params: params,
      headers: headers,
      method: HttpMethod.GET,
      isShowLoadingDialog: false, //是否展示默认的Loading弹窗
      networkDebounce: true, //是否防抖防止重复请求
      cancelToken: cancelToken,
    );

    Log.d("------请求返回的result--$result--------");
    //根据返回的结果，封装原始数据为Bean/Entity对象
    if (result.isSuccess) {
      //重新赋值data或list
      final json = result.getDataJson();
      var data = NoticeBoardAnnounEntity.fromJson(json!);
      //重新赋值data或list
      return result.convert<NoticeBoardAnnounEntity>(data: data);
    }
    return result.convert();
  }
}
