import 'dart:convert'; import 'package:http/http.dart' as http; import '../../../api_params.dart'; import '../../nextcloud_ocs.dart'; import '../get_poll/get_poll_state_response.dart'; import '../talk_api.dart'; import 'vote_poll_params.dart'; class VotePoll extends TalkApi { // Body als echtes JSON (nicht form-encoded wie die anderen Endpunkte): nur // so kommt das int-Array an; sonst liest der Server optionIds als [] und // löscht die eigene Stimme (Ursache des Readonly-Fallbacks, Issue #42). VotePoll({ required String token, required int pollId, required VotePollParams params, }) : super( 'v1/poll/$token/$pollId', params, headers: {'Content-Type': 'application/json'}, ); @override GetPollStateResponse assemble(String raw) => GetPollStateResponse.fromJson(NextcloudOcs.decode(raw)); @override Future? request( Uri uri, ApiParams? body, Map? headers, ) { if (body is! VotePollParams) return null; return http.post(uri, headers: headers, body: jsonEncode(body.toJson())); } }