Files
Navius/frontend/lib/features/home/data/home_repository.dart
T
CNWei 1c98340fc5 feat: 实现导航页基础功能
- 添加导航条目和分类数据模型
- 实现导航卡片网格展示
- 支持点击卡片打开链接
- 添加主题样式(渐变色、卡片阴影)
- 区分系统默认和自定义条目
- 添加分类统计信息"
2026-09-19 21:53:15 +08:00

37 lines
1.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import '../domain/models/home_data.dart';
import '../domain/models/submit_site_draft.dart';
/// 首页数据仓库契约。
///
/// 界面层只认这个接口,不关心数据来自本地 mock 还是 Rust 后端。
///
/// 两个方法都是异步的:接上后端之后「加载中 / 提交中」和「失败」都是必须
/// 表达的状态,所以契约从一开始就按异步来——mock 实现直接返回已经就绪的值。
abstract interface class HomeRepository {
/// 读取首页需要的全部数据。
Future<HomeData> fetchHomeData();
/// 提交一个网站。
///
/// 成功不返回内容:后端会回创建出来的条目,但页面用不到(提交完重新拉一次
/// `/api/nav` 就有了)。失败时抛 [HomeFailure],`message` 可以直接展示。
Future<void> submitSite(SubmitSiteDraft draft);
/// 修改一个已有的网站(只能改用户提交 / 接口推送进来的,系统内置的会返回 403)。
Future<void> updateSite(String id, SubmitSiteDraft draft);
/// 删除一个已有的网站(同样只对可修改的条目有效)。
Future<void> deleteSite(String id);
}
/// 取数或提交失败。[message] 是可以直接显示给用户的说明。
class HomeFailure implements Exception {
const HomeFailure(this.message);
/// 面向用户的说明。
final String message;
@override
String toString() => message;
}