Files
PiliPlus/lib/pages/whisper_settings/controller.dart
bggRGjQaUbCoE 0f41d5b2f8 feat: im settings
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-05-09 22:17:31 +08:00

46 lines
1.3 KiB
Dart

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'];
}
}