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:
Doug
2023-04-06 12:44:16 +01:00
committed by GitHub
parent 3cfcd0c717
commit 8f1941fc60
7 changed files with 15 additions and 60 deletions

View File

@@ -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))
}
}

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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())
}
}

View File

@@ -56,7 +56,7 @@ struct NotificationItemProxy {
}
var subtitle: String? {
L10n.notification
nil
}
var isNoisy: Bool {

View File

@@ -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