mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Merge pull request #7353 from vector-im/alfogrillo/fallback_poll_ended_event
Fallback for poll ended event (PSG-1156)
This commit is contained in:
commit
062789d331
7 changed files with 65 additions and 5 deletions
|
@ -199,7 +199,9 @@ static NSString *const kMXAppGroupID = @"group.org.matrix";
|
|||
kMXEventTypeStringCallHangup,
|
||||
kMXEventTypeStringSticker,
|
||||
kMXEventTypeStringPollStart,
|
||||
kMXEventTypeStringPollStartMSC3381
|
||||
kMXEventTypeStringPollStartMSC3381,
|
||||
kMXEventTypeStringPollEnd,
|
||||
kMXEventTypeStringPollEndMSC3381
|
||||
].mutableCopy;
|
||||
|
||||
_messageDetailsAllowSharing = YES;
|
||||
|
|
|
@ -49,7 +49,7 @@ class MXKSendReplyEventStringLocalizer: NSObject, MXSendReplyEventStringLocalize
|
|||
VectorL10n.messageReplyToMessageToReplyToPrefix
|
||||
}
|
||||
|
||||
func replyToEndedPoll() -> String {
|
||||
func endedPollMessage() -> String {
|
||||
VectorL10n.pollTimelineReplyEndedPoll
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1900,7 +1900,7 @@ static NSString *const kRepliedTextPattern = @"<mx-reply>.*<blockquote>.*<br>(.*
|
|||
repliedEventContent = [MXEventContentPollStart modelFromJSON:repliedEvent.content].question;
|
||||
}
|
||||
if (!repliedEventContent && repliedEvent.eventType == MXEventTypePollEnd) {
|
||||
repliedEventContent = MXSendReplyEventDefaultStringLocalizer.new.replyToEndedPoll;
|
||||
repliedEventContent = MXSendReplyEventDefaultStringLocalizer.new.endedPollMessage;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class PollBaseBubbleCell: PollPlainCell {
|
|||
return
|
||||
}
|
||||
|
||||
self.addBubbleBackgroundView( messageBubbleBackgroundView, to: pollView)
|
||||
self.addBubbleBackgroundView(messageBubbleBackgroundView, to: pollView)
|
||||
messageBubbleBackgroundView.backgroundColor = self.bubbleBackgroundColor
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
@objcMembers
|
||||
class TimelinePollProvider: NSObject {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
changelog.d/pr-7353.change
Normal file
1
changelog.d/pr-7353.change
Normal file
|
@ -0,0 +1 @@
|
|||
Polls: add fallback text for poll ended events.
|
Loading…
Reference in a new issue