Skip to content

Commit d2ebdaf

Browse files
committed
Fix poll updating
1 parent a76ee18 commit d2ebdaf

File tree

6 files changed

+16
-14
lines changed

6 files changed

+16
-14
lines changed

Assets/Plugins/StreamChat/Core/LowLevelClient/API/IPollsApi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public interface IPollsApi
2222
/// <summary>
2323
/// Updates a poll
2424
/// </summary>
25-
Task<PollResponse> UpdatePollAsync(string pollId, UpdatePollRequest updatePollRequest);
25+
Task<PollResponse> UpdatePollAsync(UpdatePollRequest updatePollRequest);
2626

2727
/// <summary>
2828
/// Partially updates a poll

Assets/Plugins/StreamChat/Core/LowLevelClient/API/Internal/IInternalPollsApi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ internal interface IInternalPollsApi
2222
/// <summary>
2323
/// Update a poll
2424
/// </summary>
25-
Task<PollResponseInternalDTO> UpdatePollAsync(string pollId, UpdatePollRequestInternalDTO updatePollRequest);
25+
Task<PollResponseInternalDTO> UpdatePollAsync(UpdatePollRequestInternalDTO updatePollRequest);
2626

2727
/// <summary>
2828
/// Partial update a poll

Assets/Plugins/StreamChat/Core/LowLevelClient/API/Internal/InternalPollsApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ public Task<PollResponseInternalDTO> CreatePollAsync(CreatePollRequestInternalDT
2525
public Task<PollResponseInternalDTO> GetPollAsync(string pollId)
2626
=> Get<PollResponseInternalDTO>($"polls/{pollId}");
2727

28-
public Task<PollResponseInternalDTO> UpdatePollAsync(string pollId, UpdatePollRequestInternalDTO updatePollRequest)
29-
=> Put<UpdatePollRequestInternalDTO, PollResponseInternalDTO>($"polls/{pollId}", updatePollRequest);
28+
public Task<PollResponseInternalDTO> UpdatePollAsync(UpdatePollRequestInternalDTO updatePollRequest)
29+
=> Put<UpdatePollRequestInternalDTO, PollResponseInternalDTO>("polls", updatePollRequest);
3030

3131
public Task<PollResponseInternalDTO> UpdatePollPartialAsync(string pollId, UpdatePollPartialRequestInternalDTO updatePollPartialRequest)
3232
=> Patch<UpdatePollPartialRequestInternalDTO, PollResponseInternalDTO>($"polls/{pollId}", updatePollPartialRequest);

Assets/Plugins/StreamChat/Core/LowLevelClient/API/PollsApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public async Task<PollResponse> GetPollAsync(string pollId)
3030
return dto.ToDomain<PollResponseInternalDTO, PollResponse>();
3131
}
3232

33-
public async Task<PollResponse> UpdatePollAsync(string pollId, UpdatePollRequest updatePollRequest)
33+
public async Task<PollResponse> UpdatePollAsync(UpdatePollRequest updatePollRequest)
3434
{
35-
var dto = await _internalPollsApi.UpdatePollAsync(pollId, updatePollRequest.TrySaveToDto());
35+
var dto = await _internalPollsApi.UpdatePollAsync(updatePollRequest.TrySaveToDto());
3636
return dto.ToDomain<PollResponseInternalDTO, PollResponse>();
3737
}
3838

Assets/Plugins/StreamChat/Core/Requests/StreamUpdatePollRequest.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ public class StreamUpdatePollRequest : ISavableTo<UpdatePollRequestInternalDTO>
3737
/// </summary>
3838
public bool? EnforceUniqueVote { get; set; }
3939

40-
/// <summary>
41-
/// Poll ID
42-
/// </summary>
43-
public string Id { get; set; }
44-
4540
/// <summary>
4641
/// Whether the poll is closed
4742
/// </summary>
@@ -71,7 +66,7 @@ UpdatePollRequestInternalDTO ISavableTo<UpdatePollRequestInternalDTO>.SaveToDto(
7166
AllowUserSuggestedOptions = AllowUserSuggestedOptions,
7267
Description = Description,
7368
EnforceUniqueVote = EnforceUniqueVote,
74-
Id = Id,
69+
//Id = Id, Omitted, ID is set internally, not by a user
7570
IsClosed = IsClosed,
7671
MaxVotesAllowed = MaxVotesAllowed,
7772
Name = Name,

Assets/Plugins/StreamChat/Core/StatefulModels/StreamPoll.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,9 @@ public async Task UpdateAsync(StreamUpdatePollRequest updateRequest)
114114
StreamAsserts.AssertNotNull(updateRequest, nameof(updateRequest));
115115

116116
var requestDto = updateRequest.TrySaveToDto();
117+
requestDto.Id = Id;
117118

118-
var response = await LowLevelClient.InternalPollsApi.UpdatePollAsync(Id, requestDto);
119+
var response = await LowLevelClient.InternalPollsApi.UpdatePollAsync(requestDto);
119120

120121
this.TryUpdateFromDto(response.Poll, Cache);
121122
}
@@ -146,7 +147,13 @@ public async Task<StreamPollOption> AddOptionAsync(string text)
146147

147148
var response = await LowLevelClient.InternalPollsApi.CreatePollOptionAsync(Id, request);
148149

149-
return new StreamPollOption().TryLoadFromDto<PollOptionResponseDataInternalDTO, StreamPollOption>(response.PollOption, Cache);
150+
var newOption = new StreamPollOption().TryLoadFromDto<PollOptionResponseDataInternalDTO, StreamPollOption>(response.PollOption, Cache);
151+
152+
// The response does not return the full poll, so we need to fetch the latest state
153+
var pollResponseDto = await LowLevelClient.InternalPollsApi.GetPollAsync(Id);
154+
this.TryUpdateFromDto(pollResponseDto.Poll, Cache);
155+
156+
return newOption;
150157
}
151158

152159
public async Task<StreamPollOption> UpdateOptionAsync(string optionId, string text)

0 commit comments

Comments
 (0)