Skip to content

Commit

Permalink
Merge pull request #7353 from vector-im/alfogrillo/fallback_poll_ende…
Browse files Browse the repository at this point in the history
…d_event

Fallback for poll ended event (PSG-1156)
  • Loading branch information
Alfonso Grillo authored Feb 10, 2023
2 parents 4ae2d37 + aab905f commit 062789d
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 5 deletions.
4 changes: 3 additions & 1 deletion Riot/Modules/MatrixKit/Models/MXKAppSettings.m
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,9 @@ -(instancetype)init
kMXEventTypeStringCallHangup,
kMXEventTypeStringSticker,
kMXEventTypeStringPollStart,
kMXEventTypeStringPollStartMSC3381
kMXEventTypeStringPollStartMSC3381,
kMXEventTypeStringPollEnd,
kMXEventTypeStringPollEndMSC3381
].mutableCopy;

_messageDetailsAllowSharing = YES;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class MXKSendReplyEventStringLocalizer: NSObject, MXSendReplyEventStringLocalize
VectorL10n.messageReplyToMessageToReplyToPrefix
}

func replyToEndedPoll() -> String {
func endedPollMessage() -> String {
VectorL10n.pollTimelineReplyEndedPoll
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1900,7 +1900,7 @@ - (NSString*)buildHTMLStringForEvent:(MXEvent*)event inReplyToEvent:(MXEvent*)re
repliedEventContent = [MXEventContentPollStart modelFromJSON:repliedEvent.content].question;
}
if (!repliedEventContent && repliedEvent.eventType == MXEventTypePollEnd) {
repliedEventContent = MXSendReplyEventDefaultStringLocalizer.new.replyToEndedPoll;
repliedEventContent = MXSendReplyEventDefaultStringLocalizer.new.endedPollMessage;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class PollBaseBubbleCell: PollPlainCell {
return
}

self.addBubbleBackgroundView( messageBubbleBackgroundView, to: pollView)
self.addBubbleBackgroundView(messageBubbleBackgroundView, to: pollView)
messageBubbleBackgroundView.backgroundColor = self.bubbleBackgroundColor
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
//

import Foundation
import SwiftUI

@objcMembers
class TimelinePollProvider: NSObject {
Expand Down Expand Up @@ -45,7 +46,7 @@ class TimelinePollProvider: NSObject {

let parameters = TimelinePollCoordinatorParameters(session: session, room: room, pollEvent: event)
guard let coordinator = try? TimelinePollCoordinator(parameters: parameters) else {
return nil
return messageViewController(for: event)
}

coordinatorsForEventIdentifiers[event.eventId] = coordinator
Expand All @@ -62,3 +63,14 @@ class TimelinePollProvider: NSObject {
coordinatorsForEventIdentifiers.removeAll()
}
}

private extension TimelinePollProvider {
func messageViewController(for event: MXEvent) -> UIViewController? {
switch event.eventType {
case .pollEnd:
return VectorHostingController(rootView: TimelinePollMessageView(message: VectorL10n.pollTimelineReplyEndedPoll))
default:
return nil
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//
// Copyright 2023 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

import SwiftUI

/// A view for showing polls' related messages whenever there aren't enough information to show a full poll in the timeline.
struct TimelinePollMessageView: View {
@Environment(\.theme) private var theme
private let imageSize: CGFloat = 16

let message: String

var body: some View {
HStack {
Image(uiImage: Asset.Images.pollHistory.image)
.resizable()
.frame(width: imageSize, height: imageSize)

Text(message)
.font(.system(size: 15))
.foregroundColor(theme.colors.primaryContent)
}
.padding(.vertical, 8)
.frame(maxWidth: .infinity, alignment: .leading)
}
}

struct TimelinePollMessageView_Previews: PreviewProvider {
static var previews: some View {
TimelinePollMessageView(message: VectorL10n.pollTimelineReplyEndedPoll)
}
}
1 change: 1 addition & 0 deletions changelog.d/pr-7353.change
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Polls: add fallback text for poll ended events.

0 comments on commit 062789d

Please sign in to comment.