forked from zelo72/mastodon-ios
fix: remove ActionToolbarContainer.moreButtonDidPressed
This commit is contained in:
parent
8011298571
commit
b8f3f4c886
|
@ -29,7 +29,7 @@
|
|||
"confirm": "Sign Out"
|
||||
},
|
||||
"block_domain": {
|
||||
"message": "Are you really, really sure you want to block the entire %s ? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
|
||||
"message": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
|
||||
"block_entire_domain": "Block entire domain"
|
||||
},
|
||||
"save_photo_failure": {
|
||||
|
|
|
@ -780,7 +780,8 @@ extension StatusSection {
|
|||
return
|
||||
}
|
||||
let author = status.authorForUserProvider
|
||||
let canReport = authenticationBox.userID != author.id
|
||||
let isMyself = authenticationBox.userID == author.id
|
||||
let canReport = !isMyself
|
||||
let isInSameDomain = authenticationBox.domain == author.domainFromAcct
|
||||
let isMuting = (author.mutingBy ?? Set()).map(\.id).contains(authenticationBox.userID)
|
||||
let isBlocking = (author.blockingBy ?? Set()).map(\.id).contains(authenticationBox.userID)
|
||||
|
@ -788,9 +789,9 @@ extension StatusSection {
|
|||
cell.statusView.actionToolbarContainer.moreButton.showsMenuAsPrimaryAction = true
|
||||
cell.statusView.actionToolbarContainer.moreButton.menu = UserProviderFacade.createProfileActionMenu(
|
||||
for: author,
|
||||
isMyself: isMyself,
|
||||
isMuting: isMuting,
|
||||
isBlocking: isBlocking,
|
||||
canReport: canReport,
|
||||
isInSameDomain: isInSameDomain,
|
||||
isDomainBlocking: isDomainBlocking,
|
||||
provider: userProvider,
|
||||
|
|
|
@ -16,7 +16,7 @@ internal enum L10n {
|
|||
internal enum BlockDomain {
|
||||
/// Block entire domain
|
||||
internal static let blockEntireDomain = L10n.tr("Localizable", "Common.Alerts.BlockDomain.BlockEntireDomain")
|
||||
/// Are you really, really sure you want to block the entire %@ ? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.
|
||||
/// Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.
|
||||
internal static func message(_ p1: Any) -> String {
|
||||
return L10n.tr("Localizable", "Common.Alerts.BlockDomain.Message", String(describing: p1))
|
||||
}
|
||||
|
|
|
@ -146,9 +146,9 @@ extension UserProviderFacade {
|
|||
extension UserProviderFacade {
|
||||
static func createProfileActionMenu(
|
||||
for mastodonUser: MastodonUser,
|
||||
isMyself: Bool,
|
||||
isMuting: Bool,
|
||||
isBlocking: Bool,
|
||||
canReport: Bool,
|
||||
isInSameDomain: Bool,
|
||||
isDomainBlocking: Bool,
|
||||
provider: UserProvider,
|
||||
|
@ -161,62 +161,67 @@ extension UserProviderFacade {
|
|||
var children: [UIMenuElement] = []
|
||||
let name = mastodonUser.displayNameWithFallback
|
||||
|
||||
// mute
|
||||
let muteAction = UIAction(
|
||||
title: isMuting ? L10n.Common.Controls.Firendship.unmuteUser(name) : L10n.Common.Controls.Firendship.mute,
|
||||
image: isMuting ? UIImage(systemName: "speaker") : UIImage(systemName: "speaker.slash"),
|
||||
discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Firendship.muteUser(name),
|
||||
attributes: isMuting ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
if !isMyself {
|
||||
// mute
|
||||
let muteAction = UIAction(
|
||||
title: isMuting ? L10n.Common.Controls.Firendship.unmuteUser(name) : L10n.Common.Controls.Firendship.mute,
|
||||
image: isMuting ? UIImage(systemName: "speaker") : UIImage(systemName: "speaker.slash"),
|
||||
discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Firendship.muteUser(name),
|
||||
attributes: isMuting ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
|
||||
UserProviderFacade.toggleUserMuteRelationship(
|
||||
provider: provider,
|
||||
cell: cell
|
||||
)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
} receiveValue: { _ in
|
||||
// do nothing
|
||||
UserProviderFacade.toggleUserMuteRelationship(
|
||||
provider: provider,
|
||||
cell: cell
|
||||
)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
} receiveValue: { _ in
|
||||
// do nothing
|
||||
}
|
||||
.store(in: &provider.context.disposeBag)
|
||||
}
|
||||
if isMuting {
|
||||
children.append(muteAction)
|
||||
} else {
|
||||
let muteMenu = UIMenu(title: L10n.Common.Controls.Firendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction])
|
||||
children.append(muteMenu)
|
||||
}
|
||||
.store(in: &provider.context.disposeBag)
|
||||
}
|
||||
if isMuting {
|
||||
children.append(muteAction)
|
||||
} else {
|
||||
let muteMenu = UIMenu(title: L10n.Common.Controls.Firendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction])
|
||||
children.append(muteMenu)
|
||||
}
|
||||
|
||||
// block
|
||||
let blockAction = UIAction(
|
||||
title: isBlocking ? L10n.Common.Controls.Firendship.unblockUser(name) : L10n.Common.Controls.Firendship.block,
|
||||
image: isBlocking ? UIImage(systemName: "hand.raised.slash") : UIImage(systemName: "hand.raised"),
|
||||
discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Firendship.blockUser(name),
|
||||
attributes: isBlocking ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
if !isMyself {
|
||||
// block
|
||||
let blockAction = UIAction(
|
||||
title: isBlocking ? L10n.Common.Controls.Firendship.unblockUser(name) : L10n.Common.Controls.Firendship.block,
|
||||
image: isBlocking ? UIImage(systemName: "hand.raised.slash") : UIImage(systemName: "hand.raised"),
|
||||
discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Firendship.blockUser(name),
|
||||
attributes: isBlocking ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
|
||||
UserProviderFacade.toggleUserBlockRelationship(
|
||||
provider: provider,
|
||||
cell: cell
|
||||
)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
} receiveValue: { _ in
|
||||
// do nothing
|
||||
UserProviderFacade.toggleUserBlockRelationship(
|
||||
provider: provider,
|
||||
cell: cell
|
||||
)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
} receiveValue: { _ in
|
||||
// do nothing
|
||||
}
|
||||
.store(in: &provider.context.disposeBag)
|
||||
}
|
||||
if isBlocking {
|
||||
children.append(blockAction)
|
||||
} else {
|
||||
let blockMenu = UIMenu(title: L10n.Common.Controls.Firendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction])
|
||||
children.append(blockMenu)
|
||||
}
|
||||
.store(in: &provider.context.disposeBag)
|
||||
}
|
||||
if isBlocking {
|
||||
children.append(blockAction)
|
||||
} else {
|
||||
let blockMenu = UIMenu(title: L10n.Common.Controls.Firendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction])
|
||||
children.append(blockMenu)
|
||||
}
|
||||
if canReport {
|
||||
|
||||
if !isMyself {
|
||||
let reportAction = UIAction(title: L10n.Common.Controls.Actions.reportUser(name), image: UIImage(systemName: "flag"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
"Common.Alerts.BlockDomain.BlockEntireDomain" = "Block entire domain";
|
||||
"Common.Alerts.BlockDomain.Message" = "Are you really, really sure you want to block the entire %@ ? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.";
|
||||
"Common.Alerts.BlockDomain.Message" = "Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.";
|
||||
"Common.Alerts.Common.PleaseTryAgain" = "Please try again.";
|
||||
"Common.Alerts.Common.PleaseTryAgainLater" = "Please try again later.";
|
||||
"Common.Alerts.DiscardPostContent.Message" = "Confirm discard composed post content.";
|
||||
|
|
|
@ -384,17 +384,23 @@ extension ProfileViewController {
|
|||
self.moreMenuBarButtonItem.menu = nil
|
||||
return
|
||||
}
|
||||
guard let currentMastodonUser = self.viewModel.currentMastodonUser.value else {
|
||||
self.moreMenuBarButtonItem.menu = nil
|
||||
return
|
||||
}
|
||||
guard let currentDomain = self.viewModel.domain.value else { return }
|
||||
let isMuting = relationshipActionOptionSet.contains(.muting)
|
||||
let isBlocking = relationshipActionOptionSet.contains(.blocking)
|
||||
let isDomainBlocking = domains.contains(mastodonUser.domainFromAcct)
|
||||
let needsShareAction = self.viewModel.isMeBarButtonItemsHidden.value
|
||||
let isInSameDomain = mastodonUser.domainFromAcct == currentDomain
|
||||
let isMyself = currentMastodonUser.id == mastodonUser.id
|
||||
|
||||
self.moreMenuBarButtonItem.menu = UserProviderFacade.createProfileActionMenu(
|
||||
for: mastodonUser,
|
||||
isMyself: isMyself,
|
||||
isMuting: isMuting,
|
||||
isBlocking: isBlocking,
|
||||
canReport: true,
|
||||
isInSameDomain: isInSameDomain,
|
||||
isDomainBlocking: isDomainBlocking,
|
||||
provider: self,
|
||||
|
|
|
@ -356,8 +356,4 @@ extension StatusTableViewCell: ActionToolbarContainerDelegate {
|
|||
delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, likeButtonDidPressed: sender)
|
||||
}
|
||||
|
||||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, moreButtonDidPressed sender: UIButton) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ protocol ActionToolbarContainerDelegate: class {
|
|||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, replayButtonDidPressed sender: UIButton)
|
||||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton)
|
||||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, starButtonDidPressed sender: UIButton)
|
||||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, moreButtonDidPressed sender: UIButton)
|
||||
}
|
||||
|
||||
|
||||
|
@ -63,7 +62,6 @@ extension ActionToolbarContainer {
|
|||
replyButton.addTarget(self, action: #selector(ActionToolbarContainer.replyButtonDidPressed(_:)), for: .touchUpInside)
|
||||
reblogButton.addTarget(self, action: #selector(ActionToolbarContainer.reblogButtonDidPressed(_:)), for: .touchUpInside)
|
||||
favoriteButton.addTarget(self, action: #selector(ActionToolbarContainer.favoriteButtonDidPressed(_:)), for: .touchUpInside)
|
||||
moreButton.addTarget(self, action: #selector(ActionToolbarContainer.moreButtonDidPressed(_:)), for: .touchUpInside)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -194,11 +192,6 @@ extension ActionToolbarContainer {
|
|||
delegate?.actionToolbarContainer(self, starButtonDidPressed: sender)
|
||||
}
|
||||
|
||||
@objc private func moreButtonDidPressed(_ sender: UIButton) {
|
||||
os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
delegate?.actionToolbarContainer(self, moreButtonDidPressed: sender)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
|
|
|
@ -62,6 +62,6 @@ protocol PutQuery: RequestQuery { }
|
|||
protocol DeleteQuery: RequestQuery { }
|
||||
|
||||
extension DeleteQuery {
|
||||
// By default a `PostQuery` does not has query items
|
||||
// By default a `DeleteQuery` does not has query items
|
||||
var queryItems: [URLQueryItem]? { nil }
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue