import 'package:chat/models/moment/moment_model.dart'; import 'package:chat/models/upload_model.dart'; import 'package:chat/utils/network/http.dart'; import 'package:chat/utils/ui_tools.dart'; class MomentProvider { /// 获取[发现]列表数据 /// [createAt] 最后一列的create_at static Future fetchMomentList([String? createAt]) async { try { final result = await Http.get( 'dynamics', params: { 'created_at': createAt, }, ); return MomentModel.fromJson(result); } catch (e) { UiTools.toast('获取发现列表失败'); } return null; } /// 点赞 /// [dynamicId] static Future likeMoment(int dynamicId) async { try { final result = await Http.post('user/dynamics/$dynamicId/like'); return result['is_like']; } catch (e) { UiTools.toast('点赞失败'); } return null; } /// 删除 /// [dynamicId] static Future delMoment(int dynamicId) async { try { final result = await Http.delete('user/dynamics/$dynamicId'); return result; } catch (e) { UiTools.toast('删除失败'); } return null; } /// 回复或评论 /// [dynamicId] /// [content] 评论内容 /// [parentId] 回复的评论id static Future replyComment( int dynamicId, String content, [ int? parentId, ]) async { try { final result = await Http.post( 'user/dynamics/$dynamicId/comment', data: { 'content': content, 'parent_id': parentId, }, ); return Comment.fromJson(result); } catch (e) { UiTools.toast('评论失败'); } return null; } /// 删除评论 /// [dynamicId] /// [comment] 评论id static Future delComment( int dynamicId, [ int? commentId, ]) async { try { final result = await Http.delete( 'user/dynamics/$dynamicId/comment/$commentId', ); return result; } catch (e) { UiTools.toast('删除评论失败'); } return null; } /// 上传文件 static Future uploadFile(String filePath) async { try { final result = await Http.upload('storage/upload', filePath: filePath); return UploadModel.fromJson(result); } catch (e) { UiTools.toast('上传失败'); } return null; } /// 发布“发现”内容 /// /// [description] 文本内容 /// [pictures] 媒体内容 static Future publishMoment({ required String description, required List pictures, }) async { try { final result = await Http.post('user/dynamics', data: { 'description': description, 'pictures': pictures, }); return result; } catch (e) { UiTools.toast('发布失败'); } return null; } }