mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 16:18:22 +08:00
feat: remove dynamic
This commit is contained in:
@@ -186,6 +186,29 @@ class MsgHttp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future removeDynamic(
|
||||||
|
dynamic dynamicId,
|
||||||
|
) async {
|
||||||
|
String csrf = await Request.getCsrf();
|
||||||
|
Map<String, dynamic> data = await WbiSign().makSign({
|
||||||
|
'dynamic_id': dynamicId,
|
||||||
|
'csrf_token': csrf,
|
||||||
|
'csrf': csrf,
|
||||||
|
});
|
||||||
|
var res = await Request().post(
|
||||||
|
HttpString.tUrl + Api.removeDynamic,
|
||||||
|
data: FormData.fromMap(data),
|
||||||
|
);
|
||||||
|
if (res.data['code'] == 0) {
|
||||||
|
return {'status': true};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
'status': false,
|
||||||
|
'msg': res.data['message'],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Future removeMsg(
|
static Future removeMsg(
|
||||||
dynamic talkerId,
|
dynamic talkerId,
|
||||||
) async {
|
) async {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import 'package:PiliPalaX/http/loading_state.dart';
|
import 'package:PiliPalaX/http/loading_state.dart';
|
||||||
|
import 'package:PiliPalaX/http/msg.dart';
|
||||||
import 'package:PiliPalaX/pages/common/common_controller.dart';
|
import 'package:PiliPalaX/pages/common/common_controller.dart';
|
||||||
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
|
|
||||||
import '../../../http/dynamics.dart';
|
import '../../../http/dynamics.dart';
|
||||||
|
|
||||||
@@ -39,4 +41,16 @@ class DynamicsTabController extends CommonController {
|
|||||||
offset: offset,
|
offset: offset,
|
||||||
mid: dynamicsType == "up" ? mid : -1,
|
mid: dynamicsType == "up" ? mid : -1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Future onRemove(dynamic dynamicId) async {
|
||||||
|
var res = await MsgHttp.removeDynamic(dynamicId);
|
||||||
|
if (res['status']) {
|
||||||
|
List list = (loadingState.value as Success).response;
|
||||||
|
list.removeWhere((item) => item.idStr == dynamicId);
|
||||||
|
loadingState.value = LoadingState.success(list);
|
||||||
|
SmartDialog.showToast('删除成功');
|
||||||
|
} else {
|
||||||
|
SmartDialog.showToast(res['msg']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,7 +166,10 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
|
|||||||
for (var i in loadingState.response)
|
for (var i in loadingState.response)
|
||||||
if (!dynamicsController.tempBannedList
|
if (!dynamicsController.tempBannedList
|
||||||
.contains(i.modules?.moduleAuthor?.mid))
|
.contains(i.modules?.moduleAuthor?.mid))
|
||||||
DynamicPanel(item: i),
|
DynamicPanel(
|
||||||
|
item: i,
|
||||||
|
onRemove: _dynamicsTabController.onRemove,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:PiliPalaX/utils/storage.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -14,11 +15,13 @@ class AuthorPanel extends StatelessWidget {
|
|||||||
final dynamic item;
|
final dynamic item;
|
||||||
final Function? addBannedList;
|
final Function? addBannedList;
|
||||||
final String? source;
|
final String? source;
|
||||||
|
final Function? onRemove;
|
||||||
const AuthorPanel({
|
const AuthorPanel({
|
||||||
super.key,
|
super.key,
|
||||||
required this.item,
|
required this.item,
|
||||||
this.addBannedList,
|
this.addBannedList,
|
||||||
this.source,
|
this.source,
|
||||||
|
this.onRemove,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -127,7 +130,10 @@ class AuthorPanel extends StatelessWidget {
|
|||||||
useRootNavigator: true,
|
useRootNavigator: true,
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return MorePanel(item: item);
|
return MorePanel(
|
||||||
|
item: item,
|
||||||
|
onRemove: onRemove,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -141,7 +147,12 @@ class AuthorPanel extends StatelessWidget {
|
|||||||
|
|
||||||
class MorePanel extends StatelessWidget {
|
class MorePanel extends StatelessWidget {
|
||||||
final dynamic item;
|
final dynamic item;
|
||||||
const MorePanel({super.key, required this.item});
|
final Function? onRemove;
|
||||||
|
const MorePanel({
|
||||||
|
super.key,
|
||||||
|
required this.item,
|
||||||
|
this.onRemove,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -223,6 +234,46 @@ class MorePanel extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
minLeadingWidth: 0,
|
minLeadingWidth: 0,
|
||||||
),
|
),
|
||||||
|
if (item.modules.moduleAuthor.mid ==
|
||||||
|
GStorage.userInfo.get('userInfoCache').mid)
|
||||||
|
ListTile(
|
||||||
|
onTap: () async {
|
||||||
|
Get.back();
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (_) => AlertDialog(
|
||||||
|
title: const Text('确定删除该动态?'),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: Get.back,
|
||||||
|
child: Text(
|
||||||
|
'取消',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Theme.of(context).colorScheme.outline,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
if (onRemove != null) {
|
||||||
|
onRemove!(item.idStr);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: const Text('确定'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
|
},
|
||||||
|
minLeadingWidth: 0,
|
||||||
|
leading: Icon(Icons.delete_outline,
|
||||||
|
color: Theme.of(context).colorScheme.error, size: 19),
|
||||||
|
title: Text('删除',
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.titleSmall!
|
||||||
|
.copyWith(color: Theme.of(context).colorScheme.error)),
|
||||||
|
),
|
||||||
const Divider(thickness: 0.1, height: 1),
|
const Divider(thickness: 0.1, height: 1),
|
||||||
ListTile(
|
ListTile(
|
||||||
onTap: () => Get.back(),
|
onTap: () => Get.back(),
|
||||||
|
|||||||
@@ -9,7 +9,15 @@ import 'forward_panel.dart';
|
|||||||
class DynamicPanel extends StatelessWidget {
|
class DynamicPanel extends StatelessWidget {
|
||||||
final dynamic item;
|
final dynamic item;
|
||||||
final String? source;
|
final String? source;
|
||||||
DynamicPanel({required this.item, this.source, Key? key}) : super(key: key);
|
final Function? onRemove;
|
||||||
|
|
||||||
|
DynamicPanel({
|
||||||
|
required this.item,
|
||||||
|
this.source,
|
||||||
|
this.onRemove,
|
||||||
|
Key? key,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
final DynamicsController _dynamicsController = Get.put(DynamicsController());
|
final DynamicsController _dynamicsController = Get.put(DynamicsController());
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -42,7 +50,11 @@ class DynamicPanel extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(12, 12, 12, 6),
|
padding: const EdgeInsets.fromLTRB(12, 12, 12, 6),
|
||||||
child: AuthorPanel(item: item, source: source),
|
child: AuthorPanel(
|
||||||
|
item: item,
|
||||||
|
source: source,
|
||||||
|
onRemove: onRemove,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
if (item!.modules!.moduleDynamic!.desc != null ||
|
if (item!.modules!.moduleDynamic!.desc != null ||
|
||||||
item!.modules!.moduleDynamic!.major != null)
|
item!.modules!.moduleDynamic!.major != null)
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class _SysMsgPageState extends State<SysMsgPage> {
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => AlertDialog(
|
builder: (_) => AlertDialog(
|
||||||
title: const Text('确定删除该消息?'),
|
title: const Text('确定删除该通知?'),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: Get.back,
|
onPressed: Get.back,
|
||||||
|
|||||||
Reference in New Issue
Block a user