Skip to content

Commit

Permalink
Merge pull request #2708 from anyproto/ios-4048-change-buttons
Browse files Browse the repository at this point in the history
iOS-4048 Home | change buttons
  • Loading branch information
mgolovko authored Jan 29, 2025
2 parents b354b6f + 23d2396 commit d73f89d
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ protocol HomeBottomNavigationPanelModuleOutput: AnyObject {
func onPickTypeForNewObjectSelected()
func onMembersSelected()
func onShareSelected()
func popToFirstInSpace()
func onAddAttachmentToSpaceLevelChat(attachment: ChatLinkObject)
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,6 @@ private struct HomeBottomNavigationPanelViewInternal: View {

leftButton

Button {
model.onTapSearch()
} label: {
Image(asset: .X32.Island.search)
.navPanelDynamicForegroundStyle()
}

Image(asset: .X32.Island.addObject)
.onTapGesture {
model.onTapNewObject()
Expand All @@ -102,6 +95,13 @@ private struct HomeBottomNavigationPanelViewInternal: View {
}
)
.disabled(!model.canCreateObject)

Button {
model.onTapSearch()
} label: {
Image(asset: .X32.Island.search)
.navPanelDynamicForegroundStyle()
}
}

@ViewBuilder
Expand Down Expand Up @@ -143,6 +143,13 @@ private struct HomeBottomNavigationPanelViewInternal: View {
.navPanelDynamicForegroundStyle()
}
.disabled(!enable)
case .home:
Button {
model.onTapHome()
} label: {
Image(asset: .X32.Island.vault)
.navPanelDynamicForegroundStyle()
}
case .none:
EmptyView()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ final class HomeBottomNavigationPanelViewModel: ObservableObject {
case member
case owner(_ enable: Bool)
case chat(_ enable: Bool)
case home
}

// MARK: - Private properties
Expand All @@ -32,7 +33,8 @@ final class HomeBottomNavigationPanelViewModel: ObservableObject {
private var activeProcess: Process?
private var subscriptions: [AnyCancellable] = []
private var chatLinkData: ChatLinkObject?
private var prticipantSpaceView: ParticipantSpaceViewData?
private var isWidgetsScreen: Bool = false
private var participantSpaceView: ParticipantSpaceViewData?

// MARK: - Public properties

Expand Down Expand Up @@ -73,13 +75,14 @@ final class HomeBottomNavigationPanelViewModel: ObservableObject {

func onAppear() async {
for await data in participantSpacesStorage.participantSpaceViewPublisher(spaceId: info.accountSpaceId).values {
prticipantSpaceView = data
participantSpaceView = data
updateState()
}
}

func updateVisibleScreen(data: AnyHashable) {
chatLinkData = (data as? EditorScreenData)?.chatLinkFromPanel
isWidgetsScreen = (data as? HomeWidgetData) != nil
updateState()
}

Expand All @@ -96,25 +99,33 @@ final class HomeBottomNavigationPanelViewModel: ObservableObject {
output?.onAddAttachmentToSpaceLevelChat(attachment: chatLinkData)
}

func onTapHome() {
output?.popToFirstInSpace()
}

// MARK: - Private

private func updateState() {
guard let prticipantSpaceView else { return }
guard let participantSpaceView else { return }

let canLinkToChat = chatLinkData.isNotNil && prticipantSpaceView.spaceView.showChat
let canLinkToChat = chatLinkData.isNotNil && participantSpaceView.spaceView.showChat

if canLinkToChat {
leftButtonMode = .chat(prticipantSpaceView.permissions.canEdit)
} else if prticipantSpaceView.isOwner {
let limitAllowSharing = participantSpacesStorage.spaceSharingInfo?.limitsAllowSharing ?? false
let canBeShared = prticipantSpaceView.permissions.canBeShared
let isShared = prticipantSpaceView.spaceView.isShared
leftButtonMode = .owner(isShared || (limitAllowSharing && canBeShared))
leftButtonMode = .chat(participantSpaceView.permissions.canEdit)
} else if isWidgetsScreen {
if participantSpaceView.isOwner {
let limitAllowSharing = participantSpacesStorage.spaceSharingInfo?.limitsAllowSharing ?? false
let canBeShared = participantSpaceView.permissions.canBeShared
let isShared = participantSpaceView.spaceView.isShared
leftButtonMode = .owner(isShared || (limitAllowSharing && canBeShared))
} else {
leftButtonMode = .member
}
} else {
leftButtonMode = .member
leftButtonMode = .home
}

canCreateObject = prticipantSpaceView.permissions.canEdit
canCreateObject = participantSpaceView.permissions.canEdit
}

private func setupDataSubscription() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,6 @@ final class EditorPageController: UIViewController {
onSyncStatusTap: { [weak viewModel] in
UISelectionFeedbackGenerator().selectionChanged()
viewModel?.showSyncStatusInfo()
},
onBackTap: { [weak viewModel] in
viewModel?.popToBack()
}
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,10 +275,6 @@ extension EditorPageViewModel {
bottomPanelHidden = hidden
bottomPanelHiddenAnimated = animated
}

func popToBack() {
output?.closeEditor()
}
}

// MARK: - Selection Handling
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,4 @@ protocol EditorPageViewModelProtocol: AnyObject {
func tapOnEmptyPlace()

func showSyncStatusInfo()

func popToBack()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import Foundation
import UIKit
import Services
import SwiftUI

@MainActor
final class EditorNavigationBarHelper {
Expand All @@ -17,7 +18,7 @@ final class EditorNavigationBarHelper {
private let settingsItem: UIEditorBarButtonItem
private let syncStatusItem: EditorSyncStatusItem
private let rightContanerForEditing: UIView
private let backButton: UIButton
private let backButton: UIView

private var contentOffsetObservation: NSKeyValueObservation?

Expand All @@ -40,8 +41,7 @@ final class EditorNavigationBarHelper {
onSelectAllBarButtonItemTap: @escaping (Bool) -> Void,
onDoneBarButtonItemTap: @escaping () -> Void,
onTemplatesButtonTap: @escaping () -> Void,
onSyncStatusTap: @escaping () -> Void,
onBackTap: @escaping () -> Void
onSyncStatusTap: @escaping () -> Void
) {
self.navigationBarView = navigationBarView
self.navigationBarBackgroundView = navigationBarBackgroundView
Expand Down Expand Up @@ -73,17 +73,8 @@ final class EditorNavigationBarHelper {

self.rightContanerForEditing = UIView()

var backButtonConfig = UIButton.Configuration.plain()
backButtonConfig.image = UIImage(asset: .X24.back)
backButtonConfig.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 0, bottom: 10, trailing: 20)
backButtonConfig.baseForegroundColor = .Control.transparentActive
self.backButton = UIButton(configuration: backButtonConfig)
self.backButton.addAction(
UIAction(handler: { _ in
onBackTap()
}),
for: .touchUpInside
)
self.backButton = UIHostingController(rootView: PageNavigationBackButton()).view
self.backButton.backgroundColor = .clear

// Select all button
var selectAllConfig = UIButton.Configuration.plain()
Expand Down

0 comments on commit d73f89d

Please sign in to comment.