feat: im settings

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-09 21:54:23 +08:00
parent a282baf5a2
commit 0f41d5b2f8
14 changed files with 865 additions and 9 deletions

View File

@@ -0,0 +1,45 @@
import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'
show GetImSettingsReply, IMSettingType, Setting;
import 'package:PiliPlus/grpc/im.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/common/common_data_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:protobuf/protobuf.dart' show PbMap;
class WhisperSettingsController
extends CommonDataController<GetImSettingsReply, PbMap<int, Setting>> {
WhisperSettingsController({
required this.imSettingType,
});
final IMSettingType imSettingType;
RxString title = ''.obs;
@override
void onInit() {
super.onInit();
queryData();
}
@override
bool customHandleResponse(
bool isRefresh, Success<GetImSettingsReply> response) {
title.value = response.response.pageTitle;
loadingState.value = LoadingState.success(response.response.settings);
return true;
}
@override
Future<LoadingState<GetImSettingsReply>> customGetData() =>
ImGrpc.getImSettings(type: imSettingType);
Future<bool> onSet(PbMap<int, Setting> settings) async {
var res = await ImGrpc.setImSettings(settings: settings);
if (!res['status']) {
SmartDialog.showToast('err: ${res['msg']}');
}
return res['status'];
}
}