A few small tweaks. (#774)
- Use ShareLink instead of InviteFriendsCoordinator. - Fix a string in the user menu - Show the word Notification as the notification's body. --------- Co-authored-by: Mauro <34335419+Velin92@users.noreply.github.com>
This commit is contained in:
@@ -57,8 +57,6 @@ final class HomeScreenCoordinator: CoordinatorProtocol {
|
||||
self.callback?(.presentFeedbackScreen)
|
||||
case .presentSettingsScreen:
|
||||
self.callback?(.presentSettingsScreen)
|
||||
case .presentInviteFriendsScreen:
|
||||
self.presentInviteFriends()
|
||||
case .presentSessionVerificationScreen:
|
||||
self.callback?(.presentSessionVerificationScreen)
|
||||
case .signOut:
|
||||
@@ -82,10 +80,4 @@ final class HomeScreenCoordinator: CoordinatorProtocol {
|
||||
func toPresentable() -> AnyView {
|
||||
AnyView(HomeScreen(context: viewModel.context))
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func presentInviteFriends() {
|
||||
parameters.navigationStackCoordinator.setSheetCoordinator(InviteFriendsCoordinator(userId: parameters.userSession.userID))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ enum HomeScreenViewModelAction {
|
||||
case presentRoom(roomIdentifier: String)
|
||||
case presentSessionVerificationScreen
|
||||
case presentSettingsScreen
|
||||
case presentInviteFriendsScreen
|
||||
case presentFeedbackScreen
|
||||
case presentStartChatScreen
|
||||
case signOut
|
||||
@@ -30,7 +29,6 @@ enum HomeScreenViewModelAction {
|
||||
|
||||
enum HomeScreenViewUserMenuAction {
|
||||
case settings
|
||||
case inviteFriends
|
||||
case feedback
|
||||
case signOut
|
||||
}
|
||||
@@ -59,7 +57,7 @@ enum HomeScreenRoomListMode: CustomStringConvertible {
|
||||
}
|
||||
|
||||
struct HomeScreenViewState: BindableState {
|
||||
var userID: String
|
||||
let userID: String
|
||||
var userDisplayName: String?
|
||||
var userAvatarURL: URL?
|
||||
|
||||
@@ -69,6 +67,9 @@ struct HomeScreenViewState: BindableState {
|
||||
|
||||
var roomListMode: HomeScreenRoomListMode = .skeletons
|
||||
|
||||
/// The URL that will be shared when inviting friends to use the app.
|
||||
let invitePermalink: URL?
|
||||
|
||||
var startChatFlowEnabled: Bool {
|
||||
ServiceLocator.shared.settings.startChatFlowEnabled
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
||||
visibleRoomsSummaryProvider = userSession.clientProxy.visibleRoomsSummaryProvider
|
||||
allRoomsSummaryProvider = userSession.clientProxy.allRoomsSummaryProvider
|
||||
|
||||
super.init(initialViewState: HomeScreenViewState(userID: userSession.userID),
|
||||
let invitePermalink = try? PermalinkBuilder.permalinkTo(userIdentifier: userSession.userID)
|
||||
super.init(initialViewState: HomeScreenViewState(userID: userSession.userID, invitePermalink: invitePermalink),
|
||||
imageProvider: userSession.mediaProvider)
|
||||
|
||||
userSession.callbacks
|
||||
@@ -143,8 +144,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
||||
callback?(.presentFeedbackScreen)
|
||||
case .settings:
|
||||
callback?(.presentSettingsScreen)
|
||||
case .inviteFriends:
|
||||
callback?(.presentInviteFriendsScreen)
|
||||
case .signOut:
|
||||
callback?(.signOut)
|
||||
}
|
||||
|
||||
@@ -122,11 +122,13 @@ struct HomeScreen: View {
|
||||
}
|
||||
}
|
||||
Section {
|
||||
Button(action: inviteFriends) {
|
||||
Label(L10n.actionInvite, systemImage: "square.and.arrow.up")
|
||||
if let permalink = context.viewState.invitePermalink {
|
||||
ShareLink(item: permalink) {
|
||||
Label(L10n.actionInvite, systemImage: "square.and.arrow.up")
|
||||
}
|
||||
}
|
||||
Button(action: feedback) {
|
||||
Label(L10n.actionReportBug, systemImage: "questionmark.circle")
|
||||
Label(L10n.commonReportABug, systemImage: "questionmark.circle")
|
||||
}
|
||||
}
|
||||
Section {
|
||||
@@ -201,10 +203,6 @@ struct HomeScreen: View {
|
||||
context.send(viewAction: .userMenu(action: .settings))
|
||||
}
|
||||
|
||||
private func inviteFriends() {
|
||||
context.send(viewAction: .userMenu(action: .inviteFriends))
|
||||
}
|
||||
|
||||
private func startChat() {
|
||||
context.send(viewAction: .startChat)
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
//
|
||||
// Copyright 2022 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
|
||||
|
||||
class InviteFriendsCoordinator: CoordinatorProtocol {
|
||||
let userId: String
|
||||
|
||||
init(userId: String) {
|
||||
self.userId = userId
|
||||
}
|
||||
|
||||
func toPresentable() -> AnyView {
|
||||
guard let permalink = try? PermalinkBuilder.permalinkTo(userIdentifier: userId).absoluteString else {
|
||||
return AnyView(EmptyView())
|
||||
}
|
||||
let shareText = L10n.inviteFriendsText(InfoPlistReader.main.bundleDisplayName, permalink)
|
||||
|
||||
return AnyView(UIActivityViewControllerWrapper(activityItems: [shareText])
|
||||
.presentationDetents([.medium])
|
||||
.ignoresSafeArea())
|
||||
}
|
||||
}
|
||||
@@ -56,7 +56,7 @@ struct NotificationItemProxy {
|
||||
}
|
||||
|
||||
var subtitle: String? {
|
||||
L10n.notification
|
||||
nil
|
||||
}
|
||||
|
||||
var isNoisy: Bool {
|
||||
|
||||
@@ -73,8 +73,9 @@ extension NotificationItemProxy {
|
||||
// return nil
|
||||
// }
|
||||
// For now we can't solve the sender ID nor get the type of message that we are displaying
|
||||
// so we are just going to process all of them as common
|
||||
try await processCommon(senderId: "undefined", roomId: roomId, mediaProvider: mediaProvider)
|
||||
// so we are just going to process all of them as a text notification saying "Notification"
|
||||
let content = TextMessageContent(body: L10n.notification, formatted: nil)
|
||||
return try await processText(content: content, senderId: "undefined", roomId: roomId, mediaProvider: mediaProvider)
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
Reference in New Issue
Block a user